Unreal Engine 4.7 更新记录
Brandon Sieprawski 于 2015 年 2 月 25 日发布 | 张弢 翻译于 2015 年 2 月 27 日
虚幻引擎 4.7 版是迄今为止最大的一次更新,涵盖了大世界中海量实例化对象渲染、新的树叶与植被渲染、HDR 纹理贴图支持、编辑器内部动画编辑功能,以及数百项不同的优化与增强功能。
新功能概述
本次更新加入了多个备受期待的功能:
- 支持直接在关卡中使用组件(components)组装全新的对象(actors),甚至能通过蓝图(Blueprint)可视化脚本或 C++ 直接创建自定义的组件类型。
- 重新设计的新版蓝图编辑器界面,采用统一的界面布局。
- 虚幻编辑器可自动检测新的资源文件并自动导入,使资源导入变得前所未有的简单。
- HTML5 与 WebGL 就绪,只需简单点击鼠标即可发布游戏,并在兼容的网页浏览器上运行。
- 可在 Mac 主机上直接构建、打包、发布安卓平台的项目。
- 为虚拟现实设备开发者新增了’VR preview’功能,可直接在编辑器中进入 VR 显示模式。
- 可在代码级项目中直接访问手部动作感应器“Leap Motion”。
- 所有发行版本均包含全部 C++ 引擎代码,方便学习与调试。
此外,这个版本还包含来自虚幻开发者社群提供的 38 个优质内容。Epic 特别感谢 Sébastien Rombauts 带来的 Git source control 插件,同时也感谢以下各位的贡献: Artem V. Navrotskiy (bozaro), ArneBezuijen, Black Phoenix (PheonixBlack), codetackler, Daniel Zeligman (dzeligman), Derek van Vliet (derekvanvliet), Fazouane Marouane (fazouane - marouane), Jesus Fernandez (jsfdez), Lukasz Baran (iniside), Moritz Wundke (moritz - wundke), Michael Kösel (TheCodez), Michael Allar (Allar), Marat Radchenko (slonopotamus), Pedja Lubomirovic (3dluvr), Pierdek, Quadtree, Rama (EverNewJoy), Robert Wallis (robert - wallis), Rick Yorgason (Skrapion), Simon Taylor (simontaylor81), Stephen Whittle (stephenwhittle), Tobias Mollstam (mollstam), yaakuro
重要新功能详情
真实的植被光照
新的植物材质模式(Shading model)能够为草、叶片、纸张等材质提供可透射到背面的光照效果。具体表现如下:
- 漫射光照透射:漫射光照可将正对光源一面的光照透射到另一边。
- 透射光照混合:透射光照混合了正面固有色信息与视角关联背面透射。
- 次表面色彩过滤:可使用次表面色彩(Subsurface color)通道过滤光照,模拟厚度变化,例如添加叶脉效果。
- 半透明通道影响:在该材质模式下,使用半透明通道仅影响阴影的衰减距离。
在大世界中渲染大量植被
植被系统针对超大型、开放式场景进行了优化,拥有层级式系统来管理与剔除百万级植物场景。同时,增加了针对模型 LOD 的平滑视觉过渡,采用延时淡出方式抑制 LOD 切换时的闪烁。
关卡内组件编辑
组件(Components)可直接在关卡中添加到对象(Actors),无需事先创建蓝图类即可组装新对象,方便在关卡中实验新的功能组合。具体操作如下:
- 可在关卡中直接选择独立的组件,使用熟悉的操作器工具移动或编辑其属性。
- 完成调整后,点击“蓝图/添加脚本”(Blueprint / Add noxss)可保存为可复用的类或添加脚本,会自动覆盖之前的类。
可放置的空对象(Actors)
现在可拖放“空对象”(empty actors)进关卡,同时支持空 Pawn(Empty pawns)与空角色(Empty Character),便于利用新的关卡内组件编辑功能构建有趣的对象。
蓝图式组件
可直接使用蓝图(Blueprint)脚本创建自定义组件(components),并保存复用。创建步骤如下:
- 点击“添加组件”(Add Component),选择顶部的“新建蓝图脚本组件”(New Blueprint noxss Component…),可从内容浏览器中调用“新建蓝图”(New Blueprint…)窗口,或在关卡中的任意对象上创建。
- 为新组件选择父类,“场景组件”(Scene Components)有 3D 空间位置,“对象组件”(Actor Components)是逻辑脚本。
- 编写蓝图脚本代码,例如使用 Tick 事件驱动对象沿 Yaw 轴旋转,并将组件命名为“Spinner”。
- 可将组件拖放到场景对象或普通蓝图类中,新组件会显示在“添加新组件”(Add Component)菜单的’自定制’分类里,在内容浏览器中与其他组件相同。
资源自动导入
导入模型、音频、贴图变得极为简单,只需将资源源文件保存到项目内容文件夹,编辑器会自动导入。若用外部程序更新源文件,编辑器也会检测并自动导入,加快游戏内容迭代更新。该功能默认开启,可通过编辑器属性中的“载入与保存”(Loading & Saving)选项组中的“监视资源文件夹”(Monitor Content Directories)功能开关。
重新设计的蓝图编辑器 UI
为提升易用性,蓝图编辑器重新设计,将原有的三个编辑模式整合为统一窗口,并进行了多项改进:
- 可自由排布组合各个面板,预览视图与节点图谱等视窗可同时显示。
- “我的蓝图”(My Blueprint)视窗更整洁,便于添加新功能与变量。
- 在组件面板选择对象名,显示类的默认值,顶部工具栏可选择默认类或类设置并切换显示。
支持 HTML5 与 WebGL(Windows 平台)
可通过启动器打包游戏并在网络浏览器中运行,具体操作如下:
- 完成 Emnoxssen SDK 的安装,重启编辑器与启动器。
- 在启动按钮的下拉选项中选择一个网页浏览器。
使用 HTML5 时的注意事项:
- 开发过程需使用 Firefox、Safari 或 64 位版本 Chrome(shipping 版本可工作在 32 位版本的 Chrome 上)。
- 当前 HTML5 仅支持 Windows 平台,下一版本将支持 Mac。
- 游戏可能需额外准备工作才能运行,特别是首次开发 HTML5 项目,项目的资源与代码需为网页浏览器优化。
OPENEXR: 高动态范围 HDR 贴图
现在可使用 OpenEXR 格式导入 2D 的 HDR 贴图,每个通道可存储 16 位色深信息(约相当于 20 级曝光),而之前版本只能将 HDR 文件作为 Cube Map 导入。
使用 Mac 开发安卓版本
OSX 版本的引擎全面支持开发安卓版本,苹果电脑用户可构建、打包安卓版本程序,并通过编辑器或命令行工具发布到安卓设备上。具体步骤如下:
- 安装 Java for OSX 与安卓 SDK,可使用 Engine/Extras/Android 文件夹下的 TADP 安装。
- 安装完成后,重启编辑器或在项目设置中指定正确的 SDK 路径。
完整引擎 C++ 源代码与调试符
用启动器安装的虚幻引擎包含所有完整 C++ 源代码与调试符,可无缝接入引擎代码调试,程序崩溃时可获得完全的调用堆栈,无需自行编译引擎即可进行完整调试。但重新编译引擎仍需访问 GitHub 获取必要文件。
编辑器内直接使用 VR 模式
编辑器中新增’VR preview’按钮,插入 Oculus Rift 设备后,点击该按钮,编辑器窗口会最小化,游戏直接在 Oculus Rift 设备上弹出显示。
Leap Motion 手部动作感应器插件(BETA)
UE4 通过插件支持 Leap Motion 设备,可在项目中直接使用。相关 API 同时暴露给蓝图脚本与代码,适用于任何类型的项目。获取使用范例请访问 Leap Motion 的官方网站 https://www.leapmotion.com。目前该插件仅支持 GitHub 自编译版本的引擎,可在 Leap 网站上下载。
内容浏览器中显示 C++ 类
项目中的 C++ 类可在内容浏览器中显示,还能在内容浏览器中简单创建新的 C++ 类,自动编译并显示在编辑器中。双击 C++ 类图标可调用 Visual studio 或 Xcode 打开源码,右键点击可基于现有类创建新类。
MORPH TARGET 变形目标动画超限化
现在变形目标动画的权重值可超过 100% 或低于 0%,以获得超夸张的动画效果。
功能包与内容包
可在内容浏览器中方便地添加新的功能包与内容包,这些包可包含任意资源、蓝图类或 C++ 类。所有已有的模板项目功能已打包成功能包,例如可先添加第一人称功能包,再添加载具功能包,在项目中同时使用两套功能。添加方法为:在内容浏览器中点击“添加新的”(Add New),再点击“添加功能或内容包(Add Feature or Content Pack…)”,文件会导入项目,很多包包含的内置教程也会一并导入。甚至起始资源包(Starter Content)可随时导入项目,还有为移动平台优化的起始资源包可供选择。
动画编辑系统
可直接在 Persona 动画工具中编辑动画,具体操作如下:
- 拖动时间滑块,选择骨骼,使用操作器移动、旋转骨骼,并在当前时间设置关键帧,快捷键为“S”。
- 在 Persona 编辑器内,所有动画曲线编辑会存储到“叠加层”(additive layer),重新导入原始动画数据时,修改仍会保存。点击工具栏“应用”提交修改,可在游戏中看到动画变化。
- 可使用工具栏“Greate Asset”按钮创建新的动画,保存定制动画。
注意事项:
- 动画曲线可按需取消或删除。
- bake 完成后,只能输出 bake 完的动画,附加曲线不会输出。
- 重定向动画目标时,附加曲线不会被重定向,建议完成 Bake 后再执行重定向。
即时骨骼控制器预览
骨骼控制器节点可使用视图中的操作器直接进行交互式调整,目前该功能仅支持 TwoBoneIK、ModifyBone、Fabrik 三种解算器,后续会添加更多支持。
使用物理模拟解算创建动画
可在物理编辑器(PhAT)中通过录制物理模拟保存动画,点击工具栏“Record”按钮开始录制视窗中的物理交互,点击“Stop”,模拟结果将存储为动画。也可在关卡编辑器中捕捉动画:
- 在关卡编辑器工具栏上找到“Play”按键,在下拉选项中点击“Simulate”。
- 在场景中选中需要记录模拟动画的骨骼模型。
- 在模型上右键点击“Keep Simulated Changes”(或按“K”键)保存动画。
项目启动器
全新的项目启动器界面拥有更多控制选项,便于运行或打包游戏项目。它具备多项功能,可在多种不同设备、多种不同设置间快速测试项目,能更简单地定制不同的构建类型与打包设置,并在任意连接好的设备上启动项目。若需要以下功能,可使用自定义启动选项(Custom Launch Profiles)构建版本:
- 暴露所有高级选项。
- 选择特定需要构建的内容。
- 一次构建多个不同平台的版本。
- 打包与保存多个版本,在其他地方或稍后运行。
当然,仍可使用主工具栏上的’启动’按钮运行游戏,若需要更多灵活性,可通过“启动”按钮的下拉菜单或主菜单中的窗口菜单快速打开新的项目启动器。
蓝图合并工具
可使用新的蓝图合并工具将不同的蓝图合并,该工具会对两个蓝图进行可视化对比,帮助合并。调用方法如下:
- 在蓝图编辑器中点击文件 -> 合并。
- 在源码控制显示为冲突的组件上点击右键,选择合并。
- 使用命令行工具,运行: UE4Editor.exe -diff [options]
Git 源码控制插件 (BETA!)
感谢社区成员 Sébastien Rombauts 贡献的 Git 源码控制插件。将项目连接到 Git 存储区后,编辑器支持大部分源码控制功能,如添加、删除文件,提交修改,显示文件历史,比较文件,显示当前的源码控制状态等。
AI 感知系统: 支持蓝图脚本
AI 感知系统(AI Perception System)现在可使用蓝图脚本来设置,为 AI 添加 AI 感知组件后,即可观察、调整相关的属性与事件。
新的项目模板附带教程
每个新的项目模板都有简单的概要教程,介绍模板的组件构成与类的工作方式。在内容浏览器里点击教程预览图上的“播放”按钮,即可开始播放教程。内容包与功能包也可包含自己的教程,添加新包后可查看附带教程学习。
新的缩略图视觉效果
编辑器能够以新的彩色风格显示组件缩略图,同时 C++ 类与蓝图类可显示为交互式的 3D 缩略图,缩略图右下角的小图标会显示其父类。
PAPER2D: 增强了拼贴式地图编辑器
拼贴地图编辑器添加了一些有用的图层编辑功能:
- 各层可重新排序,可让特定层上移或下移。
- 可在选中的层上控制绘画,而非仅在最上面的层。
- 编辑过程中,被选中的层会被锁定。
- 被选中的层会渲染帮助网格,便于正确对齐其他未选中的层。
- 层命名功能与关卡概要视图相似。
- 层可以复制。
- 拼贴地图可在关卡中重用或实例化,成为资源组件。
- 新添加的层有更具可读性的命名。
注意:拼贴地图在虚幻引擎里仍是试验性功能。
PAPER2D: 翻页式动画碰撞检测
翻页式动画资源允许创建 2D 动画序列,现在可为其创建碰撞属性。翻页式动画资源有一组新的碰撞来源属性,控制碰撞数据的来源:
- 无碰撞(No Collision):该翻页式动画资源不进行碰撞检测。
- 使用第一帧碰撞(First Frame Collision):碰撞检测忽略动画,一直使用动画资源的第一帧数据。
- 每一帧都做碰撞数据(Each Frame Collision):碰撞数据基于动画的每一帧更新。
使用注意事项:
- 很多时候,在翻页式动画资源上附加一个碰撞体(如碰撞盒)即可,无需从图片资源中获取碰撞数据,特别是碰撞区域有重叠时。
- 角色移动依赖胶囊体碰撞检测,多数情况下胶囊体设置为碰撞所有(BlockAll),翻页式动画资源的碰撞应放在不同的碰撞通道,防止互相卡住(通常检测移动与阻挡使用胶囊体,检测互相穿插、碰撞或射线使用翻页式动画自己的碰撞)。
UI: 支持自定义光标
可在项目中使用软件光标创建自定义的控件(custom Widgets),控件可使用 UMG 的所有功能,如添加文字、血条、工具介绍等。软件光标在以下情况非常有用:
- 为不支持硬件光标的平台添加光标,如为主机游戏添加虚拟鼠标光标。
- 为光标添加丰富的视觉效果,如动画或其他复杂的视觉交互。
- 在 PC、Mac、Linux 各个平台上保持一致的光标视觉效果,无需为特定平台制作特定格式。
在项目设置中新的“用户界面”(User Interface)部分设置是否使用软件光标控件,未特殊设置则使用默认的硬件光标。需注意,软件光标的运动受限于游戏的帧率刷新,而非由操作系统渲染,这是该功能的主要权衡点。
UNREAL MOTION GRAPHICS: 新的 UI 控件绑定系统
新的 UI 控件绑定系统用于控件与子属性、功能集之间的绑定,是一项重大改进,极大提升了性能。使用新绑定系统的注意事项如下:
- 绑定基于可动态赋值的值域,而非蓝图脚本。
- 支持直接绑定 C++ 或蓝图功能集。
- 一些简单的转换自动处理(如线性颜色转换为 Slate 颜色,2D 贴图转换为 Slate 画刷)。
- 属性绑定速度提升约 10 倍。
- 旧的绑定方式仍可工作,为提升性能,建议升级到新的绑定系统。
可视化日志工具(AI 可视化工具)
全新的可视化日志工具功能丰富,旨在帮助更好地调整与修正游戏项目中的 AI 行为:
- 可记录事件,并通过强大的工具基于时间线搜索,可查看视频范例。
- 时间线上的对象有警告时显示为黄色,出现错误时显示为红色。
- 可在游戏暂停状态下使用特殊的调试摄影机在场景中运动观察。
- 可将可视化日志工具内容保存为状态报告,报告中带有超链接,便于快速过滤日志分析。
半透明对象排序控制
该功能允许手动设置半透明对象的渲染排序,对 2D 游戏非常有用。在项目的渲染设置中,勾选新的“半透明排序策略”(Translucent Sort Policy)选项,有以下排序方式:
- 基于距离排序(Sort by Distance):基于摄影机到对象的轴点之间的距离排序,常用于 3D 游戏。
- 基于 Z 轴投射距离排序(Sort by Projected Z):在后处理中计算摄影机空间的 Z 深度用于排序,可抑制摄影机旋转导致的对象渲染闪烁。
- 基于特定轴向排序(Sort Along Axis):排序基于特定轴向,主要用于 2D 游戏,该特定轴向称为半透明排序轴(Translucent Sort Axis),可在项目的渲染设置中编辑(默认轴向是 -Y)。
修正了蓝图中的循环依赖
蓝图的加载机制重新设计,能够处理任何“循环”情况,蓝图可进行各种混合、交叉调用,且下次循环时能正确加载。但过多的蓝图加载错误仍可能导致蓝图工作混乱。
UNREAL C++ 编程改进
持续改进使 C++ 在虚幻引擎中更易用,具体体现如下:
- 类的构造函数无需采取对象初始化参数。
- 创建虚幻类的子对象有简单语法。
- 可在一个 C++ 头文件里包含多个虚幻类。
- 可在头文件里声明特殊的虚幻类,即使文件里无对应类。
- 无需保持虚幻类的名字与源文件名一致。
- 可为属性使用任意命名,之前如“Color”等通用名字被保留不可用,现在无此限制。
多线程动画
动画姿势的解算分配到多核 CPU 的各个核心,降低了引擎解算动画的负载,提升了游戏中有大量骨骼模型时的性能。
在安卓设备上实现桌面级渲染 BETA (OPENGL ES 3.1 W/ AEP)
使用 OpenGL ES 3.1(加上安卓扩展包功能)可为高端安卓设备带来完全桌面级的渲染效果,目前该功能处于 Beta 测试阶段,期待反馈。具体使用方法如下:
- “ES3.1+AEP”是构建与打包时的可选目标平台。
- Nvidia 的 Tegra K1 设备(如 NVIDIA Shield Tablet)可用于开发,未来会有更多支持 AEP 的设备。
- 在安卓项目设置中打开“Enable OpenGL ES31 + AEP” 选项。
- 目前需从 GitHub 上获取源码,自己编译版本才能支持该功能。
- 仅依赖蓝图编程的项目也需重新编译 UE4Game 才能支持 OpenGL ES 3.1,需打开 BaseEngine.ini 设置文件中的 bBuildForES31 选项。
附加下载内容(DLC)打包BETA
附加下载内容 (DLC) 可单独打包用于发布,目前处于 beta 测试阶段,需使用命令行工具调用。创建附加 DLC 内容需放置在游戏插件内容文件夹中,使用新的打包工具选择对应平台优化与打包新内容。通过游戏的’资源组件注册表’(asset registry)确定哪些内容已被之前发行版的游戏包含,哪些需新的 DLC 包含并打包。使用方法为:运行主游戏打包工具并附加命令行开关“-CreateReleaseVersion=x.y”,针对每个 DLC 插件使用 “-BasedOnReleaseVersion=x.y -DLCName=MyPluginName”。
安卓平台电影文件播放
可在安卓设备上加载与启动影片,可在项目设置中配置启动影片。要在安卓设备上播放的影片必须是 MP4 格式,且安卓 4.0 以上版本才能支持影片播放。
在编辑器中直接设置安卓 SDK 路径
可在项目设置中的“安卓 SDK”属性中直接设置安卓 SDK 组件的路径,简化了初始安卓项目的设置。这些路径环境变量会覆盖原有的路径设置方式,若原设置正常,可让新变量为空。
访问非可编辑状态的蓝图变量
在 4.6 版中可访问其他蓝图中非可编辑状态的变量,4.7 版移除了该功能。
AI 黑板同步
黑板组件内可标记关键点为“同步的”(synced),这些同步的值可被所有 AI 使用,可在多个 AI 间同步状态或进行通讯。