Houdini 中 Foreach 节点获取迭代数

简介: houdini 的 foreach 节点把我一个会写代码的都搞晕晕的,当前有了一些简单了解,记录一下
houdini版本: 2020.5

众多的 foreach 节点预设

Houdini 提供了 6 中节点预设,基本就是他的 Method 的不同和迭代方式的不同,有按数量迭代,最像代码里的for循环,比较好理解,其它的有按片,按点,按面,按命名的面等等,
foreach_begin 就是每一次循环迭代指定输入的数据,blockpath 就指定了这个输入属于哪个循环组的,他的类型是 block Begin,参数很少的
foreach_end 其实是 blockEnd 的节点,他的参数比较多,foreach_begin 都是找它组队

提供的节点预设

获取迭代数

我一直感觉比较麻烦的就是希望在循环中获取当前的迭代数,跟着教程在 For-each Num 这个预设的循环结构内成功的获取了当前迭代数。

For-each Num

For-each Num 有三个节点,foreach_begin 、foreach_end、foreach_count

For-each Num 的结构

点击 foreach_count 可以看到 他的method 是 fetchMetaData ,DetailAttributes 里面就有 iteration

foreach_count

使用 detail 方法获取

detail(p1,p2,p3) 三个参数的意义分别是

  • p1 要获取属性的节点路径, detail 方法需要通过这个路径找到要获取数据的节点
  • p2 要获取属性的名称
  • p3 默认值,出现意外的时候返回这个值,让你的流程不那么尴尬

我们创建一个 null 节点来演示如何用它来获取迭代数,并将值赋予 currentNum 属性

完整结构图

currentNum 的公式 ,
注意公式在有的地方不会执行,需要加上 · ,这个符号是主键盘 1 键左边的 ~ 键,加上后便可以运行,这里的 currentNum 属性不加也可执行

    detail("../foreach_count2/","iteration",0)
成功获取到迭代数

For-Each Connected Piece

这个循环是按切片循环,当时就给我整懵了,只有开始和结束,我想获当前是第几片,可劲想办法获取 那个显示了 Piece ,就是获取不到。


For-Each Connected Piece

自己加节点

终于迈出了伟大的一步,我尝试放找到 num 循环, 新建一个input节点,然后 blockpath 指定到按片循环的end上,method 调整为 metadata


自家节点

我们新建一个 null 来获取这个 metadata 的 iteration
再建一个 python 节点来输出结果

null节点属性参数及代码
python节点及代码
成功输出每次的迭代数
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容