博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Houdini 节点参数读取输入节点的数据列表
阅读量:4487 次
发布时间:2019-06-08

本文共 1221 字,大约阅读时间需要 4 分钟。

今天做了一个在点级别的smooth工具,因为houdini默认的smooth是基于primitive的。工具能够根据输入节点的点组(point groups)或者特定的点属性(attributes)来smooth特定范围的点,这里讲一讲制作过程中一个很值得在意的细节问题,那就是读取输入节点的特定属性列表,这里讲的就是point group list和attribute list。

这个问题相当于用自己的方法实现很多节点里面的选择点组或者面组的功能,这个问题大家也许觉得非常简单,不就是从子节点上拽一个选组的参数到父节点上就可以了。但是换个角度来思考Houdini它自己是怎样实现下拉列表选择组的呢。

其实Python模块里面已经给我们准备好了非常全面的方法调用想要的数据列表,而且清楚的告诉了我们该方法会返回什么,比如点的属性列表:

 

如果善于查询Houdini帮助文档的话,不难发现point, vertex, primitive下的属性都可以查到,组也是类似。这样调用输入节点数据列表的方法就找到了,接下来在string参数的menu->menu script写上能用的python代码就好了:

比如需要读取输入节点的点属性列表:

list = []self = hou.pwd()input = self.inputs()[0]attributs = input.geometry().pointAttribs()for attrib in attributs:    attribName = attrib.name()    if attribName != "Pw":        list.append(attribName)        list.append(attribName)return list

 读取输入节点的点组列表:

list = []self = hou.pwd()input = self.inputs()[0]ptGroups = input.geometry().pointGroups()for group in ptGroups:    list.append(group.name())    list.append(group.name())return list

还有一个细节也在这提一下,怕自己以后也忘记了:

如果需要节点上的A参数的数据和B参数的变化实施更新,比如B参数是点属性值Cd,A要求反馈B参数中Cd的size,这种情况下,比较靠谱的方法是PythonModule下面写上更新方法,并在A参数的CallBack Script中用kwargs['node'].hdaModule().调用方法() 者hou.pwd().hdaModule().调用方法()来调用更新函数。

 

转载于:https://www.cnblogs.com/simonxia/p/4288839.html

你可能感兴趣的文章
Elasticsearch总结
查看>>
Teradata锁机制
查看>>
LiquiBase实战总结
查看>>
域名过滤
查看>>
udp-chat
查看>>
生成url
查看>>
re模块
查看>>
获取url
查看>>
re模块_2
查看>>
迭代器
查看>>
多线程共享全局变量(加锁)
查看>>
gevent 完成多任务_2
查看>>
判断该url下面是否包含指定的文件
查看>>
greenlet
查看>>
域名生成
查看>>
邮箱判断
查看>>
网页简体变为繁体
查看>>
gevent 完成多任务
查看>>
school
查看>>
python之钉钉机器人zabbix报警
查看>>