Houdini VEX:通道参数¶
float dist = chf("dist");
int num = chi("num");
for (int n = 0; n < num; n++) {
addpoint(0, set(n * dist, 0, 0));
}
通道参数是Houdini本身就存在的一种自定义参数的方案,只不过这里用到了VEX代码中而已。
这里总结一些VEX关于通道的内置函数。
| 类型 | HScript | VEX |
| int | ch | chi() |
| float | ch | chf() |
| string | ch | chs() |
| vector | chv() | |
| ramp | chramp | chramp() |
ch()通道函数默认类型是float,一般建议在VEX脚本中标明通道参数的具体类型。
创建通道参数
chi() chf() chu() chv() chp() ch2() ch3() ch4() chs()
chramp()
// 0-1循环
@P.y = chramp("ramp", @P.x);
float px = fit(@P.x, chf("min"), chf("max"), 0, 1);
@P.y = chramp("ramp", px);
vector(chramp("color", fit(@P.x, -5, 5, 0, 1)));
读取通道参数
chf(, 时间)
# 不谈
- chsraw()
- chexpr()
float chramp(string channel, float ramppos)
float chramp(string channel, float ramppos, float time)
vector chramp(string channel, float ramppos)
vector chramp(string channel, float ramppos, float time)
ramppos值域[0, 1],任何可以区别开来的属性都可以借这个值域去映射,比如@ptnum / (@numpt - 1.0), sin(@ptnum), rand(@ptnum)。
- 创建个Geometry。
- 创建个Grid,Rows>100,Columns>100。
- 创建个Mountain。
- 创建个Attribute Wrangle。
@P.y = fit(@P.y, -0.5, 0.5, 0, chf("heights"));
float ramp = chramp("ramp", fit(@P.x, -5, 5, 0, 1));
@P.y = @P.y * ramp;
通道参数不光光可以自定义,还可以直接引用别的节点的参数过来,通过具体的参数路径或者相对路径。
. 当前层级
参考文档: