All Houdini Unreal Engine 4

Houdini 支持 unreal bake foliage with mark

 
 

需求:区分 Foliage 对象是由哪个 Houdini HAD 生成的 或者 是否是人工刷出来的。

 
 

使用:

 
 

所有的 Houdini HDA 在 Bake Foliage 这一步骤的时候,都会给生成的Foliage打上标记。这一步是用户无感知的,也不可以不打标记。

 
 

但是在 Bake Foliage 这一步骤的时候,用户可以选择是否删除场景内已存在的相同标记的 Foliage。

选项:

勾上表示会删除场景内已存在的相同标记的Foliages;

不勾表示不会删除场景内已存在的相同标记的Foliages;【默认】

 
 

要注意的是:

  1. 删除场景内已存在的相同标记的Foliages,场景内的定义是当前激活的Level。

    比如图示激活的就是 GE_001_Basin_0_1 场景。

  2. 标记不等于 HDA 的名字,因此支持区分一个场景内多个同名的 HDA 生成的内容。
  3. 标记等于 HDA 的名字 + HDA加入场景的顺序,以每次重启项目为准。

     
     

例:

你向场景内拖入了 HDA_A 的第一个并生成BakeFoliage,然后又拖入了 HDA_A 的第二个并生成BakeFoliage,然后删除HDA_A的第一个,再拖入了 HDA_A 的第三个并生成BakeFoliage。

 
 

结果:

勾选Delete的情况下,三个生成结果都会保留;

勾选Delete的情况下重启项目后,再依次拖入三个 HDA_A,则相同顺序的 HDA_A 生成结果会删除并重新生成。

 
 

该功能支持 BakeFoliageLevels 使用,在这种情况下会删除所有Foliage Bound内的相同标记Foliage对象。

 
 

 
 

实现:

 
 

核心就是给 FFoliageInstance 对象加上一个标记信息:

 
 

然后 FHoudiniEngineBakeUtils::BakeHoudiniActorToFoliage 里面的实现就是:

 
 

第一步获取当前在处理的标记;

 
 

第二步就是删除当前场景内的该标记FoliageInstance对象

 
 

最后就是在新的Bake的时候给每一个新生成的FoliageInstance对象打上标记