书名:Unreal Engine 4 游戏开发指南
ISBN:978-7-115-51621-3
本书由人民邮电出版社发行数字版。版权所有,侵权必究。
您购买的人民邮电出版社电子书仅供您个人使用,未经授权,不得以任何方式复制和传播本书内容。
我们愿意相信读者具有这样的良知和觉悟,与我们共同保护知识产权。
如果购买者有侵权行为,我们可能对该用户实施包括但不限于关闭该帐号等维权措施,并可能追究法律责任。
著 [印度] 萨提斯•PV(Satheesh PV)
译 王晓慧
责任编辑 谢晓芳
人民邮电出版社出版发行 北京市丰台区成寿寺路11号
邮编 100164 电子邮件 315@ptpress.com.cn
网址 http://www.ptpress.com.cn
读者服务热线:(010)81055410
反盗版热线:(010)81055315
Copyright ©2016 Packt Publishing. First published in the English language under the title
Unreal Engine 4 Game Development Essentials.
All rights reserved.
本书由英国Packt Publishing公司授权人民邮电出版社出版。未经出版者书面许可,对本书的任何部分不得以任何方式或任何手段复制和传播。
版权所有,侵权必究。
Unreal Engine 4是一套具有高度可移植性的游戏开发工具,它不仅可以开发2D游戏,甚至可以实现炫酷的视觉效果。本书旨在讲述如何通过Unreal Engine 4开发引人入胜的电子游戏。本书介绍了Unreal Engine 4的基础知识,如何下载引擎和导入资源,如何创建材质,如何通过后期处理技术增强场景的外观,如何使用光照提升场景的真实感,如何使用蓝图构建游戏原型,如何使用Matinee和级联粒子编辑器增强游戏的视觉效果,如何通过创建UMG控件为角色创建生命条,如何在Unreal Engine 中编写C++代码,如何打包和发布游戏。
本书适合想要学习游戏设计与开发的读者阅读。无论是游戏开发领域的新手,还是普通的游戏爱好者,抑或是想成为游戏开发高手的读者,都能从本书获益。
王晓慧,北京科技大学机械工程学院工业设计系副教授。2014年于清华大学计算机系获得博士学位,研究方向包括情感计算、虚拟现实、信息可视化、交互设计、数字化非物质文化遗产等。她是中国计算机学会会员、中国心理学会会员、中国图像图形学学会会员、中国工业设计协会信息与交互设计专业委员会高级会员。在IEEE Transactions on Affective Computing、The Visual Computer、ACM Multimedia和ICIP等重要国际刊物上发表论文20余篇。主持的项目包括国家自然科学基金1项、北京市社会科学基金1项、北京市科技计划项目1项、中国博士后科学基金1项、中央高校基本科研业务费两项、CCF-腾讯犀牛鸟创意基金1项、北京科技大学-台北科技大学专题联合研究计划1项等。其中,自主研发的虚拟现实数字工厂系统擅长大规模模型处理,已成功应用于核电站、石化、检测仪器等工业领域。编写过《Unreal Engine虚拟现实开发》,翻译过《精通Unreal游戏引擎》《网络多人游戏架构与编程》。获得第十四届(2018)光华龙腾奖中国设计业十大杰出青年百人榜、2018年人民邮电出版社异步社区优秀作者奖、ACM Multimedia 2012重大技术挑战奖等荣誉。担任International Journal of Communication Systems、Neurocomputing和《自动化学报》等期刊的审稿人。主讲本科生的“交互设计技术”“信息可视化”“可视化人文”“智能产品技术”“游戏设计”课程,研究生的“人工智能技术与设计应用”课程。
Satheesh PV是一位生活在印度孟买的游戏程序员。他被Epic Games选为Unreal Engine 4公开发布之前的封闭测试版测试人员之一。他通过在2012年与他的兄弟和好朋友使用Unreal Engine开发工具包开发了第一人称多人游戏,开始了自己的职业生涯。他还创建了Unreal X-Editor,这是一个为UnrealScript开发的集成开发环境,是Unreal Engine 3的脚本语言。他还是Unreal Engine论坛的主持人、重要成员和引擎贡献者。
Omer Shapira是一位艺术家、软件开发人员和虚拟现实研究人员。他曾在耐克、谷歌、微软、迪士尼、环球影业和三星等公司从事游戏引擎项目的相关工作。他的作品已经在圣丹斯电影节、大西洋电影节、《纽约时报》杂志、《卫报》杂志、《连线》杂志、Adage网站和Eyebeam网站上展出,并在翠贝卡电影节(Tribeca Film Festival)、奥地利电子艺术节(Ars Electronica)、国际艺术指导协会(Art Directors Club)上获奖,还荣获了威比(Webbys)奖。
Omer Shapira目前是体验设计工作室Fake Love的虚拟现实和游戏引擎主管。之前,他曾在Framestore、纽约大学媒体研究实验室和麻省理工学院媒体实验室担任开发人员,并担任第10频道的电影制作人和VFX艺术家。Omer Shapira曾在特拉维夫大学学习数学,并在纽约大学学习人机交互。
Omer Shapira编写的四维视频游戏Horizon(用Unreal Engine编写的)于2017年发布。
可以在omershapira网站上找到他。
感谢那些为我编写游戏引擎做出巨大贡献的人,他们是Ken Perlin、Casey Muratori、Jonathan Blow、Fred Ford和Paul Reiche III。
感谢我的父母Surya Mattu和Jenn Schiffer。
本书面向对虚幻引擎感兴趣的读者,旨在讲述如何制作电子游戏。本书会介绍什么是Unreal Engine、如何下载和使用它。本书将讲解Unreal Engine 4提供的一系列工具,包括材质、蓝图、Matinee、UMG、C++等。
第1章是本书的基础。该章介绍如何和在哪里下载Unreal Engine,了解源代码版本和启动器版本之间的区别。Unreal Engine安装(如果是源代码版本,则是编译)之后,展示Unreal Engine的用户界面。该章还讲述浏览器、BSP以及如何更改游戏的启动画面和图标。
第2章讲述在启动并运行Unreal Engine后如何将自定义的FBX资源导入Unreal Engine。该章还介绍碰撞、材质和细节级别(Level Of Detail,LOD)。
第3章讨论材质编辑器以及用于为资源创建着色器的一些常用节点。 在学习材质的基础知识后,将创建一个可以改变法线贴图强度的示例材质函数。
第4章讨论如何进行后期处理。该章将介绍如何重写默认的后期处理设置。接着,将讲述如何添加自己的后期处理体积(Post Process Volume),并展示一个简单但非常强大的功能——查找表。之后,我们将创建一个可以与后期处理一起使用的特殊材质,该材质能够突出显示世界场景中的用户自定义对象。
第5章是本书中承前启后的一章,介绍光照系统。首先,介绍基础知识,例如,如何放置光源和常规设置。然后,讨论有关Lightmass全局光照系统的更多信息,包括如何为资源正确设置UV通道,如何与Lightmass一起使用。最后,讲述如何使用Lightmass并设置Lightmass来构建场景。
第6章将阐述蓝图是什么以及Unreal Engine提供的各种类型的蓝图。蓝图是Unreal Engine的重要工具,允许艺术家和设计师快速地制作游戏原型(甚至制作游戏)。该章还将介绍不同的图表类型(如事件图表、函数图表、宏图表等),以及如何在运行时动态生成蓝图。
第7章重点介绍Unreal Engine 4在电影方面的用途以及与之相关的工具——Matinee。该章讨论什么是Matinee,如何创建Matinee资源以及如何使用用户界面。在介绍基础知识之后,该章将讨论如何操作Matinee中的对象,以及创建一个基本的过场动画,后面将使用蓝图来触发它。
第8章讲述如何创建基本的平视显示器(Head Up Display,HUD)以显示玩家的生命值。虚幻动态图形(Unreal Motion Graphics,UMG)是虚幻引擎中的UI创作工具。UMG用于创建玩家HUD、主菜单、暂停菜单等。该章还介绍如何创建3D小部件,这些小部件可以放置在世界场景中或附加到Actor类中。
第9章介绍一个非常强大和鲁棒的工具——级联粒子编辑器,并讲述如何创建粒子系统,因为没有良好的视觉效果就没有好的游戏。该章还展示如何将级联粒子编辑器与简单的蓝图脚本结合起来,以生成随机爆发的粒子。
第10章介绍C++。通过查看第三人称模板角色类,该章首先介绍如何获取Visual Studio 2015社区版以及C++的基础知识。然后,该章讨论如何扩展此角色类以增加对生命和生命恢复系统的支持,以及如何为蓝图编辑器提供变量和函数。
第11章是本书最后一章,该章将汇总本书的所有内容,包括一些技巧。最后,该章讨论如何创建游戏的发布版本。
在计算机上安装Unreal Engine 4.9或更高版本。
本书面向所有对使用Unreal Engine 4开发游戏感兴趣的人。如果你热衷于开发游戏并想了解Unreal Engine 4的基础知识及其工具,那么本书将帮助你快速开启这一旅程。Unreal Engine 4是为所有平台(包括移动设备和控制台)创建下一代视频游戏的开始。
本书采用一些样式来区分不同类型的信息。以下是这些样式的一些示例以及说明。
代码块格式如下。
void APACKT_CPPCharacter::RegenerateHealth()
{
if (Health >= GetClass()->GetDefaultObject<ABaseCharacter>()-
>Health)
{
Health = GetClass()->GetDefaultObject<ABaseCharacter>()-
>Health;
}
else
{
Health += RegenerateAmount;
FTimerHandle TimerHandle_ReRunRegenerateHealth;
GetWorldTimerManager().SetTimer( TimerHandle_
ReRunRegenerateHealth, this, &APACKT_CPPCharacter::RegenerateHealth,
RegenDelay );
}
}
新术语和重要词汇以粗体显示。在屏幕上(例如,在菜单或对话框中)看到的词汇会在本书中的显示方式如下。“登录后,可以通过单击Get Unreal Engine(获取虚幻引擎)下的按钮Download(下载)来下载启动器。”
用于显示警告信息或重要说明。
用于显示提示信息和技巧。
欢迎读者的反馈。让我们知道你对本书的看法——喜欢什么或者不喜欢什么。读者反馈对我们很重要,它可以帮助我们出版优质的图书。
要向我们发送一般的反馈,只须发送电子邮件至feedback@packtpub.com,并在邮件主题中提及本书的书名即可。
如果你对某一方面有专业的见解,有兴趣撰写图书或为图书贡献内容,请参阅packtpub网站上的作者指南。
既然你购买了Packt图书,那么在你购买的同时可以获取配套资源。
可以登录packtpub网站并下载本书的示例代码文件。如果你在其他地方购买了本书,则可以访问packtpub网站并进行注册,文件将直接通过电子邮件发送给你。
请按照如下步骤下载代码文件。
(1)使用你的电子邮件地址和密码登录或注册packtpub网站。
(2)将鼠标指针悬停在顶部的SUPPORT选项卡上。
(3)单击Code Downloads&Errata。
(4)在Search框中输入图书的名称。
(5)选择要下载代码文件的图书。
(6)从本书的购买来源的下拉菜单中进行选择。
(7)单击Code Download按钮。
下载文件后,确保使用以下最新版软件解压缩文件夹:
我们还为你提供了一个PDF文件,其中包含本书使用的屏幕截图/图的彩色图像。彩色图像将帮助你更好地了解输出的变化。可以从packtpub网站下载此文件。
虽然我们已经尽力确保内容的准确性,但确实也会发生错误。如果你在某本书中发现错误(可能是文本或代码的错误),请告诉我们,我们将不胜感激。这可让其他读者少走弯路,并帮助我们改进本书的后续版本。如果需要勘误,请通过访问packtpub网站,选择本书,单击Errata Submission Form链接,并输入勘误表的详细信息。一旦勘误得到验证,你的提交将被接受,勘误表将上传到我们的网站,或将它添加到现有勘误表中。
要查看以前提交的勘误表,请访问packtpub网站并在搜索字段中输入该书的名称。所需信息将显示在Errata部分。
互联网上的盗版书是所有媒体一直面临的问题。Packt非常重视保护版权。如果你在互联网上发现盗版的Packt图书,请立即向我们提供地址或网站名称,以便我们采取补救措施。
请通过copyright@packtpub.com与我们联系,并提供可疑盗版资料的链接。
感谢你帮助保护作者并为我们提供有价值的内容。
如果有关于本书的任何问题,可以发邮件至questions@packtpub.com,我们会尽力解决你的问题。
我借此机会感谢我的家人,他们是我真正的灵感来源。感谢他们在我撰写本书时给予的指导和持续的支持。感谢Epic Games向世界免费开放这样一款惊人的引擎!Epic Games团队是最棒的!
向我的未婚妻Gale Fernandes表示由衷的感谢,没有她的支持和建设性的意见,就没有本书。
还要感谢我的兄弟Rakesh PV指引我走进游戏世界和游戏技术的殿堂。通过他,我学到了与游戏相关的一切,我很自豪地说他是我的第一个导师。
向我的好朋友Alexander Paschall(Epic Games)、Chance Ivey(Epic Games)和Reni Dev表示深深的谢意,我与他们共同开发了我的第一款游戏。
我还要感谢良师益友Nathan Iyer(Rama)在C++编程方面的大力支持。他通过有关C++的精彩文章和例子,在Unreal Engine社区中教过很多人(其中也包括我)。他审阅了本书第10章,指出了技术错误并给出了修改建议。
最后,感谢Vasundhara Devi和Lucy Fernandes给我的欢乐时光。
本书由异步社区出品,社区(https://www.epubit.com/)为您提供相关资源和后续服务。
本书配套资源包括相关示例的源代码。
要获得以上配套资源,请在异步社区本书页面中单击,跳转到下载界面,按提示进行操作即可。注意,为保证购书读者的权益,该操作会给出相关提示,要求输入提取码进行验证。
如果您是教师,希望获得教学配套资源,请在社区的本书页面中直接联系本书的责任编辑。
作者和编辑会尽最大努力来确保书中内容的准确性,但难免会存在疏漏。欢迎您将发现的问题反馈给我们,帮助提升图书的质量。
当您发现错误时,请登录异步社区,按书名搜索,进入本书页面,单击“提交勘误”,输入勘误信息,单击“提交”按钮即可(见下图)。本书的作者和编辑会对您提交的勘误进行审核,确认并接受后,您将获赠异步社区的100积分。积分可用于在异步社区兑换优惠券、样书或奖品。
我们的联系邮箱是contact@epubit.com.cn。
如果您对本书有任何疑问或建议,请您发邮件给我们,并请在邮件标题中注明本书书名,以便我们更高效地做出反馈。
如果您有兴趣出版图书、录制教学视频,或者参与图书翻译、技术审校等工作,可以发邮件给我们;有意出版图书的作者也可以到异步社区在线提交投稿(直接访问www.epubit.com/selfpublish/submission即可)。
如果您所在学校、培训机构或企业想批量购买本书或异步社区出版的其他图书,也可以发邮件给我们。
如果您在网上发现有针对异步社区出品图书的各种形式的盗版行为,包括对图书全部或部分内容的非授权传播,请您将怀疑有侵权行为的链接发邮件给我们。您的这一举动是对作者权益的保护,也是我们持续为您提供有价值的内容的动力之源。
“异步社区”是人民邮电出版社旗下IT专业图书社区,致力于出版精品IT技术图书和相关学习产品,为作译者提供优质出版服务。异步社区创办于2015年8月,提供大量精品IT技术图书和电子书,以及高品质技术文章和视频课程。更多详情请访问异步社区官网https://www.epubit.com。
“异步图书”是由异步社区编辑团队策划出版的精品IT专业图书的品牌,依托于人民邮电出版社近30年的计算机图书出版积累和专业编辑团队,相关图书在封面上印有异步图书的LOGO。异步图书的出版领域包括软件开发、大数据、AI、测试、前端、网络技术等。
异步社区
微信服务号
异步社区提供了 “虚幻引擎基础视频课程”,旨在通过视频帮助读者快速掌握使用Unreal Engine 4开发虚幻游戏的方法和技巧。本课程由知名的Unreal Engine 培训机构开发和制作,通过详细的操作演示和经典的案例指导读者了解Unreal Engine 4的使用技巧。整个课程内容丰富、循序渐进,非常适合作为游戏开发人员、计算机专业的学生、游戏设计或美术相关专业的学生的配套学习资源。
购买本书的读者可以获得50元优惠券,在购买本视频课程时可以直接减免50元。
优惠券兑换码是QjCGKSJp(区分大小写)。
• 优惠券的使用方式:访问异步社区官网www.epubit.com,搜索 “虚幻引擎基础视频课程”,进入课程详情页,单击“立刻购买”按钮后,在订单结算页中单击“兑换优惠码”选项,输入优惠券兑换码,即可减免50元。
• 观看视频课程的方式:购买后,在“个人中心”页面的“内容中心”中,单击“我的订单”,可以看到已购买的课程。
注意,优惠券对于每个用户限用一次,优惠券在兑换后100天内下单购买有效。
欢迎阅读本书。本章首先讲述如何下载虚幻引擎的源代码版本和启动器版本,然后介绍Unreal Engine 4的用户界面和内容浏览器。
Unreal Engine 4是免费(包括之后所有的更新)下载和使用的。可以获得Unreal Engine 4的所有工具、免费示例内容、完整的C++源代码,包括整个编辑器的代码及其所有工具;还可以访问官方文档(包含教程和资源),以及UE4商店(它提供了大量免费和收费的内容)。
有两个不同的Unreal Engine 4版本可供下载。一个是启动器(二进制)版本,另一个是GitHub(源代码)版本。启动器版本和GitHub版本的区别如下。
下面介绍如何下载这两个版本。
要下载Unreal Engine 4的启动器版本,肯定需要启动器。下载启动器的步骤如下。
(1)访问unrealengine网站,使用你的账号登录。
(2)登录后,单击Get Unreal Engine(获取虚幻引擎)下的Download(下载)按钮下载启动器版本(见下图)。[1]
安装后第一次打开启动器时,会自动下载最新版本的Unreal Engine 4。[2]如果没有,那么选择Library(库)选项卡并单击Add Versions(安装新版虚幻引擎),如下图所示。这时出现一个新的引擎插槽,在这里选择虚幻引擎的版本并进行安装。
下载Unreal Engine 4的GitHub版本的步骤如下。
(1)创建一个GitHub账号(免费)。
(2)访问unrealengine网站,更新GitHub账号并单击Save(保存)按钮(见下图)。
将GitHub账号与Unreal Engine账号成功链接后,登录GitHub并找到Unreal Engine项目。
确保已将你的GitHub账号与Unreal Engine账号相关联。否则,无法看到Unreal Engine项目。
在项目页面上,执行以下操作。
(1)单击页面右上角的Fork。
(2)选择你的用户名,将Unreal Engine项目复制到你的GitHub库中。
(3)下载适用于Windows的GitHub(如果是Windows系统)或适用于Mac的GitHub(如果是Mac系统)并安装。
需要这个Git客户端来复制(下载)已经复刻的项目,对Unreal Engine 4按自己的要求进行更改,将更改作为合并请求提交给Epic以将它们集成到编辑器中。
要复制已经复刻的项目,步骤如下。
(1)启动GitHub并登录。
(2)如下图所示,单击Git客户端左上角的加号(+)。
(3)单击Clone(复制)选项卡并选择你的用户名(现在应该可以看到UnrealEngine)。
(4)勾选Clone UnrealEngine(复制虚幻引擎)并选择要保存虚幻引擎项目的文件夹。
(5)单击OK(确定)按钮。
(6)现在应该可以看到GitHub将Unreal Engine复制到你的硬盘上了。
复制完成后,找到该目录并运行Setup.bat文件。
(1)这将下载编译Unreal Engine 4所需的所有必要文件,并且安装Unreal Engine 4的所有必需文件。
(2)这可能需要一些时间,取决于你的网速,因为要下载超过2GB的文件。
Setup.bat运行完后,运行GenerateProjectFiles.bat,将生成Visual Studio解决方案文件。打开UE4.sln文件,现在已准备好编译自己的Unreal Engine 4的副本了。在Solution Explorer(解决方案资源管理器)中右击UE4,然后单击Build(构建),如下图所示。
根据系统硬件配置,这将需要15~60min的时间。所以坐下来,喝一杯咖啡,等Unreal Engine 4完成编译。
一旦Unreal Engine 4完成编译(或下载,如果使用的是启动器版本),则可以启动它。
编译引擎后的第一次启动可能会经历很长的加载时间。这是因为Unreal Engine 4将为平台优化内容以获得数据缓存。这是一次性过程。
出现启动画面后可以看到虚幻项目浏览器。执行以下步骤。
(1)选择New Project(新建项目)选项卡,这是创建新项目的位置(见下图)。
(2)在本书中,建议使用Blank Blueprint Project(空白蓝图项目)。因此,在Blueprint(蓝图)选项卡中,选择Blank(空白)项目。
(3)选择项目所需的平台。有Desktop/Console(桌面/游戏机)和Mobile/Tablet(移动设备/平板电脑)两个平台可用。可以任意更改这个设置,第二个设置是平台的图形设置。如果选择Desktop/Console(桌面/游戏机),最好使用Maximum Quality(最高质量)。如果项目是面向Mobile/Tablet(移动设备/平板电脑)的,应该选择Scalable 3Dor 2D(可缩放的3D或2D),这是针对低端GPU的。最后一个设置是从Epic添加一些Starter Content(初学者内容),它包含一些基本的网格、材质和纹理。也可以选择不包含Starter Content(初学者内容),因此该项目将仅包含所选项目的基本元素。
(4)请注意,在为Mobile/Tablet平台创建项目时,建议不要包含Starter Content(初学者内容),这将明显增加项目的包大小。
(5)设置项目名称,选择项目的保存位置。
(6)单击Create Project(创建项目)按钮启动UE4项目(见下图)。
下图是Unreal Engine 4的用户界面。[3]
Unreal Engine 4启动后,可以看到类似于前面屏幕截图的画面。如果选择了Starter Content(初学者内容),则默认显示此画面。如果跳过Starter Content(初学者内容),那么启动画面将会有所不同。
视口工具栏包含在整个关卡设计中使用的各种工具(见下图)。快速浏览一下它们。
可以在Editor Preferences(编辑器偏好设置)中调整平移、旋转和缩放工具的捕捉偏好设置。选择Edit(编辑)→Editor Preferences(编辑器偏好设置)→Viewport(视口),滚动到Grid Snapping。
可以通过按住鼠标右键(在使用W键、A键、S键和D键进行控制时)并向上或向下滚动鼠标滚轮来微调相机速度,以加快或减慢相机的移动速度。
可以通过更改Layouts(布局)选项来调整视口的布局,如下图所示。
本章后面将讨论如何使用二进制空间划分(Binary Space Partitioning,BSP)更改一些项目设置,如启动画面、游戏图标等。
Modes(模式)选项卡包含编辑器的5种模式(见下图),具体如下。
Content Browser(内容浏览器)是项目的核心,在此处创建、导入、查看、编辑、组织和修改游戏的所有资源。可以在Content Browser中重命名、删除、复制资源,在不同文件夹之间移动资源,就像在Windows资源管理器中一样。此外,在Content Browser中可以根据关键字或资源类型搜索特定资源,还可以通过添加“-”(连字符)作为前缀从搜索中去掉某些资源。
可以创建Collections(集合)组织常用的资源以便进行快速访问。
集合只是对资源的引用,而不会将资源移动到集合中。这意味着单个资源可以存在于多个集合中,可以创建无数个集合。
有3种类型的集合。
如果要将资源从一个项目移到另一个项目,则应右击该资源并选择Migrate(迁移),将该资源及其所有依赖项复制到新项目中。
通过按Ctrl + Shift + F快捷键或从菜单栏上的Windows(窗口)菜单打开Content Browser。可以同时拥有4个Content Browser实例。
当要将资源移动到不同文件夹或浏览不同文件夹中的各种资源时,以下窗口非常有用。
使用View Options可以执行以下操作。
可以从内容浏览器的右下角访问View Options(见下图)。
World Outliner(世界大纲)视图以树视图显示关卡中的所有Actor(见下图)。可以在World Outliner视图中选择和修改Actor。右击World Outliner视图中的Actor,将显示与Viewport(视口)中一样的上下文菜单,因此无须在Viewport(视口)中找到它们,也可对其进行修改。还可以将一个Actor拖动到另一个Actor并合并它们。
World Outliner视图可以搜索特定的Actor。在搜索词之前添加“-”(连字符)可以去掉特定的Actor,还可以通过在搜索词之前添加“+”强制完全匹配。
Details(细节)面板显示视口中选定对象的所有特定信息、实用程序和函数,以及所选Actor的所有可编辑属性,并根据所选Actor提供其他功能。例如,如果选择的是Blueprint(蓝图),Details面板将显示与该蓝图相关的所有内容,即变量、蓝图图表事件等;如果选择的是Static Mesh(静态网格)Actor,Details面板将显示应用了哪种材质和碰撞设置、物理设置、渲染设置等。Details面板可以被某个Actor锁定,不根据Actor的选择而变化。与内容浏览器类似,可以同时打开Details面板的4个实例。
使用鼠标和键盘可轻松浏览视口。浏览视口的高级说明请参见Unreal Engine 4 Document网站上关于ViewportControls的说明。
视口的左下角(见下图)有一个小问号按钮。单击它可以看到一些常用的视口快捷键。
既然对Unreal Engine 4的用户界面已经有了一些了解,我们就使用BSP创建一个简单的关卡。BSP是一种几何工具(也称为几何画笔或简称画笔),用于快速制作关卡原型(也称为勾画关卡)。一些开发人员更喜欢称BSP为构造实体几何(Constructive Solid Geometry,CSG),这是更准确的术语,因为虚幻编辑器中的几何体是通过增减画笔来创建的。自从Unreal Engine首次发布以来,BSP就一直存在。虽然很久以前BSP用于关卡设计,但后来静态网格代替了BSP,因为BSP在性能上需要更大的开销。
所以基本上,BSP只用于构建关卡原型。一旦掌握了关卡的基本概念,就应该用静态网格替换它。
CSG和BSP都指代Unreal Engine中的几何体,两者是一样的。
Unreal Engine 4中有7种画笔,它们都可以在Details(细节)面板中自定义,具体如下。
就像Actor一样,可以使用Transform Tools(变换工具)根据需要进行移动、旋转和缩放。
有如下两种类型的画笔。
还可以将BSP几何体转换为Static Mesh(静态网格)并将它保存在Content Browser(内容浏览器)中,但请记住,它们没有UV或其他材质元素。值得一提的是,这不是一个好的或值得推荐的工作流程。建议只使用BSP勾画关卡,之后导入从DCC应用程序创建的资源。
可以切换到Geometry Editing(几何编辑)模式(按Shift + F5快捷键)来编辑顶点和创建自定义形状。
可以更改游戏和编辑器的默认启动关卡。例如,可能需要将Main Menu(主菜单)地图作为游戏的默认值,需要另一个关卡作为编辑器的默认启动关卡。
很容易在虚幻编辑器中设置默认启动关卡、启动画和游戏图标。
(1)单击菜单栏中的Edit(编辑)选项(见下图)。
(2)单击Project Settings(项目设置)。
(3)选择Maps & Modes(地图&模式)。
(4)更改游戏和编辑器的默认地图。
通过Project Settings(项目设置)调整Splash(启动)画面。
(1)切换到Windows部分(见下图)。
(2)在此处更改Splash(启动)画面和游戏Icon(图标)。
Splash(启动)画面的默认尺寸为600×200像素,并且需要.bmp图像。游戏Icon(图标)需要是256×256像素的.ICO文件。
既然你已经掌握了Unreal Engine的基础知识,就该从DCC应用程序(如Autodesk 3ds Max、Autodesk Maya或Blender)中导入一些资源了。在下一章中,我们将在Autodesk 3ds Max中创建一个简单的网格,并将它导入Unreal Engine中,进行各种操作,例如,设置材质、碰撞和LOD。
[1] 若网站更新,界面会有所不同,只须找到Download按钮即可下载。——译者注
[2] 在翻译本书时Unreal Engine 4的版本已经更新至4.21.1,界面有些变化。——译者注
[3] 版本不同,默认的启动画面也会有所不同。——译者注
上一章已经介绍了虚幻引擎的基础知识。本章介绍如何从Autodesk 3ds Max中导入资源。
上一章介绍了如何使用BSP创建关卡原型。然而,我们需要用静态网格替换它们,以获得更好的性能和更灵活地控制材质、碰撞等。首先在数字内容创作(Digital Content Creation,DCC)应用程序(如Autodesk 3ds Max、Autodesk Maya、Blender等)中创建模型,然后通过内容浏览器将其导入虚幻引擎中。Unreal Engine支持FBX和OBJ格式,建议使用FBX格式。
下图是本章中使用的示例资源。
在编写本书时,Unreal Engine导入流水线使用的是FBX 2014。使用其他版本可能会导致不兼容。
在建模时需要记住的一些事项如下。
要了解如何更改Autodesk 3ds Max的单位,请参阅Autodesk网站。要了解如何更改Blender的单位,请参阅katsbits网站。
创建碰撞网格并将它与资源一起导出。Unreal Engine 4为静态网格物体提供了一个碰撞生成器,但有时我们需要创建自定义碰撞形状,特别是当网格物体有一个开口时(例如,带有窗户的门或墙壁)。本节介绍自定义碰撞形状和碰撞生成器。
碰撞形状始终应尽量简单,因为计算简单形状要快得多。
碰撞网格由Unreal Engine导入器根据其名称进行识别。可以定义3种类型的碰撞形状,具体如下。
在下图中,可以看到线框对象,这就是为碰撞形状创建的。
在静态网格编辑器中生成静态网格物体的碰撞形状。要打开该编辑器,应在Content Browser(内容浏览器)中双击静态网格物体资源,单击Collision(碰撞)菜单,该菜单列出了碰撞的所有选项(见下图)。
Simple Shapes(简单形状)菜单中的前3个选项是简单形状(见下图),具体如下。
K离散定向多面体(K Discrete Oriented Polytope,K-DOP)形状基本上是包围盒的体积。数字(10、18和26)表示按照坐标轴排列的平面数量。
Auto Convex Collision(自动凸包碰撞)选项用于为模型创建更精确的碰撞形状。单击此选项后,静态网格编辑器的右下角会出现一个新的停靠窗口。使用Max Hulls(凸包数量,为了最匹配物体的形状要创建的凸包数量)和Max Hull Verts(最大外壳顶点数量,确定碰撞凸包的复杂性),可以为Static Mesh(静态网格)创建更复杂的碰撞形状。
如下图所示,应用自动凸包碰撞的结果相当准确。
碰撞形状支持变换(移动、旋转和缩放)操作,可以复制它们以获得多个碰撞形状的副本。单击静态网格编辑器内的碰撞形状,使用W键、E键和R键可以在移动、旋转和缩放之间切换。按Alt 键并单击拖动(或按Ctrl + W快捷键)复制现有碰撞形状。
Unreal Engine可以导入从3D应用程序中导出的材质和纹理并应用于网格。Autodesk 3ds Max仅支持基本材质,它们是Standard(标准的)材质和Multi/Sub-Object(多/子对象)材质。在这些基本材质中,仅支持特定的功能。这意味着FBX不会导出所有设置,但支持该材质类型中使用的某些贴图或纹理。
在以下示例中,可以看到分配了多个材质的模型。
为Multi/Sub-Object(多/子对象)材质中的每个子材质指定唯一的名称是非常重要的。每个子材质都有一个唯一的名称,如下图所示。
细节级别(Level of Detail,LOD)是一种当远离相机时减少网格影响的方法。与前一个LOD相比,每个LOD将具有更少的三角形和顶点数量,并且具有更简单的材质。这意味着基础LOD(LOD 0)将是玩家靠近时出现的高质量网格。随着玩家远离该物体,它会变为LOD 1,相对于LOD 0减少了三角形和顶点数量。当玩家走得更远时,它切换到LOD 2,具有比LOD 1少得多的三角形和顶点。
下图展示了LOD的作用。左边的网格是基础LOD(LOD 0),中间是LOD 1,右边是LOD 2。
有关LOD的更多信息,请参考“Creating and Using LODs”文章。
下面介绍如何导出网格,以及把网络导入至虚幻引擎中。
导出网格是非常简单的过程。可以将多个网格导出为一个FBX文件,也可以单独导出每个网格。Unreal Engine导入器可以将多个网格导入为单独的资源,或者通过在导入时启用Combine Meshes(合并网格)选项将它们合并为单个资源。
在下图中,可以看到已经选择了要导出的碰撞网格和模型。
在导出时应开启Smoothing Groups(平滑组),否则Unreal Engine将在导入时显示警告。
将网格物体导入虚幻引擎很简单。可以通过几种方式进行导入,下面详细解释这几种方式。
在Content Browser(内容浏览器)中右击,选择Import to(导入)选项,选择文件夹的名称(见下图)。
顾名思义,可以直接将FBX或OBJ模型从Windows资源管理器中拖动到Content Browser(内容浏览器)中,这就完成了导入。
Content Browser(内容浏览器)中有一个Import(导入)按钮(见下图),它可用于导入网格。
如果将FBX文件放在项目的Content(内容)文件夹(包括所有的子文件夹)中,则Unreal Engine将自动检测并触发导入过程(编辑器应处于打开状态,否则会在下次运行时执行该过程)。
可以选择启用还是禁用Auto Reimport这个选项。要配置该选项,请选择Edit(编辑)→Editor Preferences(编辑器偏好设置)→Loading & Saving(加载&保存)→Auto Reimport(自动重导入),如下图所示。[1]
在导入资源时,将显示FBX Import Options(导入选项)对话框。导入设置的所有信息如下图所示。
单击Import(导入)或Import All(全部导入,如果要导入多个FBX文件)按钮,将在Content Browser(内容浏览器)中看到该资源。下图展示了Unreal Engine如何从Autodesk 3ds Max中自动导入材质。
双击静态网格物体(Tower_Example),弹出静态网格物体编辑器。通过下图可以看到Unreal Engine成功导入了自定义碰撞形状。
本章介绍了如何导入资源。下一章将介绍有关材质和纹理的更多信息。
[1] 在Unreal Engine 4.21.1中该界面有所不同,新增了其他一些选项。——译者注