大家好!我是一个图形工程师,试图使用Nanite Foliage来创造动态、交互的folios叶子,适合我们的天气驱动游戏。
以下是我找到的内容:
- 世界坐标偏移(World Position Offset)不再可行。 WPO 以每个顶点(per-vertex)为单位运行,采用高密度(high density)的Nanite 网格,其太过昂贵。
- 我们首先查看了Epic的实验Nanite Foliage和Dynamic Wind插件,它们提供了一个良好的起点,但需要大量修改。
- 动态风(Dynamic Wind)插件提供了一个好用的框架基础,使用骨骼网格(Skeletal Meshes)可以应用每个关节动画(Per Bone animation)而不是每个顶点动画。这已经集成了皮肤路径(skinning paths)和计算着色器(compute shader)来实现动画的修改。
动态插件的最大限制是没有对世界空间位置的叶子实例的风變化支持,这对于像我们的动态天气系统来说是必不可少的。
我的第一步,允许空间化的變化(spatialised variation)在每个叶子实例中,试图采样我们的风图(Wind Map)在实例的位置,然后根据風力(Wind Strength)和風向(Wind Direction)生成动画。但是,实际上,在一个地图里可能有成百万的叶子实例,这种方案太慢,而需要针对每个实例生成一个独特的动画。
我的下一步想到,如果无法在每个叶子实例的位置单独采样風图,我是否可以将叶子实例排列成一个大网格,将風向采样在每个单元(cell)的中心?这意味着我可以生成一个动画 per-foliage-type per-grid-cell,这是一个巨大的性能节省。但是,意味着在同一个网格单元里所有的叶子实例有相同的动画,这意味着每棵树不是只看起来一样了,也具有相同的动画。
最后,我通过以下内容解决了我的问题,我想保存一下,所以就将其转换成了视频给感兴趣的人看https://www.youtube.com/watch?v=JYXo0yqKZ2k。
还想知道其他人是否有类似的使用Nanite foliage或大规模风动画的尝试!
评论 (0)