3D游戏制作的理论基础.doc
文本预览下载声明
3D游戏制作的理论基础
以下内容,对于本人系直接没用的,但留着也许以后有用,因世上有样嘢叫团队~!有幸的话我会系这团队中的一员,哇!想得太远了.会电脑语言编程的各位,您有福了~!原文连接3D引擎(3D engine)、3D编程语言3D引擎是3D图形函数库。在因特网上有很多3D引擎,其中有一些还是免费的,有些商业化的引擎价格在50美元到25万美元之间。3D引擎需要使用外部的开发系统来编写程序,使用最多的是是微软的Visual C++。围绕3D引擎通过编程来开发游戏具有极大的自由度,但也需要很多的经验、工作和时间。3D编程语言提供了一种更加容易的编写3D应用程序的方法,因为你使用的是一种专门为3D游戏设计的脚本语言来编写DirectX界面。这种语言不受3D引擎速度和自由度的影响,并且避免了使用真正编程语言带来的问题。很多3D编程语言使用Basic--一种比较容易学习的语言,但由于其落后的语言结果,所以并不适合于编写大而复杂的游戏。比较适合于当前游戏开发需要的是基于C或者JavaScript的语言。创作游戏最简单的方法是使用3D创作系统--它们有自己的3D引擎,并且具备可视化编辑器,可以很快地创作一个游戏原型。当然了,只有很简单的游戏才可能绕开编程,创作系统一般都提供脚本语言来进行编程或定制游戏。利用创作系统,再加上对独立3D引擎的编程,可以在很短的时间内创作一款游戏,很多大的游戏公司都开始使用创作系统来开发游戏了。一些简单的创作系统针对FPS(First or third Person Shooters),不提供或者只提供有限的脚本编程。尽管利用他们开发的FPS游戏并没有什么市场,但如果你不希望使用脚本或者不想让你的游戏商业化的话,也可以使用他们来开发游戏。而多数的创作系统可以用来开发任何种类的游戏或者3D应用程序。下面是一个当下流行的系统和引擎的对比表:2.什么是渲染器(Renderer),什么是顶点变换和光照(TL)?渲染器是3D引擎的核心部分,它完成将3D物体绘制到屏幕上的任务。根据3D硬件使用方法的不同,可以分为DirectX和OpenGL两种渲染器。OpenGL渲染器通过OpenGL图形库来使用3D硬件,多数3D卡支持这种方法。而DirectX渲染器使用微软的DirectX库--归并到Windows操作系统中。在老的3D卡上面,OpenGL一般绘制速度较快一些,而在现代的3D卡上面,DirectX表现则更加出色。现在的OpenGL版本只有一个,而DirectX版本有很多:DX6基本的3D支持,没有硬件TL,整合于Windows95中DX7与DX6相似,但具有硬件TL,整合于Windows98中DX8有了重大改进,支持着色器,整合于Windows2000、ME、XP中DX9和DX8类似,具有类C的着色器语言,整合于WindowsXP SP2中在一个物体被绘制到屏幕之前,必须先计算它的光照,并且将它从3D世界转换到屏幕二维坐标系中(这两个过程称为光照和顶点变换,也就是TL,TransformationLighting)。渲染器可以使用自己的算法(软件TL),也可以使用3D硬件(硬件TL,OpenGL和DirectX7或以上版本)来完成这个任务。在老的系统上,必须模拟硬件TL,所以运行速度很慢;而在新一代的3D卡(GeForce和Radeon)上面,硬件TL运行十分快,并且比软件TL光照效果要好。一些渲染器对两种方法都支持,这样可以让硬件发挥最大的效果。3.什么是剔除(culling)系统和LOD系统?剔除系统可以只绘制出游戏场景中未被墙及其他物体遮挡的部分。一般的剔除系统是基于BSP树或者入口(Portal)的。BSP树系统是最快和最有效的场景组织结构,特别是对于室内场景来说,但是BSP树必须在场景编辑器中预计算。渲染器不支持使用八叉树(Octree)来组织场景的剔除。多数商业化3D引擎使用基于BSP树的剔除系统。如果使用BSP树的剔除系统的话,室内渲染速度和场景大小、对象数目无关,甚至在老的PC上都可以使游戏以正常的帧率运行。LOD系统可以增加室外场景的帧率。如果摄像机离物体比较远的话,它可以自动将物体转换为简单形体,这样就减少了每帧要绘制的多边形数目。4.什么是阴影贴图(Shadow Mapping)?也叫做光照贴图(Light Mapping)--这是一种可以在不减少帧率的情况下达到真实感光照和阴影效果的方法。阴影贴图编辑器允许在场景中放置任意数目的静态光源,它会为每个面预计算光流量(light flow)和静态阴影。现代商业3D游戏中多数都会使用到阴影贴图。如下图所示,平滑的光照和阴影极大地提升了游戏的氛围。5.什么是粒子系统粒子系统是一种特效发生器,它可以制造大量的小粒子来达到某种特殊的效果,比如烟雾、火焰或者爆
显示全部