您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 广告经营 > 游戏设计--5游戏制作技术介绍
第五章游戏制作技术介绍概述:游戏制作技术要完成的工作,主要就是建造引擎、编制游戏的应用程序和制作素材。游戏开发所用的集成工具环境及各种语言,图形图像处理API,主要都是为了建造游戏引擎。而角色、场景和道具等的建模、贴图,动画的制作,音效的创作等则是素材制作的范围。重点:了解常用软件功能及程序语言目的:了解游戏制作技术实现的着眼点5.1基础用语三维坐标系(3DCoordinateSystem)XZY左手系XZY右手系00向量(Vector)在三维图形中,向量主要使用于隐面消除(Backfaceculling)和着色(Shading),有时候也用于需要进行物理学运算的直线及平面的方程式。顶点(Vertex)所谓顶点,是指表示二维空间或者三维空间上某一位置(Position)的点。在游戏编程中多使用顶点来表达。另外,在屏幕图面上实际显示出来的物理学中的点称为像素。多边形(Polygon)三点可以组成一个面(Face),三个点组成的三角形称为多边形(Polygon)。另外,几个多边形也可以组成一个面,这里假定面和多边形都是由三角形组成的。边(Edge)多边形中,连接顶点和顶点的直线称为边(Edge),存储数据的方式中,存在half-edge模式等方式。在Direct3D一类的实时3D情况下,主要采用“顶点+索引”的方式。网格(Mesh)多边形在最小的三维空间上可以组成面,用一些多边形可以组成一个三维物体,称为网格。三角形图元渲染方式一个图元是系统将处理的效果的最低级别的物理表现。更进一步解释,一个三角形就是一个图元。物体模型是由许多三角形组成的,它们具有空间拓扑结构。而任何数据在计算机中都是以线性模式来存储的,在Direct3D数据流中三角形的存储组织方式有以下几种。1263451)TriangleLists21345672)TriangleStrips135463)TriangleFans12342变换(Transform)最基本的变换包括移动(Transition)、旋转(Rotation)和缩放(scale),这些变换都是通过矩阵来实现的。仅通过移动和旋转构成的矩阵称为仿射变换(AffineTransform),矩阵(matrix)高中数学课程已经有过移动矩阵和旋转矩阵的讲解,矩阵这一工具非常有用,特别是在三维图形中,数据量越多,矩阵就越有用。纹理(Lexture)仅仅依靠三维顶点在画面中构成物体受到的制约因素很多,特别是表现一些细微物体的时候,需要很多顶点,这在存储器和CPU受到限制的PC系统中无疑是一个大难题。所谓纹理,就是给三维物体填充上二维图形(jpg、bmp、gif),可以实现仅用顶点难以表现的多样效果,这种给三维顶点填充二维图形的操作称为贴图(mapping),因此,为三维物体进行纹理填充的操作就是纹理贴图,用作贴图的二维图形称为纹理或者纹理图。着色(Shading)所谓着色,是指在多边形中填充阴影和颜色的操作。多边形是由具有三维坐标值的顶点构成的.它们必须经过着色才能表现为各种物体。着色技巧的方法多种多样,有代表性的着色方法分别为:平面着色(FlatShading),高洛德着色或高氏渲染(GouraudShading),补色着色(PhongShading),辐射着色(Radiosity),光线跟踪(Raytracing)等。其中,在大部分显卡中,支持硬件加速的方法有平面着色和高洛德着色两种。其他着色方法的运算量较大,支持显卡硬件加速比较困难,不太常用。有一些方法可以通过着色编程直接实现。5.2角色、场景、道具制作5.2.1建模游戏3D美术是一种低多边形的艺术Poly建模3DSmax中可以使用Mesh、Poly、Patch和NURBS等建模工具,但由于游戏用到的角色模型是以低面数模型为基础,因此几乎没有使用NURBS方法的,而是使用多边形Poly建模,Maya同样具有Poly建模方式。在3D软件中制作游戏模型的时候,通常都是用四边形面,只有在计算面数的时候才转换为三角面来计算。LOD系统需要建立模型的多个版本,并将依据模型离观察者的远近程度来改变屏幕上的LOD级别Polygon建模拆分UV5.2.2拆分UV三维游戏的世界里,各种角色模型几乎都是三维的,然而贴图则是二维的,因此要想给三维模型贴上美丽的“外衣”,就需要把三维的模型“展平”为二维的平面,然后给这个平面进行“浓妆重彩”,最后再把这种绘制过的平面贴回到三维模型上,模型就变得栩栩如生了。而所谓“展平”的工作,在三维软件中就叫做“拆分UV”,或“展UV”5.2.3贴图绘制一个游戏角色贴图的好坏可以说对角色的形象塑造起了70%的作用。对于面数比较低的角色而言,游戏角色的大部分细节都是靠贴图来表现的。贴图绘制把模型拆分UV后,经过细心的调整,就可把这种二维UV图导入到诸如Photoshop类的绘图软件中,对UV图进行精心的绘制,成为游戏贴图。游戏贴图的长宽尺寸都必须是2的倍数的组合魔兽角色贴图5.2.4游戏动画除了游戏片头和一些过渡场合会有动画外,制作好的角色在游戏环境中要做移动、跳跃等各种动作,玩家在屏幕上所见到的并不是一幅静止的画,而是动画。在3D游戏中形成动画有两种方式,一种是Morphing动画,另一种是蒙皮骨骼动画。Morphing动画Morphing动画过程,是从基于网格型的关键帧Mesh1过渡到Mesh2,再从Mesh2过渡到Mesh3,以至meshN的一个渐变过程。在文件中存储了这些关键帧Meshl,Mesh2,……MeshN,接下来的工作就是对关键帧之间的不存在的帧进行插值,从而创造连续的动画。蒙皮骨骼动画(SkinMesh)建立角色骨骼蒙皮骨骼动画的起源思想很简单,自然界的大多数动物都拥有一套骨骼,骨骼是身体的框架,身体的皮毛血肉都是依附于骨骼。当骨骼开始运动的时候,依附于对应骨骼的皮毛血肉都随骨骼一起运动。建立角色骨骼创建骨骼骨骼和人物模型对好位置骨骼与模型封套:连接骨骼与模型在Modify(修改面板)中选择Physique(蒙皮命令),通过相应调整操作,将模型与骨骼系统连接起来。有了骨骼就能制作骨骼关键帧动画,只要对骨骼进行操作,完成动作的动画设定操作后,Mesh模型这张“皮”将跟随骨骼动作,形成蒙皮骨骼动画。动画5.3游戏效果实现5.3.1声音系统1)OpenALOpenAL是一个声音系统的API,是由创新公司创立的开放音频库OpenAL(OpenAudioLibrary),OpenAL是对音频硬件的一个软件接口2)声音术语闭塞-—意味着一个声音在播放时听者在他们之间有一些闭合的障碍物障碍—是听者和声音之间的障碍物并不是闭合的3)声音的位置4)游戏中的音轨5.3.2视觉效果的实现1)光照与着色游戏运行中,引擎要进行一系列变换运算,通常在观察空间的坐标空间中,最重要的运算之一就是光照计算。顶点光照:要决定一个顶点被多少个多边形共享,并计算出共享该顶点的所有多边形法向量的均值(称为法向量),并将该法向量赋予顶点。用硬件转换与光照(T&L)来帮助快速完成,不足之处是它不能产生阴影。平面光照:绘制一个多边形时,让渲染引擎把整个多边形都着上一种指定的颜色。该方法中,多边形均对应同一个光强度,表面上所有点都用相同的强度值显示,渲染绘制时得到一种平面效果,多边形的边缘就不会精确的显示出来,使得表面看起来比较平滑。顶点着色(Gouraud着色):让渲染引擎给每个顶点赋予特定的颜色。在绘制多边形上各点投影所对应的像素时,根据它们与各顶点的距离,对这些顶点的颜色进行插值计算。Phong着色:如同Gouraud着色,通过纹理工作,但不对每个顶点颜色进行插值决定像素颜色值,而是对每个顶点的法向量进行插值,Phong着色可以得到更加平滑的效果,因为每个像素都需要进行光照计算,其绘制非常耗费时间。Phong着色比Gouraud着色计算更昂贵,但效果最好,可以达到镜面高光效果。而这些都需要在游戏开发中折衷权衡。2)不同的灯光照明映射:用第二个纹理映射(照明映射)与已有的纹理混合来产生照明效果动态照明:例如灯光移动,或者没有程序的干预而打开和关闭灯光,就必须在每一帧重新生成照明映射,按照动态灯光的运动方式修改这些照明映射。灯光映射能够快速地渲染,但对存储这些灯光纹理所需的内存消耗非常多混合照明:例如场景使用照明映射,动画模型使用顶点照明。预先处理的灯光不会对动画模型产生正确的效果,只是整个多边形模型得到灯光的全部光照值,而动态照明被用来产生正确的效果3)纹理压缩纹理在使3D场景看起来真实方面异常重要,它们是应用到场景区域或对象的一些分解成多边形的小图片。纹理压缩是在保持图片信息的情况下,让纹理数据量更小些的一种方法。占用较少的游戏存储空间和3D显卡存储空间。4)MIP映射(多纹理映射)游戏引擎用来减少纹理内存和带宽需求的另外一个技术就是MIP映射。MIP映射技术通过预先处理纹理,产生它的多个拷贝纹理,每个相继的拷贝是上一个拷贝的一半大小使用MIP映射,可以在显示卡应用纹理之前,自己缩放图像,当3D显卡用纹理绘制多边形时,它检测到缩放因子,但只是要使用小一些的纹理,而不是缩小最大的纹理,这样看起来会更好一些5)多重纹理与凹凸映射具有多流水线的3D加速卡,多重纹理可以在一遍渲染过程中完成。产生多重纹理效果时,先用一个纹理绘制多边形,然后再用另外一个纹理透明地绘制在多边形上面。这可以使纹理看上去在移动,或脉动,甚至产生阴影效果5.3.3粒子系统粒子系统可实现的效果火把上的火苗汽车排出的尾气一群发怒的异型生物攻击时编队成群或者成串的物体(例)运动效果,如激起的草皮、树叶、碎片粒子制作工具一个具体的游戏如何处理粒子系统数据和粒子资源,是引擎的任务。也可在游戏中采用自己的粒子制作工具,但不见得效果好。在游戏引擎中,支持标准工具的系统,如3DSmax、Maya等。5.3.4游戏物理学作为游戏开发者来说,必须正确地处理地心引力,速度变化,惯性以及放置在世界里面的其它对象的碰撞,力和反作用力,力在重量点周围作用等等。这都被看作是游戏物理学,是现代游戏引擎的必备因素。在已经存入计算机内存中的游戏世界结构中,必须防止角色从里面掉出去,并且要处理地板,斜坡,墙壁,门,以及移动平台等引起的物理现象。5.4VC++编程编程最主要解决的是游戏引擎的编写和使用问题5.4.1游戏引擎架构1)系统:系统是引擎与机器本身作通信交互的部件。一个系统可以分为若干子系统,这些子系统有图形、输入、声音、计时器(Timer)、配置等。主系统负责初始化、更新以及关闭所有的子系统。2)图形子系统:用于在屏幕上画出画面,大多数是利用OpenGL,D3D或是软件渲染(Softwarerendering)实现。在最理想的情况下,可以支持所有这些API,然后抽象出一个“图形层”,并将它置于API实现之上,这将给客户开发人员或是玩家更多的选择,以获取更好的兼容性和表现效果。3)输入子系统:需要把来自各种不同的输入装置的输入触发做统一的输入控制处理。在游戏中,系统要检测玩家角色的位置是否有所变动,而各种输入装置都是向输入子系统发出请求信息,由输入子系统来检测并作出正确响应。4)声音子系统:负责载入、播放声音。5)计时器系统:游戏里任何物体的移动都是通过时间触发器来做变化的,3D引擎中很多出色的表现都是基于“时间系统”。6)配置系统:位于所有子系统的顶端,它负责读取配置记录文件,命令行参数,或是实现修改设置(setup)。在系统初始化以及运行期间,所有的子系统都将一直与它保持通讯。配置系统可以简单方便地实现诸如:切换图像解析度和色深,定义按钮,声音支持选项,以及载入游戏等。将游戏设计得配置性好一些,将为调试与测试带来更大的方便,玩家也能很方便地选择他们喜欢的运行方式。7)控制台:通过命令行变量与函数,就能够在运行时改变游戏或引擎的设置,而不需要重启。通过控制台,开发期间输出调试信息,可以做些非常简便的控制,打印出错误信息,将提高效率。8)支持:包含引擎中所有数学成分(点、线、矩阵等),内存
本文标题:游戏设计--5游戏制作技术介绍
链接地址:https://www.777doc.com/doc-3721758 .html