- Houdini参数
- 一.参数引用问题
- 1.使用 hsript
- 2.使用 wrangle
- 3.使用 python
- 二、节点属性筛选
- 1. Sop 节点按属性筛选
- 2.Top 节点按属性筛选
简单表达式()
ch("../facet1/mkplanar")
ch("../facet1/mkplanar")>0
if(ch("../facet1/mkplanar")>0, 2,3 )
混合表达式,通过属性获取引用路径
//不太推荐,会有警告
//point(),prim()读取的都是float,一般情况下parm会根据自己的类型是否转化为int
//但是作为path存在的时候,需要自己使用ftoa,ftrim转化为string
//ftrim是四舍五入
ch("../facet"+==ftrim==(point(0,1,"id",0)) + "/mkplanar")
//推荐,但是要求属性必须是string
ch("../facet"+(points(0,1,"id")) + "/mkplanar")
2.使用 wrangle
vex表达式,需要提前声明类型,否则编译报错
i@intValue = chi( "../facet" + itoa(point(0,"id",1)) + "/mkplanar" ); //需要标记int类型 s@stringValue = chs( "../facet" + itoa(point(0,"id",1)) + "/group" ); //需要标记string类型3.使用 python
一般情况下,只是部分参数使用python,大部分还是使用hsript
可以如下图所示修改,这样可保证hsript和python表达式一起使用
注意:group也是一种属性
在group参数里面填写,其实就是一种字符串匹配
一般都会存在一个默认的attribClass层级,常见的是point和prim,少量的edgs,遍历当前层级下的所有元素,进行数据匹配筛选
- 直接填写当前element层级的id或group名称进行筛选
- 点击下拉列表会 显示group 和 prim层级name属性相关的内容
- 使用hsript和python表达式,可以和通配符一起运用
Houdini属性筛选的通配符
* \ 匹配任何 ? \ 匹配任意单个字符 [chars] \ 匹配中括号里面的任意字符,但是不支持以[a-z]的写法 ^pattern \ 删除已经匹配的部分内容 @name \ 匹配属性,对象组,通道组
常见用法
@name=mask* //匹配name属性前缀为mask的内容,包括mask @name=?_mask* //匹配name属性第一个为任意字符,中间为_mask,后面为任意内容 @name=[ABCD]_mask* //匹配name属性第一个为ABCD中任意一个,中间为_mask,后面为任意内容 * ^@name=mask //匹配name属性不等于mask的任意内容2.Top 节点按属性筛选
filterbyexpression 节点内hsript表达式*
@coord==x5_y6 //错误写法,会直接报错 `@coord==x5_y6` //错误写法,会直接报错 `@coord`==x5_y6 //错误写法,会直接报错 strmatch(@coord,x5_y6) //正确写法,会直接报错



