关卡要求
必须在世界分段关卡中使用网格体分段。 新建关卡时,必须选择开放世界关卡。
创建网格体分段Actor
要创建网格体分段Actor的基础,有3种选择:
创建矩形
导入高度图
转换网格体
创建矩形
创建矩形(Create Rectangle)工具可以创建一个平面网格,作为网格体分段的基础,这和创建传统地形的方法非常相似。
| 设置 | 说明 |
|---|---|
| 网格体 | |
尺寸(Size) | 以默认单位(厘米)表示的大小。 |
分辨率(Resolution) | 每条XY轴上创建的四边形数量。 |
| 分段 | |
生成(Generation) | 自动(基于最大三角形数量) 显式(基于布局和分辨率) |
最大三角形数量(Max Triangles) | 每个分段允许的最大三角形数量。 控制将导入的网格体自动分割成易于管理的分段。 之后可使用“拆分(Split)”和“合并(Merge)”工具,根据需要手动合并和拆分这些分段。 此选项仅在“分段生成”设为“自动(Automatic)”时可用。 |
布局(Layout) | 定义X-Y轴上的分段数量。 |
分辨率(Resolution) | 定义每个分段的特定分辨率(X-Y轴上的四边形数量)。 |
保存并卸载(Save and Unload) | 启用此选项,创建时会自动卸载世界分段中已创建的基础分段。 创建无法一次性全部加载的大型网格体分段时,此功能非常有用。 |
| 添加 | |
现有网格体分段(Existing Mesh Partition) | 此选项支持将新的矩形网格添加到现有网格体分段Actor,而非新建一个。 |
新网格体分段定义(New Mesh Partition Definition) | 选择一个网格体分段定义,将其分配给新建的网格体分段。 |
导入高度图
导入高度图(Import Heightmap)工具可以创建根据所选高度图变形的网格,作为网格体分段的基础。
| 设置 | 说明 |
|---|---|
| 高度图 | |
文件名(Filename) | 浏览到所需的高度图文件。 |
| 网格体 | |
分辨率(Resolution) | 每条XY轴上创建的四边形数量。 |
尺寸(Size) | 以默认单位(厘米)表示的大小。 |
转换网格体
转换网格体(Convert Mesh)工具可以将静态网格体Actor转化为网格体分段Actor,并将其拆分为多个基础分段。
| 设置 | 说明 |
|---|---|
| 拆分 | |
每侧分段数量(Number Of Sections Per Side) | 控制网格体拆分的分段数量。 例如,值为3表示将网格拆分为9(3x3)个分段。 |
| 添加 | |
现有网格体分段(Existing Mesh Partition) | 勾选此项后,转换操作会将新网格体添加到现有的网格体分段,而非新建一个。 |
新网格体分段定义(New Mesh Partition Definition) | 选择一个网格体分段定义,将其分配给新建的网格体分段。 |
分配网格体分段定义
如网格体分段定义文档中所述,定义包含网格体分段Actor的重要配置设置。 以下是为Actor分配网格体分段定义的方法:
在关卡中选择网格体分段Actor。
在细节(Details)面板中,找到网格体分段定义(Mesh Partition Definition)设置,然后从内容浏览器分配MPD_<name>资产。
使用网格体地形修改器
现在你有一个基础网格体分段Actor,接下来就可以开始构建你的世界。 在编辑器工具栏中打开网格体地形模式(Mesh Terrain Mode),选择修改器(Modifiers)选项卡。 其中有很多修改器可供使用。 你可以根据你想提供的输入类型,选择不同的修改器。 大多数修器会根据输入移动地形顶点。
纹理修改器使用纹理的值使地形产生位移。
样条线、噪点、雕刻和网格体使用不同的输入使地形产生位移。
另外,还有一些修改器可以改变地形的拓扑结构,对地形重构网格或进一步细分,以实现更高的分辨率、更精细的细节。
布尔修改器可以添加或减去网格体的一部分,合并来自源的三角形。
你可以灵活组合不同的方法,实现不同的地形结构,优化拓扑。 修改器通过从工具栏拖放添加。
修改器基本参数
参数 | 说明 |
受影响的网格体分段(Affected Mesh Partition) | 受影响的网格体地形通常自动设置。如果想断开某个修改器,或者将它重新分配给不同的网格体地形,可以手动调整。 |
优先级层(Priority Layers) | 优先级层是影响构建顺序的主要层。 这些层在网格体分段定义中设定。 |
层子优先级(Layer Sub-Priority) | 必要时,可以设置子优先级。 比如两个修改器必须位于特定层,但是要按先后顺序构建,那么就可以将该值设为更高的数字。 |
投影平面(Projection Plane) | 投影平面显示修改器投影的主要平面大小和方向。 |
局部边界(Local Bounds) | 以黄色显示修改器组件的局部边界(类似体积)。 |
世界边界 | 世界边界显示组件的完整世界空间边界;有助于查看任何特定修改器正在评估的区域。 |
在编辑器中禁用(Disabled in Editor) | 在编辑器中禁用修改器将在当前会话中关闭修改器。 构建时处于活动状态。 |
在构建中禁用(Disabled in Build) | 在编辑器和构建中禁用修改器。 |
基础增长(Base Growth) | 网格体分段构建器在构建修改器的过程中,一开始只考虑边界框与构成该分段的原始基础边界(称为“基础”)重叠的修改器。 基础增长允许修改器沿指定方向概念性地“扩大”原始基础边界框。 这样,后续的修改器就能与更新后的基础边界相交。 |
覆盖范围和程度
与修改器设置类似,有一组通用的覆盖值可以定义修改器的大小和覆盖区域。 不同功能的修改器可能有不同的覆盖选项。
添加权重通道
大多数修改器都有将数据写入权重通道的附加选项。 你可以使用网格体分段定义中定义的权重通道,在材质设置中混合纹理集、其他渲染属性,或在PCG中使用。
例如,这里展示了一个补丁修改器,写入在这个特定网格体分段定义中定义的Gravel权重通道,并由网格体分段材质用于在地形上应用沙砾纹理。
调整优先级
创建地形时,构建优先级非常重要。 叠加不同的修改器可以构建复杂的地形,同时还可以灵活修改。 网格体分段定义设定了一个可以分配修改器的期望顺序。 除了优先级层之外,你还可以设置子优先级。 你可以使用子优先级控制在特定层上设置的所有修改器的构建顺序。
了解构建优先级和层的机制有助于改进开发流程,因为它能让你控制世界的构建方式,这意味着你可以将复杂的局部细节和大型结构性改动放在不同的层中。
为了更好地理解优先级层,这里有一个分配给第一优先级层的蛋形布尔修改器。 然后,使用虚幻引擎徽标将纹理修改器分配给第二优先级层。 顺序很重要,否则纹理修改器无法影响任何网格体分段几何体。
控制网格体分辨率
网格体地形不受统一分辨率的限制。 设置网格体地形时,要记住两个主要概念。
分段的数量。 一般来说,你不希望分段太大。 大型分段意味着对修改器的任何改动都可能产生更大的影响,即使是很小的改动,网格体地形构建器也会重新计算整个分段。
分段分辨率。 创建或转换为网格体地形时定义的分辨率,就是你正在使用的基础分辨率。 你可以修改这一分辨率,而且不用统一改变分辨率。这意味着,你可以轻松地在需要的地方局部更改分辨率。
你可以通过多种方式更改分辨率。如果需要,可以直接在基础网格体上更改,但更常见的是使用修改器。
你可以使用重构网格修改器或者样条线重构网格修改器控制局部分辨率。 这两种修改器还可以在重构网格模式和曲面细分模式之间切换。除了使用修改器修改分辨率,你还可以使用编辑选项卡中的分段合并工具或拆分工具,调整基础分段的数量。
重构网格与曲面细分
你可以在重构网格模式或曲面细分模式中,使用重构网格修改器。
重构网格会生成新的均匀三角形,曲面细分会进一步细分现有三角形。
大多数情况下,曲面细分速度更快,重构网格速度较慢,具体取决于设置。
重构网格
重构网格会均匀地创建新三角形,如果使用密度遮罩,则非均匀地创建。 目标边长(Target Edge Length)是重构网格模式下需要调整的主要参数。 它还有一个额外的选项,可以使用权重通道控制重构网格密度。
曲面细分
纹理修改器
控制网格体分辨率的另一种方式是使用具有自适应曲面细分选项的纹理修改器。
雕刻和绘制
雕刻(Sculpt)修改器可以雕刻和绘制网格体分段。
选择雕刻修改器,即可使用雕刻和绘制选项卡。
雕刻修改器还支持在修改器本身内拥有局部网格体层,以便整理和管理自己的工作流程。
渲染材质模式
雕刻和绘制工具中提供了多种材质模式。
使用水体工具
网格体地形与水体系统兼容,但需要完成简单的设置——为Actor添加网格体分段组件。
湖泊和河流
使用WaterBodyLake或WaterBodyRiver Actor时,添加相应的LakeModifier或RiverModifier,然后通过分配受影响的网格体分段并设置优先级层,配置修改器组件。
水体地形改造
在水体组件中找到地形部分,配置湖泊和河流的地形改造效果。
水地形集成中的部分地形雕刻功能尚未转换。
权重通道
水体工具还可以影响网格体分段权重通道,以便在需要时应用材质或其他效果。
选中水体组件时,可以看到层权重图设置(Layer Weightmap Settings), 你可以在其中添加特定的权重通道。 权重通道 必须存在于网格体分段定义中才能渲染。
岛屿
网格体分段不需要常规的岛屿水体工具。 可用常规的样条线修改器替代,因为岛屿不影响水体本身,只影响地形。
以下是具体的设置示例:
在水优先级层(在此特定网格体分段定义中定义)上设置一个湖泊水体,子优先级设为1。
在同一水优先级层上,添加常规样条线修改器,用于塑造岛屿形状,子优先级设为2。
海洋
海洋水体工具不需要任何特殊设置,不需要任何网格体地形修改器,因为不需要它影响地形改造。 海洋样条线仅用于裁剪地形下方的海洋水体。
创建地形孔洞
要在地形上创建孔洞,可以使用布尔修改器,并将其设为修剪(Trim)。
请按以下步骤操作:
将布尔修改器拖放到网格体地形上。
将网格体源模式(Mesh Source Mode)设为静态网格体(StaticMesh)。
从内容浏览器选择一个静态网格体(例如EditorSphere)。
将布尔运算(Boolean Op)设为修剪(Trim)。
如果出现如下图所示的锯齿状三角形,说明这些三角形未完全包含在修改器边界内。
解决方法是调大扩大运算符边界(Expand Operator Bounds)的值。 对于像示例中这样的垂直表面,只需增加Z轴,因为问题出在沿垂直方向过度拉伸的三角形上。
蓝图和网格体地形
你可以使用蓝图构建各种工具来处理网格体地形。
上图展示了一个简单的动态网格体蓝图示例,其中用到了样条线和布尔修改器。 在蓝图事件图表中,样条线用于创建动态网格体,该动态网格将用于布尔修改器。
你可以用它来创建隧道或拱门。 例如: