图形学与游戏技术课件.ppt_第1页
图形学与游戏技术课件.ppt_第2页
图形学与游戏技术课件.ppt_第3页
图形学与游戏技术课件.ppt_第4页
图形学与游戏技术课件.ppt_第5页
已阅读5页,还剩48页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

图形学与游戏技术简介,2012-9-15,真实感图形学:侧重视觉效果,可视化:侧重信息传达,图形学,cn3d,SAGA gis,可视化,ADINA,离线渲染(Offline Rendering) 实时渲染(Real-time Rendering ),渲染类型:,RayTracing(start, direction, weight, color) if ( weight MinWeight ) color = black; else 计算光线与所有物体的交点中离start最近的点; if ( 没有交点 ) color = black; else Ilocal = 在交点处用局部光照模型计算出的光强; 计算反射方向 R; RayTracing(最近的交点, R, weight*Wr, Ir); 计算折射方向 T; RayTracing(最近的交点, T, weight*Wt, It); color = Ilocal + KsIr+ KtIt; ,光线追踪原理:/21cn/%E8%AE%A1%E7%AE%97%E6%9C%BA%E5%9B%BE%E5%BD%A2%E5%AD%A6/Chapter4/CG_Txt_4_045.htm,离线渲染一:光线追踪(ray tracing),/p/elvishray/,Ks:反射系数,Kt:折射系数 Wr:反射衰减,Wt:折射衰减 K描述光强与颜色之间的关系, W描述光强反射(折射)前后的衰减。,渲染结果,单独显示的折射光路图,光线追踪的调试,load scene divide each surface into roughly equal sized patches initialise_patches: for each Patch in the scene if this patch is a light then patch.emmision = some amount of light else patch.emmision = black end if patch.excident = patch.emmision end Patch loop Passes_Loop: each patch collects light from the scene for each Patch in the scene render the scene from the point of view of this patch patch.incident = sum of incident light in rendering end Patch loop calculate excident light from each patch: for each Patch in the scene I = patch.incident R = patch.reflectance E = patch.emmision patch.excident = (I*R) + E end Patch loop Have we done enough passes? if not then goto Passes_Loop,Incident and Excident Light: The excident light is the visible property of a patch. When we look at a patch, it is the excident light that were seeing.,Reflectance: call the proportion of light reflected by a patch reflectance.,辐射度算法教程:/hugo.elias/radiosity/radiosity.htm,离线渲染二:辐射度算法(Radiosity),呈现的亮度=看到的亮度*反射率+自发亮度,每次循环重新计算亮度,而非累加,漫反射效果 (注意天花板上的红色),View from a lower patch,1st Pass,2nd Pass,3rd Pass,4th Pass,16th Pass,交互式光线追踪与实时光线追踪,/en-us/articles/quake-wars-gets-ray-traced/,Intel: 实时光线追踪游戏,Quake 3: ray traced,Wolfenstein 3d(德军总部): ray traced,Quake wars: ray traced,NVIDIA: 交互式光线追踪,http:/www.nvidia.co.uk/object/optix_uk.html,实时渲染,目前实时渲染主要基 于光栅化过程(Rasterization),光栅化不像光线追踪和辐射度能够自然地模拟光影效果,但速度快。 阴影,反射等效果需要通过特效来实现。,通过cube map模拟出的反射效果,重组3D IV,通过sphere map模拟的反射效果,图取自:/help/index.jsp?topic=/com.arm.doc.dui0527a/BABDGFCC.html,/p/recombination-3d-4-on-the-beam/,简化的光栅化过程,蓝框部分为顶点坐标变换,顶点坐标变换过程:,此处范围是以opengl为例,dx中略有不同,详见:/350479720/blog/1310060277,游戏技术,阴影技术,场景管理,骨骼动画,地形技术,粒子特效,静态阴影:render to texture,实时阴影:shadow map shadow volume,阴影,Render to texture,优点:真实 缺点:无法与动态物体交互,预先使用光线追踪或辐射度方法将场景渲染到贴图 可以在3dmax中完成,Doom 3 (毁灭战士3),是历史上首次在游戏中实现“真实”阴影,实时阴影,Doom3引入shadow volume,shadow map:,shadow volume:,/,Doom3,两种主要的实时阴影技术,独立游戏:mcRace v0.5,Shadow map,将相机放到光源视角渲染场景,得到光源视角下的深度图。 将相机放回到观察视角渲染场景,渲染过程中将每个像素(x,y,depth)变换到光源视角与光源视角下深度图进行比较: 如果深度大于光源视角下深度,则此像素为阴影点,否则为非阴影点。,如何将观察视角下屏幕空间点变换到光源视角的屏幕空间?,观察视角屏幕空间-世界空间-光源视角屏幕空间,逆光栅化,光栅化,Shadow map 锯齿与软阴影,图取自:/GPUGems/gpugems_ch11.html,Shadow volume,首先渲染场景,然后关闭缓冲写渲染阴影体并进行模板计数, 最后根据模板值决定各点是否为阴影点。,根据模板计数规则不同,分为z-pass和z-fail两种算法。,shadow volume历史: Franklin C. Crow于1977年发表了一篇题为Shadow Algorithms For ComputerGraphic的论文,提出shadow volume思想。 Tim Heidmann于1991年,展示如何用模板缓冲实现快速实时阴影(z-pass算法)。 2000年前后,若干人独立发现了z-fail算法,发现者之一John Carmack(约翰*卡马克)将其应用于Doom3,使此技术引起公众关注,所以z-fail算法通常又称为Carmacks Reverse。,卡马克提出z-fail算法邮件全文:/Pointer/archive/2004/07/28/28036.html,z-pass算法存在:“当相机位于阴影体内时失效”的问题。 为解决这一问题,后来提出z-fail算法。,卡马克:3d游戏之父,id software创始人之一。了解3d游戏历史,推荐阅读Doom启示录,模板缓存(stencil buffer),帧缓存的一种,起到mask的作用。 (结合后面阴影体模板计数来讲解),z-pass,视点在阴影体外,得到正确结果,视点在阴影体内,方法失效,无论视点在不在阴影体内,都得到正确结果,z-fail,/wiki/Shadow_volume,z-pass和z-fail算法的标准描述:,Z-pass: 1,Disable writes to the depth and color buffers. 2,Use back-face culling. 3,Set the stencil operation to increment on depth pass (only count shadows in front of the object). 4,Render the shadow volumes (because of culling, only their front faces are rendered). 5,Use front-face culling. 6,Set the stencil operation to decrement on depth pass. 7,Render the shadow volumes (only their back faces are rendered).,Z-fail: 1,Disable writes to the depth and color buffers. 2,Use front-face culling. 3,Set the stencil operation to increment on depth fail (only count shadows behind the object). 4,Render the shadow volumes. 5,Use back-face culling. 6,Set the stencil operation to decrement on depth fail. 7,Render the shadow volumes.,视点在阴影体外,视点在阴影体内,四叉树(qaudtree),通过四叉树可以同时实现视锥剔除和LOD,地形,高度图,1169x11169 ,24位bmp,生成方法: 1,用photoshop绘制。 2,自动生成(Perlin noise) 。 3,在3dmax中建立地形模型,然后渲染成高度图。 (/tikiwiki/tiki-index.php?page=3dsmax%20Heightmaps),重组3D IV 中小岛高度图(使用photoshop绘制),实现视锥剔除:,实现LOD:,在重组3D IV中d改用d2,一方面省去开方运算,另外使得LOD效应更强烈,当d相对于边长e来说较小,即离眼睛较近,(对比上一页),补缝,如果一个未分裂块的邻块分裂,则两块之间需用三角补洞。 (此处暗含假设:相邻块LOD级数必定=1。在d使用欧氏距离的情况下,能满足这一点),eye,注意: 不能为了优化而使用曼哈顿距离计算d,那样可能导致相邻块间的LOD等级1,无法使用三角形补缝。,voxel based terrain,Crysis sandbox2,可以实现悬崖,洞穴等 高度图无法实现的地形效果,新的形生成技术(基于体素的地形),场景管理,重点:八叉树(octree),简述:bsp,portal,pvs,八叉树结构,何时分裂: (1)实心节点中面数(或物体数)不够少。 (2)实心节点体积不够小。,图取自:/wiki/Octree,0,3,2,1,5,4,7,6,编号顺序:,分裂4次达到的粒度,八叉树用于碰撞检测: 快速筛选出潜在碰撞三角面(或物体)集,八叉树用于视锥剔除: (其实,视锥剔除就是视锥与场景的碰撞检测),八叉树用于加速光线追踪: 加快光线与几何体的求交运算,细菌与纽结的碰撞使用了八叉树, 红色部分为扭结与细菌的潜在碰撞三角面集。,bsp,portal,pvs:,八叉树视锥剔除的不足:无法处理遮挡,portal可处理遮挡。 通过bsp可以实现自动portal生成。 pvs是预计算版的portal。,处理遮挡的另外一个方法:硬件遮挡查询,八叉树视锥剔除,Portal技术,骨骼蒙皮动画,bone1,bone2,bone1,bone2,v6:w2=1 v5:w2=1 v4:w2=0.7,w1=0.3 v3:w2=0.5,w1=0.5 v2:w1=0.7,w2=0.3 v1:w1=1,v7:同v5 v8:同v4 v9:同v3 v10:同v 2 v11:同v1,以v4为例说明顶点混合过程: 图中bone2为bone1子骨骼,设bone1,bone2的局部矩阵分别为m_bone1,m_bone2。 v4在bone1坐标系内的坐标v4_bone1=inverse(m_bone1)*v4; v4在bone2坐标系内的坐标v4_bone2=inverse(m_bone1*m_bone2)*v4。 现假设bone1,bone2都进行了变换,各自的局部矩阵变为m_bone1和m_bone2, 则按bone1来算,v4的新坐标v4应为v4_1=m_bone1*v4_bone1。 而按bone2来算,v4的新坐标v4应为v4_2=m_bone2*v4_bone2。 于是真正v4取v4_1与v4_2的混合,由于bone1和bone2对v4的影响权重分别为0.3和0.7, 所以v4=0.3*v4_1+0.7*v4_2,顶点的骨骼权重:,粒子特效,一大类无定形事物可以用粒子系统进行模拟,如: 火,烟尘,爆炸,云,雨雪,瀑布,浪花,植被,魔法等。,2d 3d 使用点 使用透明公告牌:,体素(Voxel),过程生成( Procedural generation ),无限细节(Unlimited Detail )?,新技术,看好,体素(Voxel),比多边形更接近自然。 以前主要在医学成像中使用,近些年开始在游戏中流行。,体素光线投射(voxel ray casting ),/index.php/article/index/id/7616/page/1,Outcast (1999 ),Delta Force: Xtreme 2 (三角洲特种部队:极限版2)(2009),体素八叉树: 1,加速求交。 2,减少存储空间(物体内部区域不分裂)。,两个游戏均为Novalogic公司制作, NovaLogic与战争游戏介绍 :/j/n/2008-11-15/1838280570.shtml,风格化体素游戏,/voxeliens/,highly dynamic game environments,PolyVox,/polyvox-about/,Voxeliens,Masterspace,wtech engine,Forever War,使用PolyVox开发的游戏:,Voxlap,体素库、引擎,/ken/voxlap.htm,/,Voxelstein 3d(体素版德军总部),使用voxlap开发的游戏:,http:

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论