在项目中使用草地工具时您可能会注意到 - 超过一定距离的静态网格体将不会被显示。 这称为剔除,是一种优化方法 - 离摄像机一定距离的物体将不会被渲染,以减轻项目的渲染负担。 在UE5中,有多种方法对草地工具停止渲染静态网格体的距离进行调整。 草地工具静态网格体剔除距离的第一种设置方法:在 地形草地类 Actor 的 Grass Varieties 部分对 开始 和 结束 剔除距离进行设置。
点击查看大图。
上图为风筝 demo 中部分草地静态网格体的剔除设置。 上图中的原始数值为 6,500,如将其改为 30,000,较远的草地静态网格体也将被渲染。
Default of 6,500
Set to 30,000
仔细观察上方的对比截图会发现无论将 End Cull Distance 的数值设为多大,超过一定距离的静态网格体均不会被渲染。 如要渲染更远距离的静态网格体,需在 UE4 控制台输入以下带小数的命令。
Foliage.MinimumScreenSize 0.0001
Foliage.MinimumScreenSize 命令将在屏幕空间中增加或减少静态网格体被剔除的大小。 屏幕空间中的相对大小将结合到摄像机的距离使用,确保不会偶然性地对离摄像机很远的小物体进行渲染。 可将此设置看做一个全选操作,即使偶尔忽略一些网格体的剔除设置,项目性能也不会受到影响。 如需输入命令,在键盘上按下波浪键(~)或反勾号(`)键在UE5编辑器中打开虚幻控制台。 打开虚幻控制台后,可看到类似下图的命令输入框出现在UE5编辑器底部。
点击查看大图。
将命令 Foliage.MinimumScreenSize 0.0001 输入控制台,然后按下 Enter 键应用。 重建草地图后,在视口中可以发现更远距离的静态网格体将被渲染。
点击查看大图。
对比图显示默认设置 0.0001 和 0.00000001 之间的剔除距离差异。
Original Settings of 0.0001
Max Settings of 0.00000001
请注意:使用大于默认 0.0001 的数值可能引起性能问题。 如需增加 Foliage.MinimumScreenSize 的数值,必须先进行性能测试,确保对剔除执行的变更不会对项目整体性能产生较大影响。
基于程序化植物体积域的遮罩
程序化生成整个森林可节约大量时间。如果需要限制特定树木只在特定区域生成,应该进行哪些操作? 可通过一系列操作实现此效果,如使用多个程序化植物体积域,或使用植物工具在需要的地点放置树木。然而项目将复杂化,维护工作量将变大。 幸运的是,植物类 拥有对静态网格体(静态网格体被指定到地形材质中特定图层)放置进行限制的选项 - 在绘制中图层公开时只允许生成该植物类。
无论使用哪种方法,都需要在关卡中选择 Procedural Foliage Volume,然后点击 Resimulate 按钮更新并查看变更。
点击查看大图。
下图中是非常简单的地形材质设置,允许三种不同植物类使用三种不同纹理。 注意 Layer Blend 中每个输入的独特命名。 这些命名非常重要,因为它们决定着植物类受限的地形地貌图层。
点击查看大图。
地形材质设置好后,需要对植物类进行设置,使其与正确的地形图层关联。 下图中显示的植物类设置范例可将指定静态网格体限制放置在地形材质中的一个特定图层上。
点击查看大图。
如要进行自行设置,须在植物类中执行下列操作:
- 展开 Show Advanced 箭头图表,显示 Landscape Layers 选项。
- 按下 elements 右方的加号图标在阵列中添加一个新输入。
- 为该植物类限制放置的地形材质图层输入命名。
设置好材质和植物类型后,将材质指定到地形地貌,然后以常规方式开始地形绘制。 绘制完成后(或如需查看当前效果),在关卡中选择程序化植物体积域,然后按下 Resimulate 按钮更新并应用变更。 完成后,生成的植物将被限制在与其关联的地形纹理中(如下图所示)。
点击查看大图。
仔细观察上图可发现所有植物均已按预期被程序化放置,而生成的网格体不会相互混杂。 例如阔叶树只在应用青草纹理的地形上生成。 仔细观察会发现灌木和松树也只在其各自限制的地形上生成。