艺术家Simon Verstraete为大家分享UE5的Nanite技术解析,并介绍使用Houdini和UE5的Nanite系统创建悬崖的过程

关于UE5的Nanite技术解析


1
UE5介绍


UE5的Lumen和Nanite系统,可以加快游戏速度并减少优化模型(如 LOD、烘焙等)的时间。

这里主要讲的是Nanite,可以在UE5 中打开大型复杂程序资产和场景并在游戏中运行良好。尤其是拥有Houdini Engine的Houdini 插件时,可以直接在游戏编辑器中打开程序工具来生成需要的内容。


2
Nanite分析


UE5中的Nanite是一个虚拟化的几何系统,可以在场景中具有高多边形网格。对于用户来说,这只是一个开关,启用让Nanite处理该几何体。
关于UE5的Nanite技术解析
如果在导入几何体时启用此功能,它将准备您的网格。将分析网格并创建分层集群。这些簇是三角形组,根据场景中所需的细节,它们将改变这些簇的密度或细节。这是集群的图像,如果您在场景中四处走动,您会看到它们发生变化以获得场景的正确细节。
关于UE5的Nanite技术解析
Nanite有自己的渲染通道并绕过绘制调用。绘制调用现在非常重要,可以密切关注游戏性能,在Nanite的渲染通道中根据相机视图检查需要渲染的几何体。因此并非网格的所有实例或三角形都需要完全渲染,与网格的集群交换相结合,剔除与集群相结合会大量减少三角形的数量。

这里有一个剔除示例,当在UE5中构建某些东西时,可能也会看到这一点。可以从轮廓中看到部分没有被渲染,然后它被光栅化,3D网格场景被转换为2D屏幕像素。

以后 Epic 的团队很有可能会发表演讲并对其进行更多的分解。由于UE5的正式版本计划明年发布,因此也可能在此过程中做出改变。


3
创建悬崖


在Houdini中生成2个高多边形网格,使用这些网格测试是否只能使用顶点颜色来保存反照率颜色而不是使用纹理。既然 Nanite 处理大量多边形,为什么不尝试将颜色保存在顶点中,那么可能根本不需要纹理。这在使用 Houdini 以程序方式生成时也很有用。

第一个网格是大悬崖岩石。从一个圆形开始,除了高度之外添加噪音。然后挤压形状,稍后在侧面创建细节。然后为了变化,分散在点周围并在点上复制该形状。这是岩石的遮挡物,然后添加岩石的形状和细节。在那之后,网格需要更多的多边形来创建岩石,为此使用体素。体素会大大增加多边形数量,这与 ZBrush 中的 ZRemeshing 非常相似。使用三平面置换,可以创建最终的细节,在网格上投影高度图并置换形状。还可以选择投影颜色图,因此在此处置换模型并添加颜色。
关于UE5的Nanite技术解析
第二个网格是地面几何体,使用地形系统(在 Houdini 中也称为 Heightfields)。创建高度场后,将形状投影到它上面。在这里,使用大悬崖的形状。
关于UE5的Nanite技术解析
为了混合形状,可以使用模糊并将其混合回来,这样就不会丢失太多细节。模糊形状会去除细节,噪声造成的失真会产生一些有趣的细节。
关于UE5的Nanite技术解析
最后使用腐蚀节点,在地形上进行模拟,例如水和碎片掉落。在这里,拥有良好的地形比例和分辨率非常重要。
关于UE5的Nanite技术解析
地形现已完成并转换为几何图形,以便后面与Nanite 一起使用。地形转换后,是一个高多边形网格,网格本身有很多来自侵蚀的细节。在这里添加顶点颜色,如果查看属性,就会获得来自 Erode 节点的数据,这些数据提供诸如水和碎片之类的地图,用于在模型上创建有趣的颜色变化。
关于UE5的Nanite技术解析
这是获取所有面具并将它们与颜色混合的过程。
关于UE5的Nanite技术解析

完成这一切后,网格导出为 FBX 并导入到启用 Nanite 的UE5 中。


4
使用Houdini


Houdini非常适合生成大型复杂场景和自动化任务,为艺术家节省了大量时间,因此不必从头开始放置和构建所有内容。比如孤岛惊魂 5 和 PS4 的蜘蛛侠,这两款游戏大部分开放世界都是由 Houdini 生成的。艺术家可以使用曲线或将立方体放置在需要放置的地方,然后由程序处理其余部分,例如放置模型、变形地形、创建新几何体等。

这里主要为艺术家生成一个基本场景或世界,不必从头开始放置和创建所有内容。创建基本场景后,可以进行手动调整以更好地适应游戏或场景。

如果要构建一个所有网格都具有这些高多边形细节的场景,内容创建也可能需要更多的工作。现在经常在法线贴图中伪造细节,但如果它需要在几何体中,就需要对这些细节进行建模或雕刻。通过自动化在几何体中添加表面或材料细节的过程,Houdini可以发挥重要作用。


5
Nanite局限性


对于上面用岩石制作的场景,因为岩石的形状更大,而且它们不是薄的表面。当涉及到薄表面时有一些限制,也会导致大量透支。对于 Nanite,一直在优化和减少或删除网格的三角形。对于薄的表面,几乎没有任何三角形要移除,所以很多三角形被渲染和重叠。有一个调试模式,就像一个热图来显示高透支区域。

以下是草等薄表面的大量透支示例:
关于UE5的Nanite技术解析
这是摇滚场景的图像,大家可以看到透支的巨大差异:
关于UE5的Nanite技术解析

另一件需要注意的薄表面是 Nanite 的自动缩小或聚集,从远处看时,可能会看到网格发生一些变形。

Nanite目前有一些限制。Epic团队仍在研究使用Nanite,因为这是UE5的测试版本。以下是一些其他限制:使用材质使网格变形,例如世界偏移;实例上的顶点绘制;不透明度模式等。

在文档中,有一个静态网格和 Nanite 网格的示例,它们都具有 1.5M 多边形。
关于UE5的Nanite技术解析
静态网格需要 150MB,而 Nanite 网格需要 19MB。这是一个很大的差异,当然,多边形数越少,差异就越小。Nanite 的另一个优点是不需要 LOD,甚至在某些情况下不需要法线贴图,这可以节省空间和时间。可以结合使用诸如在 Nanite 网格上使用详细的法线贴图来创建细节。

此外,SSD被导入以处理大量网格和集群细节的交换。例如最新演示中所示,在一秒钟内切换到一个全新的环境。另一方面,作为开发人员,需要创建这些原始网格,如果所有资产的多边形数量都非常高,这通常会占用更多空间。根据使用的 3D建模软件,在处理这些高多边形资产时可能会遇到更多问题。