HDA指北

首先牢记这个网站——Houdini Engine for Unreal

提供了UE4插件中各种可自定义的相关变量,建议在使用Houdini的UE插件时先过一遍这个文档,了解一下插件都能干些什么。

在制作HDA工具时,Special Attributes and Groups这部分的变量经常用到。插件支持的变量分为两大类——Houdini to Unreal,和Unreal to Houdini。拿获取mesh name和自定义mesh name这两个功能举个例子:

当不作任何特殊处理时,HDA烘焙的新staticmesh的名称一般是HDA名+随机编号。现在我希望这个bake物体和输入mesh同名。要达到这个目的,就需要在HDA中设置先获得unreal中输入物体名,然后将这个名字赋给bake后的物体名。这就涉及了上面所说的Houdini to UnrealUnreal to Houdini中提供的变量。

在这两个页面进行搜索,不难找到和上述需求相关的两个变量——unreal_input_mesh_nameunreal_output_name

首先需要获取mesh的输入名,当HDA在UE4中获取输入时(该变量只有geometry和worldoutliner输入拥有,文档有写),会自动获取该变量,后续在代码中给变量unreal_output_name赋值输入mesh name即可。注意unreal_input_mesh_name的值不是输入mesh的名称,而是包含输入mesh名称的完整路径,因此想要获取单纯mesh name,需要对路径解析一下获得最后一个斜杠后的字符串。

图中的俩attribute_create不必须。

houdini2unreal_demo.hip


补:

关于上面的例子,有一个严重的bug,设定输出名称与输入名称相同后,点击bake按钮获得处理后的staticmesh,该staticmesh的名称实际上并不是预期中最后一个斜杠后的真是名称,而是将该名称重复了两遍,导致bake后的资源出现无法正常通过双击打开模型预览窗口的故障。

如:模型的路径为/Game/Assets/Meshes/Rocks/Hovs_Beach_Rock_LOD1_ukxkffifa,输出名称实际是/Game/Assets/Meshes/Rocks/Hovs_Beach_Rock_LOD1_ukxkffifa.Hovs_Beach_Rock_LOD1_ukxkffifa,末尾重复了一遍素材名称。

虽然不知道为什么资源的名称会以.分割的方式重复一遍,但是在houdini中对最后一个斜杠后的字符串再进行一次解析,取.后(或者前)的字符串即可获得正确的bake后模型命名。


常用变量

unreal_input_mesh_name:获取输入的模型名称

unreal_object_path:输入资源的路径

unreal_output_name:bake生成新模型的name

unreal_bake_folder:bake后输出文件夹(注意开头必须是/Game/,这是content文件夹根目录!写错会crash,根目录之后的文件夹可以是不存在的路径,会自动帮忙创建)

雪材质。

目前看到的比较棒的一个例子,忘记哪儿下的了,做了融化和未融化状态下的雪👇

houdini2unreal_demo.hip