2019年4月2日

虚幻引擎4.22现已发布!

作者 Jeff Wilson

 

 

全新内容

无论您在打造沉浸式游戏、电视实时直播、演示创新型产品,亦或是打造全新商业大片,虚幻引擎4.22版都能助您 在实时环境中实现无限接近于照片的真实效果。 我们认为高度进步的新技术并不应该造成项目开发周期的增加。因此,我们将眼光再度投向工作流程,致力于为各个行业的用户打造更为快速便捷的工作流

虚幻引擎强大的性能足以 用最精确的实时光照和阴影效果来构建真实场景。利用Nvidia RTX显卡的实时光线追踪,动态全局光照、像素完美反射及精确物理折射等效果均能一一实现。 而柔和的区域阴影和环境光遮蔽则能为场景增色不少,使真实感更上一层楼。

我们丰富的虚拟生产功能套件中加入了 采集录制复杂实时性能并对其进行即时合成 的功能,帮助您加快现有的工作流。整个团队得以利用全新的多用户编辑功能进行协同合作,对场景进行实时调整。

每一秒用以等待你所创建的最新内容展现到你眼前的时间都是成本,你的成本、你面向的用户的成本,以及对你想要达成的愿景的成本。因此我们正努力让虚幻引擎能在每个后续版本中都能变得 更易用和快捷,为开发者留出更多时间来完善和调整用户体验。全新的“实时代码编写”功能为虚幻引擎提供了Live++支持,所以 用户在运行项目时可以很快将想法变为现实。编译时间已得到全盘优化,增量编译的迭代时间最高可缩短3倍,以便空出流程中的重要资源。

此版本还包含了GitHub虚幻引擎开发者社区提交的174项改良!特此对虚幻引擎4.22版本的每位贡献者表达诚挚谢意:

0xmono、Adam Moss (adamnv)、Ahsan Muzaheed (muzaheed57)、Alessio Sgarro (cmp-)、Alexander Stevens (MilkyEngineer)、AlexTimeFire、AlSafty、Andrzej K. Haczewski (ahaczewski)、Anton Rassadin (Antonrr)、Ben Peck (bpeck)、BinaryRK、Branislav Grujic (grujicbr)、Cameron Angus (kamrann)、Cengiz Terzibas (yaakuro)、Chris Conway (Koderz)、Chris Gallegos (Chrispykins)、Clinton Freeman (freemancw)、Cristiano Carvalheiro (ccarvalheiro)、Dan Ogles (dogles)、Daniele Benegiamo (kafumanto)、David Aylaian (davidaylaian)、David Nadaski (GlassBeaver)、David Sauve (notanumber)、Deep Silver Dambuster Studios (DSDambuster)、Dmitriy Donskoy (sentik)、doodoori2、Dorgon Chang (dorgonman)、Doug Moscrop (dougmoscrop)、Doug Richardson (drichardson)、Dzuelu、Erik Dubbelboer (erikdubbelboer)、H1X4Dev、Hargreawe、hkozachkov2、Ilyin Aleksey (IlinAleksey)、improbable-valentyn、Ivan Popelyshev (ivanpopelyshev)、IvanKuzavkov、James Cahill (Prouser123)、Jan Kaniewski (getnamo)、Jin Hyung Ahn (zenoengine)、jkinz3、Joe Best-Rotheray (cajoebestrotheray)、joemmett、Josef Gluyas (Josef-CL)、Kalle Hämäläinen (kallehamalainen)、Kartik Saranathan (Kartiku)、korkuveren、Kory Postma (korypostma)、Leon Rosengarten (lion03)、locus84、lotodore、Marat Radchenko (slonopotamus)、Marcel (Zaratusa)、Mark Whitty (Mosel3y)、mastercoms、Mathias Hübscher (user37337)、Michael Kösel (TheCodez)、Michael Samiec (m-samiec)、Mike Bell (MichaelBell)、Mike Slegeir (tehpola)、Mimus1、Mitsuhiro Koga (shiena)、momboco、Morva Kristóf (KristofMorva)、Muhammad A. Moniem (mamoniem)、Nick (eezstreet)、Nick Edwards (nedwardsnae)、Nick Pruehs (npruehs)、Ondrej Hrusovsky (skylonxe)、Paul Hampson (TBBle)、Philippe Chaintreuil (Philippe23)、Phillip Baxter (PhilBax)、projectgheist、RDIL、Riley Labrecque (rlabrecque)、Roman K. (CrispMind)、Robin Zoň (ZonRobin)、roidanton、ruzickajason、ryugibo、Sam Hocevar (samhocevar)、Satheesh (ryanjon2040)、Scott Fries (ScottFries)、Sébastien Rombauts (SRombauts)、ShalokShalom、spoiltos、stanley1108、Stephen A. Imhoff (Clockwork-Muse)、stkrwork、sturcotte06、Takashi Suzuki (wankotank)、tgroll、Thang To (thangt)、Tim Lincoln (Ratherbflyin)、TommyTesla、Vladimir Ziablitskii (rainlabs)、whoisfpc、YanaPIIDXer、Yannick Comte (demonixis)、yhase7、Zeblote

主要功能

全新功能:实时光线追踪和路径追踪(测试功能)

此次版本更新后,我们激动地宣布,虚幻引擎现在将支持使用Windows 10 RS5更新光线追踪和路径追踪的测试版。此功能能够完全利用NVIDIA RTX系列显卡的DirectX 12和DirectX光线追踪(DXR)。

 

 

实时光线追踪器

光线追踪功能由一系列的光线追踪着色器和光线追踪效果组成。借助这些功能我们便能实时构建自然而真实的光照效果,其在阴影投射、环境光遮蔽、反射等方面完全不逊于离线渲染器。

 

 

我们加入了大量光线追踪功能并将继续在后续的虚幻引擎版本中对这个模块的功能进行扩展。此版本中的部分功能包括:

  • 用于定向光源、点光源、聚光源和矩形光源的柔和区域阴影。
  • 相机视锥内外物体的准确反射。
  • 对场景中的地面物体应用软环境光遮蔽。
  • 对半透表面的物理正确的折射和反射。
  • 来自光源的动态全局光照的间接光照。
  • 及更多功能!

欲知详情,请参见 实时光线追踪 部分,了解此版本当前支持功能的详解。

路径追踪器

除光线追踪器外,此版本还添加了一个无偏差路径追踪器,提供间接光照路径以实现完整的全局光照效果,在引擎中实现真正的真实效果参考渲染。它能改良虚幻引擎场景中的工作流内容,无需再导出到第三方离线路径追踪器中进行对比。

欲知更多详情,请参见 路径追踪器 部分。

全新内容:高层渲染重构

此版本中,虚幻引擎中的网格体绘制已被完全重新编写,现在绘制性能更佳,并支持实时光线追踪。之后的版本中我们将继续把更多渲染工作移到GPU上。

网格体绘制流程重构:

在全新的网格体绘制流程中,静态场景元素绘制信息的缓存将更为积极,并会尽量自动实例化合并绘制调用。这使mesh pass新实现的代码量降低了4到6倍之多!

此次重构对于自定义的场景代理在渲染器中的网格体绘制产生了较大影响,而对渲染器的接口影响较小。所有自定义Drawing Policy在新架构中都需要重新编写为FMeshPassProcessors。这意味着在这个较大的更改后,Drawing Policy将失去向后兼容性。

全新内容:C++迭代时间改良

实时代码编写(实验性)

所有开发者已获得在虚幻引擎项目中使用Molecular Matters Live++功能的授权,我们也已将其整合为全新的 实时代码编写 功能。用户可以通过实时代码编写在开发环境中进行C++代码修改,然后方便快捷地完成编译并将其打补丁到正在运行的编辑器或standalone游戏中。和旧有的热加载机制不同,实时代码便将对单个函数打补丁,而无需进行对象重实例化的特殊考虑,使其在大型项目中的可靠性和可扩展性大大提升。

要使用此功能,从编辑器中编译按钮旁的下拉菜单中勾选“实时代码编写(实验性)”选项,然后按下Ctrl+Alt+F11进行编译并应用修改。在控制台窗口中输入“LiveCoding”即可从烘焙游戏中启用。

注意:

  • 不支持在引擎运行时修改类布局。我们计划在未来的版本中修复此问题。
  • 当前只支持Windows。

编译时间

我们对 UnrealBuildTool(用于配置、编译、链接和发布引擎及多平台目标应用的工具)和 UnrealHeaderTool(用于预处理代码头文件的工具) 进行了优化,使 C++迭代时间最高能实现3倍速度提升

完整编译(UE4Editor Win64开发版本):

 
 

虚幻引擎4.21

虚幻引擎4.22

改良

总编译时间:

436.90

326.81

加快30%

编译 UnrealHeaderTool:

46.12

46.30

 

生成头文件:

25.05

15.50

加快60%

编译 UE4Editor

323.15

257.97

加快25%

UnrealHeaderTool 开销

42.58

7.04

加快600%

增量编译(UE4Editor Win64开发版本):

 
 

虚幻引擎4.21

虚幻引擎4.22

改良

总编译时间:

7.47

2.14

加快340%

编译 UE4Editor

1.19

1.08

 

UnrealHeaderTool 开销

6.28

1.06

加快590%

无代码修改(UE4Editor Win64开发版本):

 
 

虚幻引擎4.21

虚幻引擎4.22

改良

UnrealHeaderTool 开销

5.38

1.03

加快520%

此外我们还极大提升了增量编译依赖性检查的准确性,包括检测添加到项目和从项目中移除的文件,以及使用编译器驱动的包含依赖性检查。

全新内容:虚拟生产流程改良

虚幻引擎对实时虚拟生产流程的各个方面进行了重大改良,持续引领着技术的发展。

用Composure进行实时合成(测试功能)

我们对Composure合成系统进行了重大改良,在虚幻引擎中进行图像、视频和CG元素合成时将前所未有地轻松。

借助内置合成,使用者可以轻松地实时显示将绿屏场景和虚幻引擎关卡内容组合起来的效果。此功能适用于预显示,用虚幻引擎的数码内容提升实拍影片效果、并替代绿屏背景后,现场导演便能直观地了解最终场景的实际效果。引擎中显示的结果也能成为有价值的参考,便于合成师在其他第三方软件中离线工作。

改良包括:

  • 使用材质来驱动图层混合。
  • 利用“光源包裹”一类效果的后期处理流程。
  • 使用媒体框架和专业视频I/O系统来采集视频驶入和渲染输出。
  • 将内置渲染通道用于色度镶迭、防溢出、色调映射等功能。也可以构建您的自定义通道。

Composure系统同样支持传统的离线合成工作流,便于导出选中虚幻引擎对象的渲染,以便在第三方应用程序中与其他源进行合成。

OpenColorIO(OCIO)颜色描述文件(实验性)

在新版本中,使用者可以在虚幻引擎中使用OpenColorIO(OCIO)颜色描述文件直接变换任意纹理或Composure元素的色彩空间。这有助于让视频和电脑生成元素的颜色从合成到最终输出皆保持一致。

硬件加速视频解码(实验性)

在Windows平台上,使用者现在可以使用GPU来加速H.264视频流送的处理。它能减轻播放视频流送时CPU的压力,视频播放将更加流畅,用户可以使用更高分辨率的影片文件和更同步的输入馈送。

项目设置 窗口的 插件 - WMF媒体 部分启用 硬件加速视频解码(实验性) 设置后,即可使用硬件解码。

全新媒体I/O格式

新版本中添加了更专业的视频I/O输入格式和设备:

  • AJA和Blackmagic的4K超高清输入。
    • 支持8位和10位输入。
    • 支持单连接、双连接和四连接。
  • 支持AJA Kona 5设备。
    • HDMI 2.0输入。
    • 支持高帧率超高清(最高可达60fps)。

nDisplay改良

新版本增添加数项新功能,使nDisplay多显示渲染系统拥有更强的灵活性,能处理新类型的硬件配置和输入。

  • 在新版本中,每个群集节点的应用程序窗口在定义的屏幕空间坐标处可拥有多个视口。这使得一个在单一计算机上运行的单一虚幻引擎实例能够处理多个互相错开的显示器。
  • 在旧版本中,为nDisplay系统中的节点提供输入的唯一方式便是通过VRPN。新版本中添加了一个名为“群集”事件的全新通信机制,其可用于在所有连接的计算机上触发同步响应。
  • nDisplay配置文件中已公开输入子系统的更多可能性,使用者无需重新打包项目便可修改属性和映射。
  • 如果您已在使用,则可能需要对配置文件进行一些调整,以匹配新模式。新版本中nDisplay Launcher能自动升级您的配置文件。

欲知细节,请参见 nDisplay文档

全新内容:HoloLens 远程流送支持(测试功能)

新版本中,虚幻引擎4将通过Windows混合现实插件来支持 Holographic Remoting! 这使得虚幻引擎在Windows桌面电脑上运行时能将渲染结果通过Wi-Fi连接实时无线传输到 HoloLens。

 

 

全新内容:音频系统改良

时间同步(测试功能)

时间同步(TimeSynth)是一个全新的音频组件,致力于为音效设计师提供音频片段的开始、停止和串联的精确采样。TimeSynth将启用精确的同步事件音频事件队列,其对交互音乐应用程序而言十分重要。

 

 

分层音效并发性

新版本中,音效并发性系统将观察多个设置或分组。现在,如果一个音效对象(AudioComponent、SoundBase,或SynthComponent)未满足其ConcurrencySet属性中指定的所有要求,新的音效将无法播放。此外,如果新音效满足所有并发性设置分辨率规则并开始播放,一个或多个音效可能停止播放。

Submixes频谱分析器(全新引擎)

新版本中,设计师能分析游戏进程中的Submix频谱能量,基于当前播放音频的频率内容来驱动游戏进程、材质或任意数量可驱动的目标对象中的调制。

 

 

声波上的已烘焙频谱分析曲线和Envelope

新版本中使用者可以对声波进行预分析,让envelope和频谱能量在播放中驱动蓝图。这使得音效设计师能创建出强大的音频驱动系统,同时不再进行频谱分析,以改良运行时性能。此外,代理声波的分析数据可用声波的分析数据进行替换,使设计师在尝试驱动游戏进程时假冒独立的音效事件。

音效资源导入改良

新版本对音效资源导入进行了极大改良。除当前对多通道WAV文件的支持外,虚幻音频引擎现在还支持导入大量音效文件格式,包括AIFF、FLAC和Ogg Vorbis。

对MIDI设备插件的改良

除处理MIDI设备输出外,新版本中MIDI设备插件还允许用户发送MIDI消息到外部MIDI设备。另外,对插件蓝图API的改良还简化了MIDI消息的解析。这些修改使得音效设计师能更有效地将MIDI I/O整合到项目中。

全新内容:Sequencer改良

我们再次对业界标杆Sequencer线性动画工具集进行了重大更新。随着新工具和改良的加入,虚拟生产项目的制作将得到改善。此外还包含大量易用性改良。

Sequencer镜头录制器

在虚拟制作的工作流中,镜头录制器实现了 表演录制的快速迭代和已有镜头的快速预览!我们在序列录制器的基础上进行了改良:可录制的内容、数据的处理方式,并扩展了系统来满足不同的使用需求。使用者可以轻松从链接到场景内的动画捕捉角色来录制动画,也可以采集Live Link进来的动画数据用于之后的播放。通过将可以自定义的各种Actor录制为子序列,并以镜头元数据进行整理,从而轻松制作出大小不同、数量不等的镜头。

欲知详情,请参见镜头录制器文档

Composure Sequencer轨迹

使用者能借助全新的Composure轨迹轻松 将序列导出为在Composure中定义的层。一次可添加多个轨迹来导出多个层。可直接将层从Composure拖入Sequencer来生成这些层的轨迹。

Sequencer中的分层动画工作流

新版本中使用者在一个轨迹中可以利用多权重片段来创建分层动画。Transform和数个其他属性轨迹支持分层动画。

Live Link Sequencer轨迹

新版本中使用者可以将Live Link进入的数据录制到sequencer轨迹上并进行播放。带有时间码的Live Link数据和每次引擎tick的多个样本保存的分辨率可以高于sequencer播放率。

对象绑定Sequencer轨迹

新版本中使用者可以修改指定到Sequencer中Actor属性的对象:静态网格体、骨架网格体、材质等。Actor被添加到Sequencer后,这些对象引用属性便会可用,和该actor“轨迹”菜单中的其他属性一样。新版本中使用者可以修改指定到Sequencer中Actor属性的对象:静态网格体、骨架网格体、材质等。Actor被添加到Sequencer后,这些对象引用属性便会可用,和该Actor“轨迹”菜单中的其他属性一样。

Sequencer中的网络复制

新版本中,设置为复制使用关卡属性Actor上“复制播放”属性的关卡序列Actor将同步其在服务器和客户端之间的播放时间。

Sequencer的Python支持改良

Sequencer的Python支持已得到改良,实现了影片场景功能:

  • 影片场景部分和关键帧数据操纵
  • 影片场景采集

Sequencer杂项改良

  • 现在可以将多个对象指定到一个单一轨迹。
  • 现在可以一次性从多个轨迹复制/粘贴片段。
  • 现在可以用标签对帧进行标记,然后快速跳至该标记以播放序列。可为每个标记设置颜色,便于对其进行辨别。
  • 将轨迹/片段公开到蓝图(计划中),例如运行时切换子片段/镜头

全新内容:动画预算系统(测试功能)

全新的 动画预算编制器 可以为每个平台设置固定的预算(游戏线程上执行的工作的毫秒数),确定预算是否足以完成所有任务,还是需要削减开销才能完成工作。它的工作方式是测量动画更新的总开销,并计算单个工作单元的开销。如果需要削减开销来满足预算,其将针对几个区域基于重要性来进行削减:停止tick并使用主姿势组件、降低更新率、在更新之间进行插值(或不进行插值),等等。目标是动态调整加载,已满足固定(游戏线程)预算。

全新内容:动画共享插件

参见下方的图表了解系统详情。新增一个 动画共享(Animation Sharing) 插件,降低一群Actor所需的动画工作总量。其基于主姿势组件系统,同时添加混合和additive动画状态。动画状态是动画实例计算所用的分类容器。生成的姿势将被转移到对应的分类容器中的所有子组件。参见下方的图表了解系统详情。

 

 

以上视频显示了代表单个状态的骨架网格体组件,以及用于在状态之间进行混合的实例。其也将显示用于确定一个动画状态的所有单个Actor。骨架网格体组件将根据动画状态连接到主组件来驱动动画。在视频中,只有动画状态的姿势才会被计算,群组Actor只会复制生成姿势的骨骼矩阵。

全新内容:支持长文件名(实验性)

我们为Windows十周年纪念版更新的用户添加了长文件路径支持! 在之前,Windows中的路径被限制为260个字符,其在复杂命名规则下和较深的资源层级中容易造成问题。Windows十周年纪念版提供了对长文件名的支持,以供用户和程序使用。在Windows 10中启用长文件名路径的方法是:

注意: 对长路径的支持并非整体存在。第三方工具,甚至操作系统自身的一些部分(例如Windows Explorer)均可能无法支持。

全新内容:蓝图索引编制优化

在对蓝图搜索数据编制索引的方式进行修改后,编辑器和PIE的启动时间得到了极大改良。现在我们将延迟搜索数据更新,直到“在蓝图中找到(Find-in-Blueprint)”选项卡打开、异步执行更新,并将资源加载进程从蓝图索引重编中独立出来。

全新内容:Steamworks支持改良

用UE4进行Steam开发变得前所未有地简单!我们针对Steam多人游戏开发者进行了一些实用性和易用性改良。

  • Steam上的专属服务器现在能通过全新的“-SteamServerName”启动参数来接收自定义命名(最高63个字符)。
  • 项目可以覆盖Steam网络层,方法为:停用“bUseSteamNetworking”配置值,并将其NetDriver配置设为优选的底层网络层。
  • 我们通过UE4信标极大地改良了Steam NetDriver在标准游戏网络连接之外的实用性。
  • 使用者现在可以在项目的Target.cs文件中设置特定的必需的Steam值,例如专属服务器命名或应用程序ID。对这些值进行修改不再需要重新编译引擎。

全新内容:预览场景设置改良

我们为预览场景设置新增了功能,使用者无需禁用灯光便可以隐藏环境立方体贴图(显示环境)。参见 预览场景设置 面板中的 使用天空光照 属性。

全新内容:骨架网格体LOD简化

现在,你可以在虚幻引擎编辑器使用骨架网格体简化工具,生成简化的骨架网格体的版本,用作细节等级(LOD)!用户不再需要依赖于耗时而容易出错的第三方数字内容创建(DCC)程序或第三方工具。创建精确的高质量LOD,并立即在视口中查看结果。

欲知更多信息,请参见 骨架网格体简化工具

全新内容:逐平台属性改良

逐平台属性已得到延展,允许在平台分组之外基于目标平台设置值。

 

 

全新内容:Gauntlet自动化框架改良

Gauntlet自动化框架加入了数项改良,提高了易用性,并增加了学习的文档和范例。

增加的文档和范例

  • 讲述Gauntlet架构和入门知识的文档
  • 更多ActionRPG和PGO优化范例
  • 追踪编辑器加载和PIE时间的范例

iOS支持

Gauntlet现在支持在iOS上安装和运行IPA文件(需要Mac host)。这样一来引擎的设备支持便扩展到PC、Mac、PS4、XB1、Switch、Android和iOS。

PGO优化

在PS4、Xbox One和Switch上生成项目PGO文件的自动化脚本范例。

报告创建

已新增HTML和Markdown构建器,将自定义报告创建为自动化脚本的的一部分。

全新内容:Visual Studio 2019支持

 

 

新版本中已添加对Visual Studio 2019的支持。如需默认使用Visual Studio 2019,在编辑器的源码管理设置中选择“Visual Studio 2019”作为IDE即可。

我们还添加了切换至C++新标准版的功能。如需修改项目支持的C++标准版本,请在.target.cs文件中将CppStandard属性设为以下值中的一个。

 

版本

C++14

CppStandardVersion.Cpp14

C++17

CppStandardVersion.Cpp17

最新

CppStandardVersion.Latest

与此同时,我们已停止对Visual Studio 2015的支持。如果需要强制项目使用Visual Studio 2015编译器进行编译,可在项目的.target.cs文件中将WindowsPlatform.Compiler设为WindowsCompiler.VisualStudio2015。注意:从Epic Games Launcher上下载的引擎版本不支持Visual Studio 2015,我们将不再对其进行内部测试。

全新内容:子系统

子系统是自动实例化的类,其生命周期可以管理,能提供易用的扩展点,免除了复杂的修改或覆盖引擎类,同时能原生获取蓝图和Python的公开性。

当前支持的子系统生命周期

引擎

class UMyEngineSubsystem : public UEngineSubsystem { ... };

引擎子系统的模块加载时,子系统将在模块的Startup()函数返回后执行Initialize()。 子系统将在模块的Shutdown()函数返回后执行Deinitialize()。

这些子系统将通过GEngine进行访问:

UMyEngineSubsystem MySubsystem = GEngine->GetEngineSubsystem();

编辑器

class UMyEditorSubsystem : public UEditorSubsystem { ... };

编辑器子系统的模块加载时,子系统将在模块的Startup()函数返回后执行Initialize()。 子系统将在模块的Shutdown()函数返回后执行Deinitialize()。

这些子系统将通过GEditor进行访问:

UMyEditorSubsystem MySubsystem = GEditor->GetEditorSubsystem();

注意:这些纯编辑器的子系统不能访问常规蓝图,只能访问编辑器工具控件和Blutility类。

GameInstance

class UMyGameSubsystem : public UGameInstanceSubsystem { ... };

这能通过UGameInstance进行访问:

UGameInstance* GameInstance = ...;
UMyGameSubsystem* MySubsystem = GameInstance->GetSubsystem();

LocalPlayer

class UMyPlayerSubsystem : public ULocalPlayerSubsystem { ... };

这能通过ULocalPlayer进行访问:

ULocalPlayer* LocalPlayer = ...;
UMyPlayerSubsystem * MySubsystem = LocalPlayer->GetSubsystem();

从蓝图访问子系统

子系统将自动公开到蓝图,带有理解情境、不需要做类型转换的智能节点。

使用者可利用标准UFUNCTION()标记和规则来控制蓝图可用的API。

 

 

 

 

来自Python的子系统

如果使用Python来进行编辑器脚本编写,则可使用内置存取器在子系统中进行获取:

my_engine_subsystem = unreal.get_engine_subsystem(unreal.MyEngineSubsystem)
my_editor_subsystem = unreal.get_editor_subsystem(unreal.MyEditorSubsystem)

注意:Python当前是一个实验性功能。

全新内容:编辑器工具控件

利用编辑器工具控件,使用者能 借助完全由UMG UI编辑器和蓝图可视化脚本逻辑创建的新用户接口来扩展虚幻编辑器的功能!和其他虚幻编辑器面板一样,这些编辑器专属的UI面板可从“窗口”菜单中进行选择。

要创建编辑器工具控件,在 内容浏览器 中点击右键并选择 编辑器工具 > 编辑器控件 即可。

双击 编辑器控件资源 即可编辑蓝图。对编辑器控件资源的蓝图完成编辑后,右键点击编辑器控件并选择 运行编辑器工具控件(Run Editor Utility Widget),在选项卡中打开UI。选项卡只能停靠在关卡编辑器选项卡中。其位于关卡编辑器窗口下拉菜单内的 编辑器工具控件 类目中。这是一个实验性功能。

全新内容:材质分析器

材质分析器为使用者提供了材质和材质实例中参数使用的整体视图,以便帮助你快速找到可能存在的材质改进和优化方案,以最小化渲染状态的切换,并节约内存。在 窗口 > 开发者工具 下可访问材质分析器。

 

 

材质列出在一个树中,并带有建议列表,其将显示拥有相同的静态分支重载的材质实例分组,以便进行优化。也可以将所有相关实例放置到一个本地集中,以便轻松进行查找和更新。

全新内容:选择子项和后代Actor

使用者在新版本中可以使用 世界大纲视图关卡视口 中的快捷菜单将选择扩展到所选Actor的所有直接子项或所有后代。在使用大型、复杂的场景层级时便更加容易。

全新内容:自适应的相机缩放和平移

在关卡中选择一个或多个物体后,相机缩放和平移操作的灵敏度将随物体和相机之间的距离自动缩放。这使得相机运动更加真实,在处理体积较为极端的物体(如微小的机械部件或大型地形)时尤为实用。

编辑器偏好 窗口中的 关卡编辑器 > 视口 部分中禁用全新的 使用距离调整相机速度(Use distance-scaled camera speed)

全新内容:选择物浏览轨道

与围绕屏幕中心运动相反,在新版本中,使用者可以围绕所选对象的枢轴旋转——当一个或多个对象在关卡视口中选中时。

编辑器偏好 窗口的 关卡编辑器 > 视口 部分中启用全新 使相机绕选中项进行轨道运动(Orbit camera around selection),即可启用此模式。

全新内容:切换多个层的可视性

新版本中使用者可以同时切换多个层的可视性。按住 CTRL 并点击每个层即可构建选择。点击这些选择层旁边的 眼睛图标 即可切换所有选中层的可视性。

 

 

全新内容:多用户编辑(测试功能)

新版本中,多位关卡设计师和美术师能 将虚幻编辑器的多个实例连接起来,在共享的编辑会话中协同工作,实时构建同一个虚拟世界场景。

  • 专属服务器将持续追踪所有用户执行的所有修改,并同步编辑器和所有已连接计算机之间的状态。
  • 对一台计算机上的关卡和序列进行修改时,修改将自动被镜像,实时传输到参与同一个会话的所有其他计算机上。
  • 对材质之类的其他类型资源进行修改时,保存这些资源时修改将复制到所有的其他计算机。
  • 离开正在编辑的会话之前,每个使用者可以选择是否将会话中进行的修改应用到项目的本地副本中。

全新内容:预览渲染关卡改良

移动预览器的工作流已得到改良,使用不同设备和平台的着色模型时在所有编辑器视口中便能统一使用相同的着色模型,并便于在默认Shader Model 5(SM5)和选中的预览渲染关卡之间进行即时切换。

首先从主工具栏的 设置 下拉菜单中选择一个 预览渲染等级,以编译对应某个平台的着色器。完成编译后,使用主工具栏中添加的 预览模式 按钮来切换显示模式。

欲知更多详情,请参见“移动预览器”部分。

全新内容:移动平台的动态聚光源支持

新版本支持高端移动设备上的非阴影投射动态聚光源。

前往 项目设置 > 渲染 > 移动着色器置换支持可移动聚光源 设为true,即可启用动态聚光源。

欲知更多信息,请参见 移动平台光照

全新内容:游戏存档系统iCloud支持

UE4新版本支持用ISaveGameSystem接口将游戏保存到iCloud(支持iOS和tvOS)。前往 项目设置 > 平台 > iOS > 在线 并启用 启用Cloud套件支持(Enable Cloud Kit Support) 选项即可将游戏保存到iCould。然后可以从 iCloud存档文件同步策略(iCloud save files sync strategy) 选项中选择最适用于项目的同步策略。当前可用的iCloud同步选项如下:

  • 永不(不使用iCloud加载/保存游戏)
  • 仅在游戏开始时(iOS)
  • 固定(LoadGame调用时)

全新内容:设备输出窗口改良

新版本对设备输出日志窗口进行了重大改良,使其脱离了实验性阶段。可使用设备输出日志窗口从PC发送控制台命令到iOS设备。在主菜单中点击 窗口 > 开发者工具> 设备输出日志 即可访问设备输出日志。

全新内容:HTML5平台改良(实验性)

新版本中添加了HTML5项目的多线程支持(实验性)。请注意:启用此功能需要访问虚幻引擎4的源代码。

部分浏览器需要启用特殊标签才能在多线程模式中运行。参见 https://github.com/emscripten-core/emscripten/wiki/Pthreads-with-WebAssembly 了解更多信息。

  • 针对Chrome:用以下标签运行Chrome:
    --js-flags=--experimental-wasm-threads --enable-features=WebAssembly,SharedArrayBuffer
    另外可选择在chrome://flags/#enable-webassembly-threads中将其作为“WebAssembly线程支持”启用/禁用
  • 在Firefox中,将javascript.options.shared_memory偏好设为true,即可在about:config中启用SharedArrayBuffer。

全新内容:iOS优选朝向

新版本中可以设置优选朝向,在横向左和右均支持时用作iOS启动的初始朝向。

全新内容:Niagara向量场数据接口

新版本中,向量场数据接口用于CPU和GPU粒子的方式完全相同!可使用采样向量场模块来对向量场进行采样。它将公开3个主要输入:

  • 向量场(VectorField):这是向量场数据接口实例,包含静态向量场对象自身,以及逐轴平铺标签。
  • 采样点(SamplePoint):这是对向量场进行采样的点。其默认为 Particles.Position,但可进行自定义。
  • 强度(Intensity):这将缩放被采样的向量。

此外还有数个可选输入:

  • 应用衰减(ApplyFalloff):勾选此项将对采样的向量应用一个衰减函数,因此向量场的影响在其边界框的边缘时将接近于零。
  • 使用指数衰减(UseExponentialFalloff):勾选此项后,衰减函数将为指数性,而非线性型。
  • 衰减距离(FalloffDistance):应用一个衰减函数时,此参数将决定从边界框边缘应用衰减的范围。
  • 场坐标(FieldCoordinates):可以通过它来覆盖发射器的本地空间参数。其拥有3个选项:
    • 模拟(Simulation):使用Emitter.Localspace参数。
    • 世界(World):此项将覆盖向量场的位置和变换,使其无视Emitter.Localspace参数,固定相对于世界原点。
    • 本地(Local):此项将覆盖向量场的位置和变换,使其无视Emitter.Localspace参数,固定相对于系统自身。
  • 场平移(FieldTranslate):此项将相对于原点偏移向量场,由 FieldCoordinates 所定义。
  • 场旋转(FieldRotate):此项将相对于原点调整向量场朝向,由 FieldCoordinates 所定义。
  • FieldScale:此项将缩放向量场。

SampleVectorField 模块提供了大量效用功能,因此其可能含有一定开销。在脚本编辑器中包含向量场数据接口对象上的 SampleField 节点,便能使用特殊的向量场采样。

此处预计拥有的输出将相对于向量场自身的体积,因未应用转换。

轻松显示和使用向量场的范例已包含在内,其名为 VectorFieldVisualizationSystem

全新内容:Niagara Curl Noise数据接口

新版本中,Curl Noise数据接口将基于下方的单纯形噪点函数,CPU和GPU发射器的结果均相同。推荐使用 SampleCurlNoiseField 模块来生成粒子的Curl Noise。此模块公开了2个主要输入:

  • 强度(Strength):此项将缩放模块生成的输出向量。
  • 长度缩放(Length Scale):此项将描述Curl Noise生成的顶点的大概大小。

以及3个可选输入:

  • 偏移(Offset):此项用于平移噪点场。
  • 噪点场(Noise Field):这是数据接口对象自身,主要用于调整种子。
  • 采样点(Sample Point):此项将指定从何处进行采样。默认为 Particles.Position,但也可以使用其他值。

Curl Noise场并非固有平铺,不会因其过程化的特性而突然中止。要获取一个平铺的Curl Noise场,可考虑使用向量场数据接口,将周期性体积问题Curl Noise用作一个向量场。

全新内容:Niagara中确定性的随机数生成

我们在新版本中为CPU和GPU Niagara发射器添加了确定性的随机数生成。生成的随机数的行为可通过发射器属性模块进行整体控制,有以下选项:

  • 确定性(Determinism):用于在整个发射器确定随机数和非确定随机数之间进行切换的标签。
  • 随机种子(Random Seed):由确定性随机数生成器所使用的全局种子。

RandomRange Niagara函数是在脚本中生成随机数的推荐方法。其接受以下项:

  • 最小(Min):这将定义生成的随机数的下边界。其可为任意整数或浮点类型。
  • 最大(Max):这将定义生成的随机数的上边界。其可为任意整数或浮点类型。
  • 随机性模式(RandomnessMode):这是控制随机数生成器的确定性模式的列举,其可为:
    • 模拟默认项(Simulation Defaults):这是默认的行为,其继承 Emitter.Determinism 的值。
    • 确定性(Deterministic):使用确定性随机数生成器。
    • 非确定性(Non-deterministic):使用非确定性随机数生成器。
  • 覆盖种子(OverrideSeed):这将决定是否覆盖 Emitter.GlobalSeed 指定的种子。
  • 种子(Seed):如 OverrideSeed 已启用,此值将用于覆盖 Emitter.GlobalSeed

上述三项:随机性模式(RandomnessMode)覆盖种子(OverrideSeed)种子(Seed) 最初为隐藏,点击节点下方的箭头即可显示。

 

 

生成确定性随机数的另一种方法是将种子显式传至 Seeded Random 节点。举例而言,随机范围功能的特殊化可能类似于下图:

 

 

确定性随机数的开销略大于非确定随机数:前者约为后者的1.5到2倍之间,具体取决于生成的类型。总体而言,如果脚本中需要一个以上的随机数,建议您通过单次调用来生成,需要单独进行处理则划分结果。

 

 

全新内容:Niagara数学运算的额外输入

诸多脚本数学运行现在均支持输入引脚的一个任意数,点击 添加+)按钮或连接到添加按钮旁的引脚便能进行添加。

 

 

全新内容:支持废弃Niagara脚本

模块、动态输入和函数脚本现在能在脚本编辑器中被标记为已废弃。使用已废弃脚本的发射器和系统将在UI中显示错误,已废弃的脚本不会显示在菜单中以供添加。

 

 

 

 

全新内容:Niagara初始化模块

已添加全新模块,其将公开初始化粒子时使用的最常用属性。

 

 

全新内容:Niagara中的Select by Simulation Target节点

使用者可利用全新的Select by Simulation Target节点来执行不同逻辑,具体取决于发射器是在CPU向量机上运行,还是在GPU计算脚本中运行。整体而言,多数脚本在在两个模拟目标上的运行应相同。然而,这并非固定可行,进行数据接口调用时尤为如此。准确奇偶性不可用时,这个新节点将为模块作者提供更多工具来搭建稳定的行为。如需了解其使用方法,请参见全新的碰撞响应模块。

全新内容:Niagara碰撞系统

Niagara碰撞已被完全重写,以支持基于射线追踪的CPU碰撞、CPU+GPU分析平面碰撞、GPU场景深度,以及距离场碰撞。

额外功能包括:

  • 较之于之前的Niagara和级联实现,稳定性已得到全方位的大幅提升。
  • CPU碰撞支持场景物理材质特性的合并(例如恢复力和摩擦力系数),并提供数个整合模式。
  • 系统已被重写为单一模式,以提升实用性。
  • 碰撞现可结合所有渲染器使用。
  • 加入一个可配置的“休眠”状态,使粒子在较为极端的环境下仍保持稳定。
  • 方程式基于物理/源于物理,兼容质量和其他系统属性。
  • 公开大量高级选项,包括静态、滑动和滚动摩擦力。
  • 为sprite和网格体自动计算碰撞半径。可选择直接指定此参数。

全新内容:平台 SDK 升级

我们将在每个更新版本中对引擎进行更新,以支持各大合作平台的SDK版本。

 

 

  • Build farm进行编译的IDE版本
    • Visual Studio - Visual Studio 2017 v15.6.3工具链(14.13.26128)与Windows 10 SDK(10.0.16299.0)
      • 最低支持版本
        • Visual Studio 2017 v15.6
      • 需要NET 4.6.2 Targeting Pack
    • Xcode - Xcode 10.1
  • Android
    • Android NDK r14b(新的CodeWorks for Android 1r7u1安装程序将替换Windows和Mac上之前的CodeWorks;Linux将使用1r6u1及修改)
    • 注意:现在将按功能请求许可(如:RECORD_AUDIO, CAMERA)。更多详情,请参见Android更新说明
  • HTML5
    • Emscripten 1.37.19
  • Linux "SDK"(交叉工具链)
  • Lumin
    • 0.19.0
  • Steam
    • 1.39
  • SteamVR
    • 1.0.16
  • Oculus Runtime
    • 1.32
  • Switch
    • SDK 7.3.0 + 可选NEX 4.4.2(固件7.x.x-x.x)
    • SDK 6.4.0 + 可选NEX 4.6.2(固件6.x.x-x.x)
      • 支持 IDE:Visual Studio 2017、Visual Studio 2015
  • PS4
    • 6.008.061
    • 固件版本6.008.021
    • 支持 IDE:Visual Studio 2017、Visual Studio 2015
  • XboxOne
    • XDK:2018年7月 QFE-4
    • 固件版本:2018年12月(版本号 10.0.17763.3066)
    • 支持 IDE:Visual Studio 2017
  • macOS
    • SDK 10.14
  • iOS
    • SDK 12
  • tvOS
    • SDK 12