简介: 前段时间写过一篇 获取多个 HDA 在 unity 中获取多个物体,并分开使用的方法Houdini 中 获取多个物体作为一个输入 还能再分开使用 其思路主要是使用 objectMerge 节点的分组功能
houdini版本: 2020.5
前缘
Houdini 中 获取多个物体作为一个输入 还能再分开使用 在使用中啊遇到了一个问题,我只能使用其默认的multiparm Block(list) 里带的属性,自己在 HDA 的参数中重新添加并不会自动映射到 objectMerge 节点上
其实这也正常,毕竟 objectMerge 节点的 param 是固定的,但是我目前又需要给每个加入的物体添加对应的其它参数属性,于是乎,我摸索了一个全新的方式
思路
- 自己做一个节点,给他添加 multiparm Block(list) 属性,里面设置上我需要的属性,
- 将这个 multiparm Block(list) 暴露到 HDA 的属性面板即可
- 获取输入的 object
步骤
创建属性
- 创建列表参数
创建参数列表
- 创建物体输入参数或其他参数,注意这里,输入物体的类型我选择为了 OperatorPath,这种类型的属性可以选择物体
添加属性
OperatorPath 是可以选择物体路径的
暴露参数到 HDA 面板
暴露属性
属性成功关联
获取输入的物体及参数
分开获取物体我们肯定是要用 foreach 了,我们使用 num 类型的。
此时我们如果直接将 multiInput 节点链接到 foreach 上,然后输出,我们是看不到任何物体的,因为我们的这个 null 节点只是携带了几个参数,但其内部实质上并没有什么物体,所以要获取其每一条路径下的物体,我要想到的还是 ObjectMerge 节点, 因为他可以接受一个路径来获取物体
- 我习惯先创建一个 辅助节点,来获取我需要的参数,这里命名为 InputHelper , 它链接了当前的迭代数,根据当前迭代数获取到的 othernum 和 输入路径
辅助物体
- 我们 ObjectMerge 节点的输入路径连接到我们辅助节点的 输入路径上
链接计算出来的输入路径
-
拖动迭代数,查看我们的获取结果,我这里使用了merge 来合并结果
show.gif
结束
这样我们就可以获取任意自己需要的物体和添加任意需要的物体了。
如果我们把 OperatorPath ,设置为 string 并给他添加一个 tag heuassetpath,那么在 unity 内的界面会更简洁,heuassetpath tag 的作用就是让路径属性显示为一个 objectfiled