




已阅读5页,还剩33页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第五章游戏制作技术介绍概述 游戏制作技术要完成的工作 主要就是建造引擎 编制游戏的应用程序和制作素材 游戏开发所用的集成工具环境及各种语言 图形图像处理API 主要都是为了建造游戏引擎 而角色 场景和道具等的建模 贴图 动画的制作 音效的创作等则是素材制作的范围 重点 了解常用软件功能及程序语言目的 了解游戏制作技术实现的着眼点 1 5 1基础用语三维坐标系 3DCoordinateSystem 向量 Vector 在三维图形中 向量主要使用于隐面消除 Backfaceculling 和着色 Shading 有时候也用于需要进行物理学运算的直线及平面的方程式 2 顶点 Vertex 所谓顶点 是指表示二维空间或者三维空间上某一位置 Position 的点 在游戏编程中多使用顶点来表达 另外 在屏幕图面上实际显示出来的物理学中的点称为像素 多边形 Polygon 三点可以组成一个面 Face 三个点组成的三角形称为多边形 Polygon 另外 几个多边形也可以组成一个面 这里假定面和多边形都是由三角形组成的 边 Edge 多边形中 连接顶点和顶点的直线称为边 Edge 存储数据的方式中 存在half edge模式等方式 在Direct3D一类的实时3D情况下 主要采用 顶点 索引 的方式 网格 Mesh 多边形在最小的三维空间上可以组成面 用一些多边形可以组成一个三维物体 称为网格 3 三角形图元渲染方式一个图元是系统将处理的效果的最低级别的物理表现 更进一步解释 一个三角形就是一个图元 物体模型是由许多三角形组成的 它们具有空间拓扑结构 而任何数据在计算机中都是以线性模式来存储的 在Direct3D数据流中三角形的存储组织方式有以下几种 1 2 6 3 4 5 1 TriangleLists 2 TriangleStrips 1 3 5 4 6 3 TriangleFans 2 4 变换 Transform 最基本的变换包括移动 Transition 旋转 Rotation 和缩放 scale 这些变换都是通过矩阵来实现的 仅通过移动和旋转构成的矩阵称为仿射变换 AffineTransform 矩阵 matrix 高中数学课程已经有过移动矩阵和旋转矩阵的讲解 矩阵这一工具非常有用 特别是在三维图形中 数据量越多 矩阵就越有用 纹理 Lexture 仅仅依靠三维顶点在画面中构成物体受到的制约因素很多 特别是表现一些细微物体的时候 需要很多顶点 这在存储器和CPU受到限制的PC系统中无疑是一个大难题 所谓纹理 就是给三维物体填充上二维图形 jpg bmp gif 可以实现仅用顶点难以表现的多样效果 这种给三维顶点填充二维图形的操作称为贴图 mapping 因此 为三维物体进行纹理填充的操作就是纹理贴图 用作贴图的二维图形称为纹理或者纹理图 5 着色 Shading 所谓着色 是指在多边形中填充阴影和颜色的操作 多边形是由具有三维坐标值的顶点构成的 它们必须经过着色才能表现为各种物体 着色技巧的方法多种多样 有代表性的着色方法分别为 平面着色 FlatShading 高洛德着色或高氏渲染 GouraudShading 补色着色 PhongShading 辐射着色 Radiosity 光线跟踪 Raytracing 等 其中 在大部分显卡中 支持硬件加速的方法有平面着色和高洛德着色两种 其他着色方法的运算量较大 支持显卡硬件加速比较困难 不太常用 有一些方法可以通过着色编程直接实现 6 5 2角色 场景 道具制作5 2 1建模 游戏3D美术是一种低多边形的艺术 Poly建模 3DSmax中可以使用Mesh Poly Patch和NURBS等建模工具 但由于游戏用到的角色模型是以低面数模型为基础 因此几乎没有使用NURBS方法的 而是使用多边形Poly建模 Maya同样具有Poly建模方式 在3D软件中制作游戏模型的时候 通常都是用四边形面 只有在计算面数的时候才转换为三角面来计算 LOD系统需要建立模型的多个版本 并将依据模型离观察者的远近程度来改变屏幕上的LOD级别 7 Polygon建模 8 拆分UV 5 2 2拆分UV三维游戏的世界里 各种角色模型几乎都是三维的 然而贴图则是二维的 因此要想给三维模型贴上美丽的 外衣 就需要把三维的模型 展平 为二维的平面 然后给这个平面进行 浓妆重彩 最后再把这种绘制过的平面贴回到三维模型上 模型就变得栩栩如生了 而所谓 展平 的工作 在三维软件中就叫做 拆分UV 或 展UV 9 5 2 3贴图绘制一个游戏角色贴图的好坏可以说对角色的形象塑造起了70 的作用 对于面数比较低的角色而言 游戏角色的大部分细节都是靠贴图来表现的 贴图绘制 把模型拆分UV后 经过细心的调整 就可把这种二维UV图导入到诸如Photoshop类的绘图软件中 对UV图进行精心的绘制 成为游戏贴图 游戏贴图的长宽尺寸都必须是2的倍数的组合 10 11 魔兽角色贴图 12 5 2 4游戏动画除了游戏片头和一些过渡场合会有动画外 制作好的角色在游戏环境中要做移动 跳跃等各种动作 玩家在屏幕上所见到的并不是一幅静止的画 而是动画 在3D游戏中形成动画有两种方式 一种是Morphing动画 另一种是蒙皮骨骼动画 Morphing动画Morphing动画过程 是从基于网格型的关键帧Mesh1过渡到Mesh2 再从Mesh2过渡到Mesh3 以至meshN的一个渐变过程 在文件中存储了这些关键帧Meshl Mesh2 MeshN 接下来的工作就是对关键帧之间的不存在的帧进行插值 从而创造连续的动画 蒙皮骨骼动画 SkinMesh 建立角色骨骼蒙皮骨骼动画的起源思想很简单 自然界的大多数动物都拥有一套骨骼 骨骼是身体的框架 身体的皮毛血肉都是依附于骨骼 当骨骼开始运动的时候 依附于对应骨骼的皮毛血肉都随骨骼一起运动 13 建立角色骨骼 14 创建骨骼 15 骨骼和人物模型对好位置 16 骨骼与模型 封套 连接骨骼与模型 在Modify 修改面板 中选择Physique 蒙皮命令 通过相应调整操作 将模型与骨骼系统连接起来 有了骨骼就能制作骨骼关键帧动画 只要对骨骼进行操作 完成动作的动画设定操作后 Mesh模型这张 皮 将跟随骨骼动作 形成蒙皮骨骼动画 17 动画 18 5 3游戏效果实现5 3 1声音系统1 OpenALOpenAL是一个声音系统的API 是由创新公司创立的开放音频库OpenAL OpenAudioLibrary OpenAL是对音频硬件的一个软件接口2 声音术语闭塞 意味着一个声音在播放时听者在他们之间有一些闭合的障碍物障碍 是听者和声音之间的障碍物并不是闭合的3 声音的位置4 游戏中的音轨5 3 2视觉效果的实现1 光照与着色游戏运行中 引擎要进行一系列变换运算 通常在观察空间的坐标空间中 最重要的运算之一就是光照计算 顶点光照 要决定一个顶点被多少个多边形共享 并计算出共享该顶点的所有多边形法向量的均值 称为法向量 并将该法向量赋予顶点 用硬件转换与光照 T L 来帮助快速完成 不足之处是它不能产生阴影 19 平面光照 绘制一个多边形时 让渲染引擎把整个多边形都着上一种指定的颜色 该方法中 多边形均对应同一个光强度 表面上所有点都用相同的强度值显示 渲染绘制时得到一种平面效果 多边形的边缘就不会精确的显示出来 使得表面看起来比较平滑 顶点着色 Gouraud着色 让渲染引擎给每个顶点赋予特定的颜色 在绘制多边形上各点投影所对应的像素时 根据它们与各顶点的距离 对这些顶点的颜色进行插值计算 Phong着色 如同Gouraud着色 通过纹理工作 但不对每个顶点颜色进行插值决定像素颜色值 而是对每个顶点的法向量进行插值 Phong着色可以得到更加平滑的效果 因为每个像素都需要进行光照计算 其绘制非常耗费时间 Phong着色比Gouraud着色计算更昂贵 但效果最好 可以达到镜面高光效果 而这些都需要在游戏开发中折衷权衡 20 2 不同的灯光照明映射 用第二个纹理映射 照明映射 与已有的纹理混合来产生照明效果动态照明 例如灯光移动 或者没有程序的干预而打开和关闭灯光 就必须在每一帧重新生成照明映射 按照动态灯光的运动方式修改这些照明映射 灯光映射能够快速地渲染 但对存储这些灯光纹理所需的内存消耗非常多混合照明 例如场景使用照明映射 动画模型使用顶点照明 预先处理的灯光不会对动画模型产生正确的效果 只是整个多边形模型得到灯光的全部光照值 而动态照明被用来产生正确的效果3 纹理压缩纹理在使3D场景看起来真实方面异常重要 它们是应用到场景区域或对象的一些分解成多边形的小图片 纹理压缩是在保持图片信息的情况下 让纹理数据量更小些的一种方法 占用较少的游戏存储空间和3D显卡存储空间 21 4 MIP映射 多纹理映射 游戏引擎用来减少纹理内存和带宽需求的另外一个技术就是MIP映射 MIP映射技术通过预先处理纹理 产生它的多个拷贝纹理 每个相继的拷贝是上一个拷贝的一半大小使用MIP映射 可以在显示卡应用纹理之前 自己缩放图像 当3D显卡用纹理绘制多边形时 它检测到缩放因子 但只是要使用小一些的纹理 而不是缩小最大的纹理 这样看起来会更好一些5 多重纹理与凹凸映射具有多流水线的3D加速卡 多重纹理可以在一遍渲染过程中完成 产生多重纹理效果时 先用一个纹理绘制多边形 然后再用另外一个纹理透明地绘制在多边形上面 这可以使纹理看上去在移动 或脉动 甚至产生阴影效果 22 5 3 3粒子系统粒子系统可实现的效果火把上的火苗汽车排出的尾气一群发怒的异型生物攻击时编队成群或者成串的物体 例 运动效果 如激起的草皮 树叶 碎片粒子制作工具一个具体的游戏如何处理粒子系统数据和粒子资源 是引擎的任务 也可在游戏中采用自己的粒子制作工具 但不见得效果好 在游戏引擎中 支持标准工具的系统 如3DSmax Maya等 5 3 4游戏物理学作为游戏开发者来说 必须正确地处理地心引力 速度变化 惯性以及放置在世界里面的其它对象的碰撞 力和反作用力 力在重量点周围作用等等 这都被看作是游戏物理学 是现代游戏引擎的必备因素 在已经存入计算机内存中的游戏世界结构中 必须防止角色从里面掉出去 并且要处理地板 斜坡 墙壁 门 以及移动平台等引起的物理现象 23 5 4VC 编程编程最主要解决的是游戏引擎的编写和使用问题5 4 1游戏引擎架构1 系统 系统是引擎与机器本身作通信交互的部件 一个系统可以分为若干子系统 这些子系统有图形 输入 声音 计时器 Timer 配置等 主系统负责初始化 更新以及关闭所有的子系统 2 图形子系统 用于在屏幕上画出画面 大多数是利用OpenGL D3D或是软件渲染 Softwarerendering 实现 在最理想的情况下 可以支持所有这些API 然后抽象出一个 图形层 并将它置于API实现之上 这将给客户开发人员或是玩家更多的选择 以获取更好的兼容性和表现效果 3 输入子系统 需要把来自各种不同的输入装置的输入触发做统一的输入控制处理 在游戏中 系统要检测玩家角色的位置是否有所变动 而各种输入装置都是向输入子系统发出请求信息 由输入子系统来检测并作出正确响应 4 声音子系统 负责载入 播放声音 5 计时器系统 游戏里任何物体的移动都是通过时间触发器来做变化的 3D引擎中很多出色的表现都是基于 时间系统 24 6 配置系统 位于所有子系统的顶端 它负责读取配置记录文件 命令行参数 或是实现修改设置 setup 在系统初始化以及运行期间 所有的子系统都将一直与它保持通讯 配置系统可以简单方便地实现诸如 切换图像解析度和色深 定义按钮 声音支持选项 以及载入游戏等 将游戏设计得配置性好一些 将为调试与测试带来更大的方便 玩家也能很方便地选择他们喜欢的运行方式 7 控制台 通过命令行变量与函数 就能够在运行时改变游戏或引擎的设置 而不需要重启 通过控制台 开发期间输出调试信息 可以做些非常简便的控制 打印出错误信息 将提高效率 8 支持 包含引擎中所有数学成分 点 线 矩阵等 内存管理 文件载入器 数据容器等 9 引擎内核 渲染器可拆分为几个部分 可见裁减 碰撞检测与反馈 摄像机 静态几何体 动态几何体 粒子系统 布告板 网格 天空体 光线 雾 节点阴影和输出 其中每一个部分都需要一个接口来方便地实现改变设置 位置 方向以及其他可能与系统相关的属性配置 10 游戏介质层 引擎的每一部分都有动态的属性 而该引擎 游戏介质层提供了一个接口去修改这些动态属性 25 5 4 2编程简述Windows系统是一个庞大的系统 拥有Win32API DirectX OLE MFC ALT等等 游戏编程并不需要全部学会 只选择相关的C 语言和少数的Win32API 以及要重点掌握的DirectX就行了 某位游戏设计师曾说 编程设计要做的只是如下几项工作 打开窗口将图片从文件中读入并显示显示文字显示菜单读入脚本并执行在背景中播放音乐追加一些华丽的功能尽管他可能只是针对某些特定的游戏类型 但也简练地说出了游戏编程的框架 26 在VC 环境中 用C 编写的程序流程和Windows程序的基本流程是一样的 即 从WinMain开始登陆注册窗口类 RegisterClass 建立窗口 CXreateWindow 建立消息循环 GetMessage DispatchMessage 这是程序的 固定规则 应用软件间的差异就在于其窗口标题 数量和动作等 无论是哪一种游戏 应用软件 到这个阶段为止的程序大致相同 27 DirectX和DirectXSDKDirectX是微软开发的应用于计算机平台的多媒体控制处理引擎 全面处理2D 3D图形图像 声音的输入输出 各种外设的驱动及可靠的通信服务 DirectXSDK SoftwareDevelopmentKit 是微软公司提供的用于开发DirectX应用程序的开发工具包 它提供了一整套API如下 Direct3D D3D 集成了开发DirectX程序3D图形的所有API函数DirectGraphics Direct3D DirectDrawDirectMusic支持MIDI Wave等DirectSound支持声音播放 混音DirectInput支持游戏外设DirectPlay支持网络游戏接口DirectShow对数据流高质量捕捉和回放 支持MPEG AVI MP3 WAV ASF等DirectSetup提供DirectX的自动安装功能DirectXMediaObjects提供对数据流对象的写入和使用操作 视频 音频的编码 解码以及效果 28 Direct3D渲染管线 29 5 5脚本系统5 5 1脚本简介什么是脚本 是一种运行在某种程序内部的程序 在游戏开发中应用某种系统 使得设计人员可以不求助于编程人员 而是按照自己的需求 在系统中精确创建和平衡敌人 武器及其他游戏行为 这种系统就称之为脚本 实现脚本编程的最根本原因是要避免硬编码 如果将游戏内容和游戏引擎相分离 就可在不需要重新编译整个工程的情况下调整 测试和修改游戏的机制和特性 并能很容易进行扩展 游戏逻辑可被视为模块化内容 允许它像图形和声音一样灵活和可交互 30 脚本优缺点1 优点易学和易控 原来由编辑人员进行的工作 可以由设计人员本身完成 设计得当的脚本系统 可以允许整个系统很好地移植到其他系统中 大部分系统中脚本语言是根据需要随时载入的 而不是像通常编程语言那样一次性编辑而载入内存的 2 缺点如果要取得稳定可靠的功能 则代码的开发量非常大 一旦出现问题 调试起来会较困难 运行效率比较低 5 5 2脚本技术的选择需要游戏程序员和设计员合作 创造一个强大而稳定灵活的脚本系统 由于目前软件水平的发展以及关卡代码的开放 这个问题已不很困难 可选 Lau Python JavaScript 3DSmaxScript 31 脚本例 Behaviormonster 怪物行为If monster idle 怪物在游荡 谷仓 农舍 草料库 monster walk barn monster walk farmhouse monster walk silo elsif monster sees player 怪物看见玩家If player bleeding 玩家在流血 怪物冲向玩家Monster run player elsif player has weapon 如果玩家有武器 怪物逃向草料库Monster run silo else monster walk player 怪物走向玩家 32 触发器 在情节脚本中可使用 区域触发器是用来建造一个区域 当角色进入次区域时就触
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- (2025年标准)转让饭馆协议书
- 电信行业网络优化与安全防护方案
- 2025年磨工(一级)考试试卷:磨工专业发展与产业转型
- 2025年四川省事业单位招聘考试教师招聘体育学科专业知识试卷(运动训练)试题
- 2025年软件设计师考试软件系统维护与优化实战试卷
- 2025年钳工(初级)理论知识与技能考试试卷
- 2025年起重机械作业特种作业操作证考试试卷(安全操作要点篇)
- 2025年企业人力资源管理师(中级)专业能力试卷
- 2025年日语能力测试N3级词汇语法强化试卷备考指导
- 2025年物联网技术工程师考试真题模拟试卷
- LY/T 2383-2014结构用木材强度等级
- GB/T 528-2009硫化橡胶或热塑性橡胶拉伸应力应变性能的测定
- GB/T 4950-2021锌合金牺牲阳极
- 中日关系历史
- GB/T 15171-1994软包装件密封性能试验方法
- 2023年江苏省中学生生物学竞赛(奥赛)初赛试题和答案
- 信息系统运维服务方案
- 化工试生产总结报告
- 导数与原函数的对称性 微专题课件-2023届高三数学一轮复习
- DB32-T 3129-2016适合机械化作业的单体钢架塑料大棚 技术规范-(高清现行)
- 中西医结合肿瘤医院员工手册
评论
0/150
提交评论