2017年11月15日

技术前瞻:虚幻引擎中的Python

作者 Ken Pimentel

在Autodesk University上,我们简单展示了最新的研究,它将解决CAD数据导入虚幻引擎这一复杂问题。这是Datasmith研发过程中的重大突破(虽然这只是惊鸿一瞥)。

现状

TDatasmith工作流程工具包目前仍在测试阶段,它的作用是尽量无损地将数据移入虚幻引擎。Datasmith能将目前广泛使用的DCC和CAD应用程序中常见的场景资源(例如几何结构、纹理、材质、光照和镜头)高保真地转移到虚幻引擎中。经过8000多位测试注册者的体验和测试用户的热情反馈,我们已经取得了重大进展。这一工作流程交付后,将在准备实时使用的数据阶段节省数日甚至数周时间。

发展方向

为实现真正的无损工作流程,我们还需要解决自动化和准备数据以供实时使用的问题。我们不能指望着通过Datasmith推送的数据总能达到“完美渲染”或“最优”品质,所以必须提供一些以无损方式解决此类问题的方法(这意味着你可以轻松地对上游数据进行更改,而不必重复已经做过的工作)。

 PythonInUnreal_1.jpg
为虚幻引擎准备数据的传统工作流程必须依赖其他工具来优化数据。

未来展望

在本周的Autodesk University上,我们首次展示了在虚幻引擎中使用Python和蓝图来准备数据的早期预览视频。
 
PythonInUnreal_2.jpg
 未来,准备数据的工作流程将使用Datasmith和基于虚幻引擎的工具。

该演示视频快速介绍了几种可能性,未来用户可以选择使用Python和/或Epic的蓝图可视化编程,利用全新且巧妙的数据准备工具来处理和优化场景数据。我们正在探索的数据准备函数包罗万象,从“查找小于1立方厘米的所有部分并将其销毁”到“查找这些对象并自动修复(修复不良拓扑、间距和重叠)”,应有尽有。

PythonInUnreal_3.jpg
在该示例中,这辆摩托车通过一系列简单规则进行了处理,经过处理后,生成了更加优化的版本。

我们为AU准备的这个示例项目原本是一个3ds Max文件,但它也可以是Datasmith支持的任何一种文件格式。目前Datasmith支持的格式多达20多种(将来还将支持更多格式),因此很可能会支持你所需要的格式。在导入该文件后,会执行一系列普通任务。

PythonInUnreal_4_V2.jpg
一个简单的Python脚本就能载入数据,它可以是Datasmith支持的20多种格式中的任何一种。

通常,模型中会有不可见或者与想要创建的视觉体验无关的细节。我们支持的一种方法是在元数据中搜索具体实例,然后移除或优化它们。我们还提供了一种查找所有不可见对象的方法——这对于查找不相关并可以删除的内部细节很有用。查找不相关资源并将其简化或删除的技术很多。
 
PythonInUnreal_5.jpg
这个简单的Python脚本能在元数据中查找特定的名称并将其删除。

处理复杂网格的一种方法是创建网格的简化版本。在Datasmith和虚幻引擎中,你可以考虑两种方法。由于Datasmith支持从Catia、Creo、NX、SW、JT和Rhino等导入BREP数据,因此你可以选择使用铺嵌和简略参数来获得简化网格。虚幻引擎还有一个用于创建LOD的二次曲面网格优化器。这两种方法都可以帮助你创建更加优化的可见几何结构版本,达到体验的性能目标。

PythonInUnreal_6.jpg
该Python脚本以复杂的车座网格为基础,使用内置的虚幻引擎优化器来构造LOD。

处理场景组织是常见的性能需要,或者说是重组资源以便于处理的需要。所有实时引擎对于以实时速率处理的对象数量都有限制。例如,在iPad上,你的目标可以是以AR所要求的60fps处理1000个对象和1,000,000个多边形。在处理能力强大的台式机上,处理数量或许能够达到两倍,且速度能达到VR所要求的90fps。如果有许多复杂的CAD文件包含5000甚至更多对象,你就需要考虑采用某种方法组织数据,限制绘图调用的数量。

PythonInUnreal_7.jpg
该脚本接受了许多独立实体,并将它们组合成单一实体。

即使Datasmith会自动转换来自V-Ray、Corona、Mental Ray和其他渲染器的材质,也不意味着这就是你所需要的材质。你可能有自己的UE4优化材质库,或者你可能来自于事后才考虑材质的CAD世界。在这些情况下,你需要一种方法来查找材质,并将其替换为经过UE4优化的材质。通过我们新的Python工具,你可以使用一个将待查找材质与要用来替换的材质一一对应的简单文本文件来完成这个过程。

PythonInUnreal_8.jpg
该脚本根据简单文本文件对材质使用搜索和替换策略。

Datasmith将提供Python和蓝图界面,便于用户选取要使用的编程范式。这意味着Datasmith用户将能够使用这个新的工作流创建具有特定用途、功能异常强大的几何处理工具(还可以将其分享给他人)。

PythonInUnreal_9.jpg
你还可以使用蓝图可视化编程界面,利用公开的Python工具执行相同任务。

将数据处理和优化转移到虚幻引擎内部,意味着可以更好地支持自动化和无损工作流程。现在,上游数据发生变化(这是经常的)时,你可以使用脚本对下游资源进行再处理,而不必手动再加工了。

无损数据导入和强大数据准备工具相结合,让虚幻引擎用户能够轻而易举地将CAD资源转化为逼真的虚拟体验。

本文只是十分简要地介绍了我们未来的计划。我们将在即将发布的Datasmith测试版中公布全新的Python工具,所以快来加入www.unrealengine.com/beta吧!

我们还将陆续展示虚幻引擎其他激动人心的开发进展,敬请时刻关注《技术前瞻》系列!