Foliage Mode 下编辑(擦除)SMF(静态网格体植被)特别卡

虚幻5.6版本:

1、新建项目,保持默认配置;

2、将引擎自带的Cube静态网格体,复制1份,开启Nanite;(这里跟开不开Nanite应该没关系)

3、用这个Cube转成SMF,属性如下;

[Image Removed]

4、开启FoliageMode,大面积的刷这个SFM,643K个实例,FPS大概100帧;

[Image Removed]

5、通过笔刷手动编辑(擦除),帧率调到13FPS左右,瓶颈在Game线程:

[Image Removed]

<br/>

我们项目需要有大面积(远远大于足球场)且很密集的草,来模拟真实草地的效果,实际情况比上面的测试还要多得多(可能某些SMF的实例有1-2M之多)。

这样子一直在非常低的帧率下进行编辑,非常影响工作效率。项目刚从UE4转到UE5,在UE4中进行上面的操作还是比较流畅的。

<br/>

请问各位大佬该如何解决?

您好,我本地测了下在擦除的时候倒还正常,如果是game线程的卡顿您可以用unreal insight抓一下就能看出是哪个函数导致的

感谢回复,但是我这边换了台电脑测试,同样的。​我上传了工程,可以麻烦用我的工程看下吗?SMF少量不会卡,超过几十K的时候就会降低非常多帧率。

我看了下主要是卡在了FoliageMeshInfo_RemoveInstance中,主要是一瞬间要移除的数量太多了,如果是world partition地图你可以在调整Instanced Foliage Grid Size这个值调小,在Editor Preference下设置这个值对之前的地图不管用,你需要通过commandlet将这个值应用到之前的地图上,具体操作是执行对foliage的builder应用到这个地图上,命令行如下,最后一个参数就是GridSize的值

UnrealEditor.exe <YourProject>.uproject <YourMap>.umap -run=WorldPartitionBuilderCommandlet -Builder=WorldPartitionFoliageBuilder -NewGridSize=3200

执行完后再在编辑器中打开这个地图可以看到在world setting中Instanced Foliage Grid Size生效了,然后用笔刷移除的时候数量就降下来了,就不卡了

请问非world partition的地图该如何处理呢?

现在卡顿主要是一个AInstancedFoliageActor内部数量太多了,非WP除了调整密度参数还可以按区域创建多个子关卡,在Foliage Mode勾选Place in Current Level去刷,这样instance会放到这个子关卡的FoliageActor里,或者用pcg这种方式代替目前的方案

感谢!

不客气的,有问题再交流~