书名: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中该界面有所不同,新增了其他一些选项。——译者注