我在这里看到一些BiRP草解决方案,但它们从来没有真正像我想要的那样看起来,所以我自己做了。它没有任何依赖关系,只是与标准Unity地形系统一起工作,因为我是一个吝啬鬼。

大部分工作是适应在[https://github.com/Youssef-Afella/UnityURP-InfiniteGrass](https://github.com/Youssef-Afella/UnityURP-InfiniteGrass]中玩的有趣小技巧,如在视图中远离的草被裁剪+肥胖,以及当摄像机位于上方时弯曲它。 我还使用了草的形状,我在这里看到的[https://bsky.app/profile/kelvinvanhoorn.com/post/3mskokw2vqk2h](https://bsky.app/profile/kelvinvanhoorn.com/post/3mskokw2vqk2h],它是一条三角形,终止于地面上的一个单点,所以你不看到一个硬平直的边缘。 其他优化包括贴图和块化,这是让我难以忍受的巨大痛苦来实现的。

与URP无限草库(除了它不是URP之外)最主要的区别是,它是基于地形采样而不是仅仅是层面上的任何东西的遮罩。 你可以选择1-4个不同的地形层,并且草会根据这些层面的权重在该点调整其高度/密度。 你可以在图像中看到它不会在100%泥土区域中放置。

此外,我将草的颜色与地形层匹配,以使其看起来更柔和。 当级别开始时,我将摄像机放置在地形层上,拍一张照片,然后将其喂给草材质。

这个草系统有以下限制:

  • 草不反应汽车通过它时的变化,我现在不关心它,也可能永远不会
  • 草不改变颜色,如果地形颜色在游戏中改变,因为它仍然基于初始级别的单个快照,以提高性能。 它确实对光线有反应