CHAPTER1游戏引擎概论.pptxCHAPTER2Unity3D引擎基础讲解.pptxCHAPTER3Unity3D引擎的系统功能.pptxCHAPTER4Unity3D山体地形的制作.pptxCHAPTER5Unity3D模型的导入与编辑.pptxCHAPTER6Unity3D水系的制作.pptxCHAPTER7Unity3D粒子系统详解.pptxCHAPTER8Unity3D野外综合场景实例制作.pptxCHAPTER9Unity3D室内综合场景实例制作.pptx全套PPT课件CHAPTER1游戏引擎概论1.1游戏引擎的定义1.2游戏引擎的发展史1.4游戏引擎编辑器的基本功能1.3世界主流游戏引擎介绍1.1游戏引擎的定义
游戏引擎就是用于控制所有游戏功能的主程序,从模型控制到计算碰撞、物理系统和物体的相对位置,再到接收玩家的输入,以及按照正确的音量输出声音等都属于游戏引擎的功能范畴。一套完整成熟的游戏引擎也必须包含以下几方面的功能。首先是光影效果,即场景中的光源对所有物体的影响方式。其次是动画,目前游戏所采用的动画系统可以分为两种:一种是骨骼动画系统,另一种是模型动画系统。
游戏引擎的另一重要功能是提供物理系统,这可以使物体的运动遵循固定的规律。渲染是游戏引擎最重要的功能之一,当3D模型制作完毕后,游戏美术师会为模型添加材质和贴图,最后再通过引擎渲染把模型、动画、光影和特效等所有效果实时计算出来并展示在屏幕上,渲染模块在游戏引擎的所有部件中是最复杂的,它的强大与否直接决定着最终游戏画面的质量。游戏引擎还有一个重要的职责就是负责玩家与电脑之间的沟通,包括处理来自键盘、鼠标、摇杆和其他外设的输入信号。1.2游戏引擎的发展史1.2.1引擎的诞生(1991年-1993年)1992年,美国Apogee软件公司代理发行了一款名叫《德军司令部3D(Wolfenstein3D)》的射击游戏(见图1-1),游戏的容量只有2MB,以现在的眼光来看这款游戏只能算是微型小游戏,但在当时即使用“革命”这一极富煽动色彩的词语也无法形容出它在整个电脑游戏发展史上占据的重要地位。图1-1当时具有革命性画面的《德军司令部3D》
稍有资历的玩家可能都还记得当初接触它时的兴奋心情,这部游戏开创了第一人称射击游戏的先河,更重要的是,它在由宽度X轴和高度Y轴构成的图像平面上增加了一个前后纵深的Z轴,这根Z轴正是三维游戏的核心与基础,它的出现标志着3D游戏时代的萌芽与到来。《德军司令部3D》游戏的核心程序代码,也就是我们今天所说的游戏引擎的作者正是如今大名鼎鼎的约翰·卡马克(JohnCarmack),他在世界游戏引擎发展史上的地位无可替代。
随着时代的变革和发展,游戏公司对于游戏引擎的重视程度日益提高,《雷神之锤》系列作为3D游戏史上最伟大的游戏系列之一,其创造者—游戏编程大师约翰·卡马克,对游戏引擎技术的发展做出了前无古人的卓越贡献。从1996年《QuakeI》的问世到《QuakeII》,再到后来风靡世界的《QuakeIII》(见图1-3),每一次换代都把游戏引擎技术推向了一个新的极致。图1-3从QuakeⅠ到QuakeⅢ画面的发展
在《QuakeII》还在独霸市场的时候,后起之秀Epic公司携带着它们自己的《Unreal(虚幻)》(如图1-4)问世,尽管当时只是在300×200的分辨率下运行的这款游戏,但游戏中的许多特效即便在今天看来依然很出色:荡漾的水波、美丽的天空、庞大的关卡、逼真的火焰和烟雾以及力场效果等,从单纯的画面效果来看,《虚幻》在当时是当之无愧的佼佼者,其震撼力完全可以与人们第一次见到《德军司令部》时的感受相比。图1-4《虚幻》引擎的LOGO
Unreal引擎的应用范围不仅包括游戏制作,还涵盖了教育、建筑等其他领域,DigitalDesign公司曾与联合国教科文组织的世界文化遗产分部合作采用Unreal引擎制作过巴黎圣母院的内部虚拟演示,ZenTao公司采用Unreal引擎为空手道选手制作过武术训练软件,另一家软件开发商VitoMiliano公司也采用Unreal引擎开发了一套名为“Unrealty”的建筑设计软件,用于房地产的演示,如今Unreal引擎早已经从激烈的竞争中脱颖而出,成为当下主流的次时代游戏引擎。1.2.3引擎的革命(1998年-2000年)在虚幻引擎诞生后,引擎在游戏图像技术上的发展出现了短暂的瓶颈期,例如所有采用Doom引擎制作的游戏,无论是《异教徒》还是《毁灭战士》,都有着相似的内容,甚至连情节设定都如出一辙,玩家开始对端着枪跑来跑去的单调模式感到厌倦,开发者们不得不从其他方面寻求突破,由此掀起了FPS游戏的一个新高潮。两部划时代的作品同时出现在1998年—Valve公司的《半条命(Half-Life)》和LookingGlass工作室的《神偷:暗黑计划(Thief:TheDarkProject)》(见图1-5)。图1-5《半条命》和《神偷:暗黑计划》的游戏画面
受《半条命》和《神偷:暗黑计划》两款游戏的启发,越来越多的开发者开始把注意力从单纯的视觉效果转向更具变化的游戏内容,其中比较值得一提的是离子风暴工作室出品的《杀出重围》,《杀出重围》采用的是Unreal引擎,尽管画面效果十分出众,但在人工智能方面它无法达到《神偷》系列的水准,游戏中的敌人更多的是依靠预先设定的脚本做出反应。
从2000年开始3D引擎朝着两个不同的方向分化。一是像《半条命》、《神偷》和《杀出重围》那样通过融入更多的叙事成分、角色扮演成分以及加强人工智能来提高游戏的可玩性;二是朝着纯粹的网络模式发展,在这方面idSoftware公司再次走到了整个行业的最前沿,在QuakeII出色的图像引擎基础上加入更多的网络互动方式,破天荒推出了一款完全没有单人过关模式的网络游戏—《雷神之锤3竞技场(QuakeIIIArena)》,它与Epic公司之后推出的《虚幻竞技场(UnrealTournament)》(见图1-6)一同成为引擎发展史上一个新的转折点。图1-6奠定新时代3D游戏标杆的《虚幻竞技场》
进入20世纪90年代后国内自主研发的电脑游戏作品日益增多,与国外游戏制作产业发展不同的是,在当时国内电脑游戏主要以RPG(角色扮演类)游戏为主,游戏的制作都是以汇编语言作为基础,利用QBASIC语言编写的DOS游戏,同时加上美术贴图和任务文本共同组成,游戏引擎对于当时的国内游戏制作业还是一个完全陌生的词汇,这种情况一直持续到90年代后期。
在2000年前后,经历了国内第一次游戏产业泡沫覆灭的洗礼,国内的游戏制作公司逐渐进入了稳定阶段,一些知名的游戏工作室相继推出了自己的经典作品,例如金山公司西山居工作室的《剑侠情缘2》、大宇DOMO工作室的《轩辕剑3》、大宇狂徒工作室的《仙剑奇侠传2》等。
在完全摆脱了DOS平台后,对于Windows平台游戏的开发各个公司都引入了全新的制作技术,更重要的是,在欧美引擎技术和理念的影响下,各个公司都开始了自主游戏引擎的研发,例如DOMO工作室自主研发的游戏引擎就应用到了《仙剑奇侠传2》、《大富翁4》和《轩辕剑3》等游戏的制作中,从此国内游戏制作领域正式开启了引擎技术制作的时代。
2000年后,国产游戏如雨后春笋般出现其中不乏一些精品:大宇公司的仙剑系列、轩辕剑系列、大富翁系列以及金山公司的剑侠情缘系列等。2003年,大宇公司制作发行的《仙剑奇侠传3》和一年后的资料片《仙奇侠传剑3:问情篇》(见图1-8),这两款经典国产RPG游戏都获得了当年众多单机游戏大奖。图1-8《仙剑奇侠传3》
由于自主研发的游戏引擎达不到游戏制作的要求,2005年以后,国内游戏制作公司基本都开始购买外国游戏引擎来制作游戏。例如大宇公司的《仙剑4》和《仙剑5》(见图1-9)就是采用了第三方游戏引擎—RenderWare,该引擎曾用于500多款游戏制作,如《侠盗猎车手》、《真人快打》、《实况足球》等,Renderware引擎的优点是支持多游戏平台,提供主流的动态光影、材质纹理细节特效和方便的导出插件等,RenderWare引擎无论是在光影效果、角色骨骼系统、场景管理功能上,还是在卡通渲染以及材质特效上,都拥有着非常出色的表现。图1-9《仙剑5》画面质量有了显著提升
虚幻3引擎给人留下最深印象的就是它极其细腻的模型。通常游戏的人物模型由几百至几千个多边形面组成,而虚幻3引擎的进步之处就在于,制作人员可以创建一个由数百万个多边形面组成的超精细模型,并对模型进行细致的渲染,然后得到一张高品质的法线贴图,这张法线贴图中记录了高精度模型的所有光照信息和通道信息,在游戏最终运行的时候,游戏会自动将这张带有全部渲染信息的法线贴图应用到一个低多边形面数(通常多边形面在5000-15000)的模型上,这样最终的效果就是游戏模型虽然多边形面数较少但却拥有高精度的模型细节,保证效果的同时在最大程度上节省了硬件的计算资源,如图1-11所示,这就是现在次时代游戏制作中常用的“法线贴图”技术,而虚幻3引擎也是世界范围内法线贴图技术的最早引领者。图1-11利用高模映射烘焙是制作法线贴图的技术原理
虚幻3引擎还具备64位色高精度动态渲染管道、支持众多光照和渲染技术、高级动态阴影、支持可视化阴影技术、强大的材质系统、模块化材质框架、场景无缝连接、动态细分、体积环境效果、刚体物理系统、符合物理原理的声音效果、高智能化AI系统、可视化物理建模等一系列世界最为先进的游戏引擎技术。
虚幻3引擎是近几年世界上最为流行的游戏引擎,基于它开发出的大作无数,包括《战争机器》、《使命召唤3》、《彩虹六号:维加斯》、《虚幻竞技场3》、《荣誉勋章:空降神兵》、《镜之边缘》、《质量效应》、《战争机器2》、《最后的神迹》、《蝙蝠侠:阿卡姆疯人院》、《流星蝴蝶剑OL》和《质量效应2》等。1.3.2CryEngine引擎2007年,美国EA公司发行了Crytek制作的第二部FPS游戏《孤岛危机(Crysis)》,孤岛危机使用的是Crytek自主游戏引擎的第2代—CryEngine2,采用CryEngine2引擎所创造出来的世界可以说是一个惊为天人的游戏世界,引入白天和黑夜交替设计,静物与动植物的破坏、拣拾和丢弃系统,物体的重力效应,人或风力对植物、海浪的形变效应,爆炸的冲击波效应等一系列的场景特效,其视觉效果直逼真实世界(见图1-12)。图1-12《孤岛危机》中超逼真的视觉画面效果
CryEngine2引擎的首要优势就是卓越的图像处理能力,在DirectX10的帮助下引擎提供了实时光照和动态柔和阴影渲染支持,这一技术无需提前准备纹理贴图,就可以模拟白天和动态的天气情况下的光影变化,同时能够生成高分辨率、带透视矫正的容积化阴影效果,而创造出这些效果得益于引擎中所采用到的容积化、多层次以及远视距雾化技术。同时,它还整合了灵活的物理引擎,使得具备可破坏性特征的环境创建成为可能。1.3.3Frostbite(寒霜)引擎Frostbite引擎是EADICE开发的一款3D游戏引擎,主要应用于军事射击类游戏《战地》系列,该引擎从2006年起开始研发,第一款使用寒霜引擎的游戏是2008年上市的《战地:叛逆连队》。寒霜系列引擎至今为止共经历三个版本发展:寒霜1.0、寒霜1.5和现在的寒霜2.0。
寒霜2所采用的是Havok物理引擎中增强的第三代摧毁系统Destruction3.0,应用了非传统的碰撞检测系统,可以制造动态的破坏,物体被破坏的细节可以完全由系统实时演算渲染产生而非事先预设定,引擎理论上支持100%物体破坏,包括载具、建筑、草木枝叶、普通物体、地形等,如图1-13所示,Frostbite2引擎已经是名副其实的次时代游戏引擎了。使用寒霜引擎制作的游戏如表1-1所示。图1-13《战地3》中的Destruction3.0摧毁系统画面效果表1-1使用寒霜引擎制作的游戏1.3.4Gamebryo引擎Gamebryo引擎相比以上两款游戏引擎在玩家中的知名度略低,但提起《辐射3》(见图1-14)、《辐射:新维加斯》、《上古卷轴4》以及《地球帝国》系列这几款大名鼎鼎的游戏作品相信无人不知,而这几款游戏作品正是使用Gamebryo游戏引擎制作出来的。Gamebryo引擎是NetImmerse引擎的后继版本,最初是由NumericalDesignLimited开发的游戏中间层,在与EmergentGameTechnologies公司合并后,引擎改名为Gamebryo。图1-14《辐射3》游戏画面
Gamebryo游戏引擎是由C++编写的多平台游戏引擎,他支持的平台有:Windows、Wii、PlayStation2、PlayStation3、Xbox和Xbox360。Gamebryo是一个灵活多变支持跨平台创作的游戏引擎和工具系统。1.3.5BigWorld(大世界)引擎大多数游戏引擎的诞生以及应用更多的是基于单机游戏,而通常单机游戏引擎大多都不能直接对应网络或多人互动功能,需要加载另外的附件工具来实现,而BigWorld游戏引擎则恰恰是针对于网络游戏提供的一套完整技术解决方案。BigWorld引擎全称为BigWorldMMOTechnologySuite,这一方案无缝集成了专为快速高效开发MMO游戏而设计的高性能服务器应用软件、工具集、高级3D客户端和应用编程接口(APIs)。
以起源引擎为核心搭建的多人游戏平台—Steam是世界上最大规模的联机游戏平台,包括《胜利之日:起源》、《反恐精英:起源》和《军团要塞2》,也是世界上最大的网上游戏文化聚集地之一。起源引擎所制作的游戏支持强大的网络连接和多人游戏功能,包括支持高达64名玩家的局域网和互联网游戏,引擎已集成服务器浏览器、语音通话和文字信息发送等一系列功能。1.3.8Unity3D引擎由于手机游戏有容量小、流程短、操作性强以及单机化等特点,决定了手游3D引擎在保证视觉画面的同时要尽可能对引擎自身和软件操作流程进行简化,最终这一目标被UnityTechnologies公司所研发的Unity3D引擎所实现。Unity3D引擎自身具备所有大型三维游戏引擎的基本功能,例如高质量渲染系统、高级光照系统、粒子系统、动画系统、地形编辑系统、UI系统和物理引擎等,而且整体的视觉效果也不亚于现在市面上的主流大型3D引擎(见图1-16)。图1-16Unity3D制作的游戏画面并不亚于任何主流游戏引擎1.4游戏引擎编辑器的基本功能
一套成熟完整的游戏引擎编辑器一般包含以下几部分:场景地图编辑器、场景模型编辑器、角色模型编辑器、动画特效编辑器和任务编辑器,不同的编辑器负责不同的制作任务,以供不同的游戏制作人员使用。1.4.1地形编辑功能地形编辑功能是引擎地图编辑器的重要功能之一,也是其最为基础的功能,通常来说三维游戏野外场景中的大部分地形、地表、山体等并非3dsMax制作的模型,而是利用场景地图编辑器生成并编辑制作完成的,如图1-17所示。图1-17游戏引擎地图编辑器
在游戏引擎地图编辑器中可以导入一张黑白位图,这张位图中的黑白像素可以控制整个地图区块的基本地形面貌,如图1-18所示。图中右侧就是我们导入的位图,而左侧就是根据位图生成的地图区块,可以看到地图区块中已经随即生成了与位图相对应的基本地形,位图中的白色区域在地表区块中被生成为隆起的地形,利用位图生成地形是为了下一步可以更加快捷地编辑局部的地形地貌。图1-18利用黑白位图生成地形的大致地貌
在3dsMax编辑多边形命令层级菜单下方有“PaintDeformation(变形绘制)”面板,其实这项功能的原理与游戏引擎地图编辑器中的地形编辑功能如出一辙,都是利用绘制的方式来编辑多边形的点、线、面,图1-19所示是地形绘制的三种最基本的笔刷模式,左边是拉起地形操作,中间为塌陷地形操作,右侧为踏平操作,通过这三种基本的绘制方式再加上柔化笔刷就可以完成游戏场景中不同地形的编辑与制作。图1-19三种基本的地形绘制模式
引擎地图编辑器的地形编辑功能除了对地形地表的操作外,另一个重要的功能就是地形贴图的绘制,贴图绘制和模型编辑在场景地形制作上是相辅相成的,在模型编辑的同时还要考虑地形贴图的特点,只有相互配合才能最终完成场景地表形态的制作,如图1-20所示,雪山山体的岩石肌理和山脊上的残雪都是利用地图编辑器的地表贴图绘制功能实现的,下面我们就来看一下地表贴图绘制的流程和基本原理。图1-20利用引擎地图编辑器制作的雪山地形
从功能上来说,地图编辑器的笔刷分为两种:地形笔刷和材质笔刷。简单模拟一下在同一张地表区块上绘制不同地表贴图的效果,如图1-21所示。图1-21地表贴图的绘制原理
图1-21左侧的贴图为地表材质库中的4张贴图,左上角的沙石地面为地表基本材质,我们要在地表中间绘制出右上角的道路纹理,还要在两侧绘制出两种颜色衔接的草地,图中右侧就是贴图的最终效果。具体的绘制方法非常简单,材质笔刷就类似于Photoshop中的羽化笔刷,可以调节笔刷的强度、大小范围和贴图的透明度,然后就可以根据地形的起伏,在不同的地表结构上选择合适的地表贴图进行绘制。1.4.2模型的导入将模型导入地图编辑器中,进行局部场景的编辑和整合,这就是引擎地图编辑器的另一重要功能—模型导入。在3dsMax中制作完成模型之后,通常要将模型的重心归置到模型的中心,并将其归位到坐标系的中心位置,还要根据各自引擎和游戏的要求调整模型的大小比例,之后就要利用游戏引擎提供的导出工具,将模型从3dsMax导出为引擎需要的格式文件,然后将这种特定格式的文件导入游戏引擎的模型库中,这样场景地图编辑器就可以在场景地图中随时导入调用模型。图1-22为虚幻3游戏引擎的场景地图编辑器操作界面,右侧的图形和列表窗口就是引擎的模型库。图1-22虚幻3引擎的模型库界面1.4.3添加粒子及动画特效图1-23虚幻3引擎特效编辑器操作界面
CHAPTER2
Unity3D引擎基础讲解2.1Unity3D引擎介绍2.2Unity3D引擎软件的安装2.4Unity3D引擎软件菜单讲解2.3Unity3D引擎软件界面讲解2.1Unity3D引擎介绍Unity3D是由UnityTechnologies公司开发的综合性专业游戏引擎,可以让用户轻松创建诸如三维游戏、建筑可视化、实时渲染动画等类型互动内容的多平台开发工具。到目前为止Unity3D的最新版本已经发展到了4.3版(见图2-1)。图2-1Unity3D4.3引擎编辑器的启动LOGO
下载完成后双击Unity3D引擎编辑器安装程序的图标,开始进入软件的安装流程,如图2-7所示。图2-7启动安装程序
单击Next按钮进入许可协议面板,然后单击IAgree同意安装,如图2-8所示。图2-8软件安装许可协议
下一步需要选择想要安装的程序组件,如图2-9所示,整个引擎编辑器除了Unity主程序外还包括范例项目、Unity网页播放器和Monodevelop3个附属组件,将其全部点选然后单击Next按钮,进入下一步安装。图2-9安装程序组件
然后选择软件程序的安装路径(见图2-10),默认路径为“C:\ProgramFiles\Unity\Editor\”,需要大约3GB的硬盘空间,然后单击Install按钮,这样Unity3D引擎编辑器就安装完成了。图2-10选择程序安装路径2.3Unity3D引擎软件界面讲解
变换辅助工具,左侧按钮用来切换物体对象移动、旋转和缩放的中心点位置,Pivot是将中心点固定于物体的重心,单击切换为Center模式,将中心点固定于物体的中心。右侧的按钮是对操作物体的自身坐标系和全局坐标系进行切换,Local为自身坐标系,单击切换为Global全局坐标系。自身坐标系是指针对于对象物体自身而言,而全局坐标系则是针对于整个场景世界。
工具栏中间的三个按钮是针对于游戏视图的操作,分别为播放运行、暂停播放和逐帧播放操作。层级下拉菜单用于控制场景中选中物体对象的显示。布局下拉菜单可以设置Unity3D引擎编辑器的界面布局方式,默认有四种方式,用户可以对视图进行随意的布局,并可以在布局菜单中进行保存。2.3.4SceneView场景视图场景视图窗口是整个Unity3D引擎编辑器中最为重要的部分,因为对引擎编辑器的大部分编辑与操作都是在场景视图中完成的,这类似于3dsMax的视图窗口,在场景视图中我们可以编辑游戏的场景、环境、玩家角色、摄像机、灯光、NPC、怪物等所有的游戏对象(见图2-15),要想熟练掌握Unity3D引擎编辑器必须先从学会场景视图的操作开始。图2-15Unity引擎编辑器中的场景视图
Unity3D场景视图的操作方式非常多样,与3dsMax视图的操作不同,Unity3D场景视图除了基本的视图旋转、平移和缩放外,还具备多种第一人称交互式的操作方法,下面来介绍下场景视图的几种不同操作方式。(1)按住Alt加鼠标左键,可以对视图进行旋转操作。(2)按住Alt加鼠标中键,可以平移拖动当前视图。(3)按住Alt加鼠标右键,可以对视图进行缩放操作。(4)键盘上的“↑↓←→”方向键可以实现在视图X/Z平面内的前后左右移动。(5)按住鼠标右键进入飞行穿越模式,通过鼠标旋转视角,使用键盘上的“W(前)、S(后)、A(左)、D(右)、Q(上)、E(下)”键进入快速移动的第一人称导航视角。(6)另外视图中还有一个非常重要的操作方式,当我们在视图窗口中选择了游戏对象的时候,通过键盘上的“F”键可以实现快速定位,将其显示在视图的中心位置,这也是引擎编辑器制作游戏场景的一个常用操作。
工具栏面板最左侧的按钮会根据视图操作方式的不同而改变图标。这是平时视图时的显示状态;这是移动或旋转视图时的显示状态;这是缩放视图时的显示状态。
在场景视图窗口的右上角有一个显示坐标轴的小图标,这是一个场景视图辅助工具,可以显示场景摄像机的当前方向,可以通过单击不同的坐标轴向来快速改变当前视图的视角。按住Shift键单击场景视图辅助工具可以使视图在等距模式和透视模式之间进行切换,等距模式和透视模式类似于3dsMax中的用户视图与透视图的关系,如图2-16所示,左侧为透视模式,右侧为等距模式。图2-16场景视图的透视模式(Persp)与等距模式(ISO)
在场景视图上方是场景视图控制条,这里包括两个下拉菜单和两个按钮,如图2-17所示。第一个下拉菜单用来选择场景视图的显示模式,包括Textured(纹理模式)、Wireframe(线框模式)和Tex-Wire(纹理线框叠加模式),这与3dsMax视图中的显示方式基本类似。第二个下拉菜单是对于场景视图渲染模式的选择,包括RGB、Alpha、Overdraw和Mipmaps四种模式,无论是场景视图显示模式还是渲染模式都只会作用于当前视图,而不会对最终生成的游戏产生任何影响。后面的两个按钮分别为“场景照明”和“游戏叠加”,启用场景照明会让当前场景视图显示游戏中的实际光照效果,游戏叠加则是在场景视图中显示天空盒子(Skybox)、GUI(游戏界面)等对象元素。图2-17场景视图控制条2.3.5GameView游戏视图游戏视图是在Unity3D引擎编辑中模拟最终游戏的显示效果,游戏视图需要在场景中放置摄像机才能启用,关于场景摄像机的设置我们会在后面的章节中详细讲解。在设置好游戏场景摄像机后,可以通过工具栏面板中的播放按钮启动游戏视图模式来模拟游戏中的实际操作效果,如图2-18所示。图2-18Unity引擎编辑器游戏视图
在游戏视图上方是游戏视图控制条,包括一个下拉菜单和三个按钮。下拉菜单是对游戏视图显示比例的设置,可以根据不同的显示器设置不同的显示长宽比。右侧的MaximizeonPlay按钮启用后,进入运行模式时将全屏幕最大化显示游戏视图。Gizmos按钮启用后,所有在场景视图中出现的Gizmos也将出现在游戏视图画面中,这包括使用任意Gizmos类函数生成的Gizmos。最后是Stats状态按钮,启用后将在游戏视图窗口中显示渲染统计的各种状态数值,如图2-19所示。图2-19启用Stats按钮生成的渲染统计数据2.3.6Inspector属性面板Unity引擎编辑器所搭建的游戏世界场景由多种游戏对象组成,包括网格物体(模型)、脚本、声音、光照、粒子和物理特效等,属性面板就用于显示这些游戏对象的详细信息,包括所有的附加组件以及它们属性的面板窗口。对于游戏物体的所有属性、参数、设置甚至脚本变量都可以在属性面板中直接进行修改,而不必进行繁琐的脚本程序编写,如图2-20所示。这就是游戏引擎编辑器的强大所在,同时这也是为了简化游戏研发流程,方便美术和企划人员可以更好的进行游戏制作。图2-20属性面板2.4Unity3D引擎软件菜单讲解
Unity3D引擎编辑器的菜单栏中一共包含八个菜单选项:File(文件)、Edit(编辑)、Assets(资源)、GameObject(游戏对象)、Component(组件)、Terrain(地形)、Window(窗口)和Help(帮助)。2.4.1File文件菜单表2-1续表图2-21File文件菜单2.4.2Edit编辑菜单表2-2续表图2-22Edit编辑菜单2.4.3Assets资源菜单表2-3图2-23Assets资源菜单2.4.4GameObject游戏对象菜单表2-4图2-24GameObject游戏对象菜单2.4.5Component组件菜单表2-52.4.6Terrain地形菜单表2-62.4.7Window窗口菜单表2-7续表2.4.8Help帮助菜单表2-8Unity3D游戏场景设计实例教程
CHAPTER3
Unity3D引擎的系统功能3.1地形编辑功能3.2模型编辑功能3.4Shader系统3.3光源系统3.5粒子系统3.6动画系统3.7物理系统3.8脚本系统3.9音效系统3.10Unity3D的输出功能3.1地形编辑功能Unity3D的地形编辑功能主要包括场景地形的创建与绘制、地表贴图的绘制、地面树木的绘制、草地植被以及网格物体的绘制、场景地形参数设置这五大方面。在Unity3D引擎编辑器中点开Terrain菜单,通过CreateTerrain命令可以创建一个新的场景地形,同时我们可以利用菜单中的其他命令对地形进行相应设置,如图3-1所示。图3-1利用菜单命令创建地形
场景地形创建出来后,在视图右侧的Inspector属性面板中会出现地形编辑器的窗口,地形编辑器主要包括五个面板窗口:Transform(变形)、Terrain(地形)、Brushes(笔刷)、Settings(设置)和TerrainColliders(地形碰撞),如图3-2所示。图3-2Inspector面板中的地形编辑工具
Terrain面板左侧第一个按钮为Raise&LowerTerrainHeight(拉升和降低地形高度),激活之后通过选择合适的笔刷和设置笔刷的力度及范围可以进行地表的绘制,在视图中利用鼠标左键可以拉升地表地形,如图3-3所示。图3-3利用笔刷工具拉升地形的效果
按鼠标Shift键可以对地形进行降低操作,默认状态下降低操作最大可以将地形还原为初始的平面状态,如果在开始创建地形后,利用Terrain菜单中的FlattenHeightmap命令将地形平面整体抬高,就可以利用Shift键将地形制作出凹陷效果,如图3-4所示。图3-4利用笔刷工具降低地形的效果
Terrain面板左侧第二个按钮为PaintHeight(高度绘制),这个工具用来绘制指定高度的地形,当按钮激活后可以通过Settings面板设置想要绘制的高度,然后通过鼠标左键绘制地形,这时地形绘制的表面会向指定的高度进行拉升操作,直到到达指定高度位置,最终形成类似于高地平台的地形地貌,如图3-5所示。图3-5利用绘制高度笔刷编辑地形效果
Terrain面板左侧的第三个按钮是SmoothHeight(光滑高度),在按钮激活后通过笔刷绘制对地形进行柔化处理,让地形产生平滑的过渡效果,如图3-6所示。图3-6利用光滑笔刷柔化地形效果
以上就是地形绘制的3种基本模式,通过不同笔刷和参数的相互配合来制作出游戏场景中的地形和山脉。第四个按钮为PaintTexture(纹理绘制),用来对制作完成的地形场景进行地表贴图的绘制,激活选项后会在下方出现Textures纹理面板,通过EditTextures按钮下的AddTextures命令添加地表贴图,在弹出的面板窗口中选择地表贴图和贴图的平铺数值,如图3-7所示。图3-7添加地表贴图面板窗口
TileSizeX/Y平铺数值越大贴图的重复次数越多,这个要根据地形的实际尺寸来决定,TileOffsetX/Y是设置贴图的位移,通常较少用到。然后单击Add按钮,这样地表就会被选择的初始贴图所覆盖,如图3-8所示。图3-8地表贴图平铺覆盖的地形效果
初始地表贴图设置完成后,可以继续添加导入多张地表贴图,然后通过不同的笔刷以及调节笔刷大小、透明度、力度等进行不同贴图纹理的绘制。Terrain面板第五个按钮是PlaceTrees(种植树木),按钮激活后我们可以在Trees面板中添加导入想要种植的树木模型,然后通过笔刷绘制的方式在地表场景中大面积种植树木模型,按住Shift键可以对绘制结果进行擦除操作,如图3-9所示。图3-9在地表种植树木
在Settings笔刷设置面板中共有七项参数设置,参数的功能含义如表3-1所示。表3-1
Terrain面板第六个按钮为PaintDetails(细节绘制),这个工具主要用来绘制地表草地植被与岩石,激活后在Details面板中可以通过AddGrassTexture和AddDetailMesh命令分别添加草植物模型与岩石模型,单击添加命令后分别弹出面板窗口,如图3-10所示,下面通过表格针对各个面板的参数进行讲解说明。图3-10添加草和网格模型的面板窗口表3-2续表表3-3
完成各自的参数设定后,通过选择合适的笔刷以及笔刷设置就可以进行地表草地和岩石的绘制,单击鼠标左键进行绘制,按住Shift键并单击可以对绘制对象进行擦除操作,草地和岩石的绘制效果如图3-11所示。图3-11在地表上添加草地和岩石模型3.2模型编辑功能
Unity3D引擎支持3dsMax、Maya、Lightwave和Cinema4D等主流三维软件制作的三维模型,可以读取诸如.FBX、.dae(Collada)、.3DS、.dxf及.obj等文件格式。对于3dsMax来说通常将制作完成的三维模型导出为.FBX格式,然后将FBX文件及贴图放置在Unity3D的资源文件夹下,这样就可以在Unity引擎编辑器中导入读取制作完成的三维模型,如图3-12所示。
三维模型导入Unity3D引擎编辑器后,可以通过Inspector属性面板对三维模型进行编辑操作,包括模型位置、旋转和缩放的设置、渲染模式及光影效果的设置、模型动画设置、物理碰撞设置以及贴图材质的指定等。图3-12将三维模型导入Unity引擎编辑器3.3光源系统
在Unity3D引擎编辑器中可以通过GameObject菜单下的CreateOther(创建其他)来创建场景灯光,如图3-13所示。图3-13从Unity引擎编辑器菜单中创建灯光
Unity引擎可以创建DirectionalLight(方向光)、PointLight(点光源)、Spotlight(聚光灯)和AreaLight(区域光源)四种形式的光源。方向光、点光源和聚光灯通常作为游戏场景中的实时光源,而区域光源一般不作为场景即时光源使用,主要用于制作场景光影烘焙贴图。PointLight(点光源)、Spotlight(聚光灯)、DirectionalLight(方向光)三种光源的光照方式和范围如图3-14所示。图3-14三种光源的照射方式和范围
DirectionalLight(方向光)通常作为游戏场景中的主光源,用来模拟自然场景中的日光或月光,对场景中所有模型物体都产生光影投射,如图3-15所示,方向光在硬件图形处理上耗费的资源最少。图3-15场景中方向光的效果
PointLight(点光源)是从一点向周围各个方向平均发散光线的光源类型,与3dsMax灯光系统中的Omni灯功能基本相同,点光源一般作为游戏场景中的辅助光源,通常作为火把、灯光或者特效光来照亮局部场景,如图3-16所示,相对于DirectionalLight来说,PointLight耗费较多的硬件资源。图3-16场景中点光源的效果
Spotlight(聚光灯)是按照一定方向在圆锥体范围内发射光线的光源类型,与3dsMax灯光系统中的聚光灯基本相同,在游戏场景中也是作为辅助光源存在,相对于点光源来说,聚光灯这种光源类型在游戏场景中应用比较少,一般常用于表现汽车车头灯或特殊灯柱,如图3-17所示,相对于前两种光源来说,Spotlight最耗费硬件资源。图3-17场景中聚光灯的效果
在Unity3D引擎编辑器中创建出光源后,可以在Inspector属性面板的Light面板下对其属性和参数进行设置,如图3-18所示。图3-18Inspector面板中的灯光参数设置
在Light面板中,Type用来选择光源类型,分为DirectionalLight(方向光)、PointLight(点光源)和Spotlight(聚光灯)三种。Range用来设定光源的照射范围。Color是设置光源的光照颜色。Intensity为光照强度,点光源和聚光灯默认值为1,方向光默认为0.5。Cookie可以为光源添加一个Alpha贴图作为遮罩,如果光源为聚光灯或方向光,遮罩为2D贴图,如果是点光源,遮罩为立方图(Cubemap),图3-19所示为三种不同光源的遮罩效果。图3-19三种不同光源的遮罩效果
光源系统作为Unity引擎中的最重要系统之一,它直接决定了游戏最终的画面效果和引擎的渲染速度,场景中多种光源的配合应用必须要权衡好光照质量和游戏运行速度之间的关系,在保证画面效果的前提下尽量多用顶点渲染模式,减少像素渲染的光照模式。3.4Shader系统
Shader的行业术语称为“着色器”,它其实是一段针对3D对象进行操作,并被电脑GPU(图形处理器)所执行的程序代码,通过这些程序可以获得绝大部分的3D图形效果。Shader分为VertexShader(顶点着色器)和PixelShader(像素着色器两种),其中VertexShader主要负责顶点的几何关系的运算,PixelShader主要负责片源颜色的计算。着色器替代了传统的固定渲染管线,可以实现绝大多数的3D图形计算,由于其可编辑性,可以实现各种各样的图像效果而不受显卡固定渲染管线的限制,这极大地提高了图像画面的画质。
一个常规的三维粒子系统必须具备粒子发射器、粒子动画和粒子渲染三大部分,想要制作出动态的粒子效果,这三者缺一不可。粒子发射器负责产生粒子,粒子渲染负责特效的最终呈现,利用这两者可以制作出静态的粒子效果,而粒子动画才是真正让粒子实现动态效果的关键,粒子动画也是现在粒子系统中最为复杂的部分,强大的粒子系统可以实现粒子动画的逻辑化运动流程,甚至可以让粒子具备一定的智能化形态。
Unity3D在4.0之前的粒子系统相对于目前主流的游戏引擎来说不能算特别强大,但已经可以制作出游戏中用到的绝大多数的粒子特效,比如火焰、烟雾、水浪水花、爆炸、法术效果等(见图3-30)。在Unity3D引擎发布4.0版本的时候,将自身的粒子系统重新命名为Shuriken(忍者镖),并大幅度优化了粒子的碰撞检测,支持多线程处理,相应也提升了粒子动画的功能特性。图3-30利用Unity引擎制作的粒子特效
在新版Unity3D中内置了一套功能强大的动画系统—Mecanim,Mecanim是一个完整的游戏动画解决方案,它与Unity引擎原生集成,对动画进行优化处理以便在Unity引擎上运行,Mecanim可以在编辑器中得到直接创建和构建肌肉剪辑、混合树、状态机和控制器所需的全部工具和工作流程。
Mecanim系统主要有以下特色。(1)为人形角色动画制作提供简单的工作流程。(2)动画重定向功能,能够把一个动画剪辑应用到多个不同的模型角色上。(3)便捷的动画片段剪辑、编辑、交互、预览工作流程。(4)使用可视化的编辑工具对游戏动画间的复杂交互进行管理,如图3-31所示。(5)对于角色动画身体的不同部位使用不同的逻辑动画控制。图3-31可视化的动画编辑工具
随着游戏引擎技术的发展,物理引擎的概念被逐渐引入了三维游戏制作当中,物理引擎可以让虚拟世界中的物体运动符合真实世界的物理定律,增加游戏的真实感。Unity3D的物理系统基于PhysX物理引擎技术,在引擎编辑器中包括刚体、碰撞器、角色控制器、物理材质、关节等几大模块。
Collider(碰撞器)是一种物理系统组件,它可以用来设置物理碰撞的范围,这类似于场景制作中碰撞盒的概念,碰撞器必须与刚体一起添加到模型物体上才会发生碰撞反应。可以从引擎编辑器Component菜单下的Physics选项中添加碰撞器,碰撞器一共分为五种类型:BoxCollider(盒式碰撞器)、SphereCollider(球形碰撞器)、CapsuleCollider(胶囊碰撞器)、MeshCollider(网格碰撞器)和WheelCollider(车轮碰撞器),其中常用的为盒式碰撞器、球形碰撞器和网格碰撞器三种。
BoxCollider盒式碰撞器是基于BOX立方体外形的原始碰撞器组件,将其添加到模型物体后可以从Inspector面板中进行参数设置(见图3-34),包括碰撞器大小、中心、触发器以及物理材质等,如果勾选IsTrigger选