level 5
KnIfER
楼主
之前我把虚幻引擎的地形模块拆了下来,让它可以完全地程序化生成。这样费些许力气,我就有了受代码操纵的地形贴块。一块地形贴块最好是1017*1017的规格,也就是一平方公里,这样生成较快。
拆原生地形模块的目的是借用其材质、地形草、植被、Ai导航系统。其中只有地形材质和地形草得到完好的保存。地形材质定义了一些列地形相关的材质节点,其中就包括驱动地形草的grass节点。地形草本质上是从材质获取植被信息,然后在玩家周围异步安插Grass type定义的Hierarchical Instanced Static Mesh。至于具体是如何从材质获取植被信息、如何获得高度信息的 暂未阅读。PIE状态下,地形草仍可随地形高度图变化而适配。
使用拆下来的地形模块,完全可以设计一个拼接算法从而达到模拟星球的基本目的。但是在那之前,有几个拦路虎亟待解决,首当其冲的当是Ai导航系统。
虚幻4的Ai导航系统基于开源的Recast Navigation。此算法会对场景采样,建立voxel模型,找到可以行走的平面、斜面。在虚幻4编辑器中按P可以预览可以行走的部分。此算法只适用于一般游戏,而无法导航像蜘蛛这样可以垂直爬墙的生物,更无法直接用来做星球表面的AI导航。
从Github下载Recast源码编译后发现修改较为困难。一个简单的思路是旋转场景的collision样本,然后应用传统方案,再旋转回来。
即使这样也仍让我感到棘手,确实非一人朝夕可致。
看看已有的东西,横扫千星的AI球面导航就很不错,Supreme Commander 2的所谓“Flowfield Pathfinding”也算十分精巧。虚幻4也有些免费开源的AI导航插件,比如DoN、uesvon,不过这两者都是3d空间给鸟类、鱼类导航的。
2019年07月08日 04点07分
1
拆原生地形模块的目的是借用其材质、地形草、植被、Ai导航系统。其中只有地形材质和地形草得到完好的保存。地形材质定义了一些列地形相关的材质节点,其中就包括驱动地形草的grass节点。地形草本质上是从材质获取植被信息,然后在玩家周围异步安插Grass type定义的Hierarchical Instanced Static Mesh。至于具体是如何从材质获取植被信息、如何获得高度信息的 暂未阅读。PIE状态下,地形草仍可随地形高度图变化而适配。
使用拆下来的地形模块,完全可以设计一个拼接算法从而达到模拟星球的基本目的。但是在那之前,有几个拦路虎亟待解决,首当其冲的当是Ai导航系统。
虚幻4的Ai导航系统基于开源的Recast Navigation。此算法会对场景采样,建立voxel模型,找到可以行走的平面、斜面。在虚幻4编辑器中按P可以预览可以行走的部分。此算法只适用于一般游戏,而无法导航像蜘蛛这样可以垂直爬墙的生物,更无法直接用来做星球表面的AI导航。
从Github下载Recast源码编译后发现修改较为困难。一个简单的思路是旋转场景的collision样本,然后应用传统方案,再旋转回来。
即使这样也仍让我感到棘手,确实非一人朝夕可致。
看看已有的东西,横扫千星的AI球面导航就很不错,Supreme Commander 2的所谓“Flowfield Pathfinding”也算十分精巧。虚幻4也有些免费开源的AI导航插件,比如DoN、uesvon,不过这两者都是3d空间给鸟类、鱼类导航的。