开出花田的魔法:Unreal PCG刷草工具

偶然接触了Unreal的PCG插件,搓了个刷草工具,记录一下。

工具简介

使用Unreal的PCG插件做出来的刷草工具。支持在刷草工具的Actor范围内按权重和密度生成草地,也支持使用spline圈出范围和镂空区域(草环的效果)

前期准备

  1. 在Unreal中启用PCG插件
  2. 草/花的静态网格体

蓝图

样条线模式

  1. 按类别获取样条线(GrassSpline/HollowSpline)
  2. 按标签过滤数据(方便我们使用多个PCGGraph实例,每个实例可以单独处理一组tag的样条线)
  3. 使用样条采样器,模式选择 ”内部“ ,生成样条内部的平面
  4. 平面投影到地形上
  5. 镂空区域样条线也作上述处理,然后两者使用差异节点求差集得到生成草地的平面

非样条线模式

  1. 获取地形数据即可
  2. 在表面采样器节点中,如果使用样条线,则要勾选 “已解除绑定” ,这样样条线在actor范围外也能正确采样到。反之,则要限定在actor范围内,否则会在整个地形上采样导致生成的点太多

重载网格体和权重并生成草场

  1. 表面采样器在表面生成点(点范围设置为[1,1,1],密度通过参数重载进行调节,效果看起来比较好)
  2. 使用 “添加属性”节点 ,勾选 “拷贝所有属性” ,将权重数组附加到到静态网格体数组中
  3. 使用 “匹配并设置属性”节点 ,为每个点分配一条数组元素(此时包含了静态网格体和权重值),勾选“匹配权重属性”,按权重进行网格体的分配
  4. 使用 “静态网格体生成器”节点 ,网格体选择器类型选择PCGMeshSelectorByAttribute,属性名称就是静态网格体的属性名(例如Mesh)

效果展示

开出花田的魔法~