【UE5 水体系统】

水体的网格系统及表面渲染

介绍表面网格体和材质如何被用来渲染水面。

水系统由两个关键元素构成:可编辑的水面水面材质
这两个元素确定了项目中的水如何表现,以及与所接触对象互动。
这可以是非常简单,比如水材质如何将光反射和折射到与水面接触的对象上。
对于Gameplay,这可以是角色在水中移动时如何让水面产生波浪,或者对象在水面上漂浮时的浮力有多大。

水面网格体

水系统有自己的基于样条线的网格体系统,可定义世界内应该包含水的区域。它使用 水网格体Actor(Water Mesh Actor),设置应用于关卡中放入的所有 水体Actor(Water Body Actors)(江河、湖泊和海洋)的属性。水网格体主要定义了所渲染水面的质量和细节。

你必须将水网格体Actor放入场景中,以生成关卡中"水体(Water Body)"类型的表面。水网格体Actor本身并不会渲染表面。水体将使用样条线来定义关卡中表示江湖、湖泊和海洋的区域。这些样条线定义了水网格体Actor在何处绘制并渲染水网格体图块。这样做更高效,因为它仅渲染当前摄像机视图中可见的表面网格体。

【UE5 水体系统】_第1张图片
水网格体Actor位于场景中时,将水体拖放到场景中可添加或移除表示水面的图块。由于所有水体使用相同的网格体来渲染水面,因此它们会无缝地混合在一起(见下)。这还意味着,你可以在不同类型的水面之间进行过渡,如从奔流的江河汇入平静的湖泊或汹涌的海洋。

  • Body Lake
    【UE5 水体系统】_第2张图片

  • Body River
    在这里插入图片描述

  • CMD 调试指令
    使用控制台命令 r.Water.WaterMesh.ShowWireframe 1 启用水网格体线框视图,以查看不同水体之间的这些过渡如何相互作用,从而创建无缝的表面。
    【UE5 水体系统】_第3张图片

水网格体Actor

水网格体Actor(Water Mesh Actor) 可控制表面网格体的质量,该网格体构成放入关卡中的各个水体的图块。各个水体还对关卡中的大小设置了自己的硬性限制。它还提供了特定于海洋水体的额外选项。

【UE5 水体系统】_第4张图片

在使用高度曲面细分的表面和大的范围时,这些设置可显著影响性能。

水网格体细节级别缩放和曲面细分

细节级别(LOD)或水网格体图块的处理方式是,每帧遍历一个四叉树,生成屏幕上可见图块的最优集合。接着,这些图块会针对每个细节级别尽可能折叠,在最重要的地方(即最接近当前摄像机视图的地方)应用更大或更小的密度。

每个细节级别由摄像机视图周围基于距离的同心圆构成,细节级别越低离摄像机越远,并且包含的顶点数是上一级别的一半。

若使用传统细节级别的几何结构(例如静态网格体),几何结构会基于屏幕大小在不同级别之间快速过渡,这可能导致网格体在不同级别之间切换时显示比较明显的过渡。由于水系统使用网格体图块来表示表面,随着细节级别的过渡,这些级别会彼此变入和变出,这样四个四叉树会在切换到更低的细节级别时变为单个四叉树,或在切换到更高的细节级别时变为16个四叉树(参阅下面的示例)。

【UE5 水体系统】_第5张图片
水网格体Actor提供了功能按钮来显式定义网格体图块的细节级别和曲面细分量。其中每个属性都彼此独立地起作用,但应同时配置,以在水面的性能和质量之间实现良好的平衡。

每个同心细节级别的大小半径由 LODScale 属性控制。它设置与摄像机的距离,图块应从此距离开始变为更低的细节级别。

曲面细分因子(Tessellation Factor) 通过增加图块包含的顶点数,设置了对于放入关卡中的所有水体,你想要网格体图块拥有的质量程度。较高程度的曲面细分对湖泊和海洋水体最为有益,尤其是有波峰很大、波谷很低的波浪时。

设置这些属性时,请务必平衡以下各项内容:

  • 高质量特写镜头,使玩家可看到更精细的细节
  • 拉远距离后质量变低,但这对于玩家来说并不重要
  • 曲面细分质量的性能成本

请记住,你的水材质也可能具备水系统不需要通过曲面细分处理的精细细节。

通过以下方法启用水图块的可视化:

  • 在关卡视口中使用 笔刷线框(Brush Wireframe) 视图模式。如果你在场景中没有大量几何结构,或者只有可见的水网格体,这种方法非常适合。
  • 使用控制台命令将水网格体渲染为线框:
    • r.Water.WaterMesh.ShowWireframe 1 会将所有水网格体显示为线框。
    • r.Water.WaterMesh.ShowWireframeAtBaseHeight 1 会将所有水网格体显示在其平底高度位置。

水网格体图块大小、范围和远距离

水网格体Actor提供了选项,用于定义构成关卡的水网格体的各个图块的大小,定义每个有多少图块,并且该Actor还处理海洋中水天相接处的长距离情况。

图块大小(Tile Size) 属性设置了构成水网格体的各个图块的大小。这些是按默认世界单位测量的。提高/降低"图块大小(Tile Size)"会缩放构成关卡中的水网格体的所有图块。

【UE5 水体系统】_第6张图片
图块范围(Extent in Tiles) 属性设置了构成水网格体的各个图块的数量。范围是针对XY轴从水网格体中心到边缘进行测量的。

【UE5 水体系统】_第7张图片
远距离(Far Distance) 用于填充"图块范围(Extent in Tiles)"属性所用最远端图块与地平线之间的空间。这会添加一个低顶点水网格体,它会造成海洋水体图块无限延伸的错觉。

【UE5 水体系统】_第8张图片

你可能感兴趣的:(UE,ue5)