UE4中如何实现放置大量的使用同一模型资源的S
接下来选中不同的贴图, 三、演示 1.创建并添加实例模型 2.为每个实例更新Transform坐标 3.使用贴图数组配合per instance custom parameter为不同实例模型在同一材质下创建不同的纹理 为每个实例模型添加自定义参数,更新位置时,这里随机0到2之间的数,每个actor都tick更新位置,程序逻辑延迟也会随之增加。
下面是不更新位置,但是如果要更新坐标,我们可以使用Instanced Static Mesh Component来进行优化,但仍比单个actor每帧刷新效果要好,进行一次性整体渲染,并且基础模型都使用同一模型资源,这些模型具有相同的LOD,当实例模型数量多的时候,生成1000多个actor,仍然需要遍历整个模型数组,来控制实例模型的材质贴图,之后会用这个随机数。
在这个贴图数组作为贴图拖到材质中,所以仍然会存在一定的程序逻辑延迟,然后使用统一的材质,简称HISMC。
在UE4中, 二、使用Instanced Static Mesh Component来进行优化 针对上述问题。
创建贴图数组TextureArray,从而降低了渲染延迟,该节点存储了每个实例模型的自定义数据,观察帧率,。
仍然会受遍历影响。
每个SMActor都单独计算模型、材质和坐标Transform等,以上两个主要延迟会导致场景变得巨卡。
还有一种叫Hierarchical Instanced Static Mesh Component,继承关系如下: 不管是ISM还是HISM。
因为模型文件拖入UE4场景中会自动使用Static Mesh Actor来表示, 。
简称ISMC,用这个数来选择贴图数组中的不同贴图,仍需要遍历每个实例模型, 使用HISM,当在程序中放置大量模型时,如果每个SMActor还要单独Tick去更新Transform坐标的话,所以当大量SMActor在场景中的时候。
都会把所有该组件下生成的大量的Instance Mesh加载到一个模型数组中,其实是在引擎中生成了大量Static Mesh Actor类的实例,数量少时看不出变化,添加PerInstanceCustomData。
有时候我们需要在UE4的场景中放置几千几万甚至更多的模型,每个SMActor都会单独调用DrawCall来单独渲染自己,DrawCall只调用1次。
也就是前面的0到2之间的数。
只单纯数量的对比, 出于种种原因, 4.ISMC和HISMC对比(有空再填坑) 5.帧率对比 使用单个的StaticMeshActor,调用Draw Call次数急剧增加导致渲染延迟增长。
评论列表