程序化河流生成工具是根据《地平线·零之曙光》的技术分享,在Houdini中实现并优化了它的实现和算法,然后通过UE4端的开发,将方案工具化,同时进行了参数序列化的设计,兼顾了美术效果、功能和易用性。
原型
基于《地平线·零之曙光》的技术分享。
Horizon Zero Dawn: Procedural Rivers & Wires by Ben Schrijvers
方案实现
河流生成的步骤大致如下:
- 在引擎中创建基础曲线信息,设置参数;
- 将曲线和参数传入Houdini,进行计算;
- 将最终结果传回引擎,查看生成效果;
技术特性
- 引擎中使用Spline曲线控制河流流向,Spline曲线自动吸附地形;
- 引擎中Spline曲线信息和工具参数通过后台传入Houdini;
- Houdini中河流曲线上的点向自动向低处滑落;
- Houdini中河流曲线始终从高往低,会自动纠正河流流向;
- Houdini中河流会侵蚀地形,生成峡谷地貌;
- 根据水面和地形接触线生成地表材质;
- 根据河流生成的地形材质Mask剔除植被;
参数设置
河流工具使用自定义的UObject作为参数输入,这个文件一般会配置统一的参数(文件保存路径,材质等),可以被重复使用。
同时,用户需要通过工具Actor的Details参数面板上的参数,控制每条河流独特的参数(宽度,深度等)。
Houdini算法
Houdini拿到Unreal传过来的曲线和参数后,在一个CompileBlock中完成地形和河流模型生成,极大提高节点执行效率。
Developed by 徐門子美(Kevin).