Houdini中代码主要有三种语言:Python,HSript,VEX。HScript有点像MEL,Maya里的老祖宗语言;Python是最近支持的,可能有点像PyMel这种。这三种语言的复杂关系可以看这个科普帖子
Python和HScript都可以写Expression的,笔者见到的还是用HSript比较多,Expression可以写在所有node的channel里,感觉主要是起控制作用的。VEX是写在wrangler这种node里的,语法类似C++,在Obj这个context里主要是用来建模用的。其它Contex里好像还有很多用处,笔者是不太懂了。目前主要用的是Houdini的建模功能。。。。
看教程的时候,经常见到写Expression时候信手拈来一堆HScript变量,但是又很难查到定义,用起来的时候又经常记不住,在这里总结一下和Vex里类似的变量吧。
定义
|
Expression-当前几何体
|
Expression-其它几何体
|
VEX
|
包围盒中心点
|
$CEX $CEY $CEZ
|
centroid(“../node”, id) —— 0-X 1-Y 2-Z
|
getbbox_center()
|
point数量
|
$NPT
|
npoints(“../node”)
|
@Npt, npoints(0)
|
primitive数量
|
$NPR
|
nprims(“../node”)
|
@numprim, nprims(0)
|
point id
|
$PT
|
@ptnum
|
|
primitive id
|
$PR
|
@primnum
|
|
vertex id
|
$VTX
|
@vtxnum
|
|
vertex数量
|
$NVTX
|
@numvtx, nvertices(0)
|
|
point颜色
|
$CR $CG $CB
|
@Cd.r @Cd.g @Cd.b
|
|
point位置
|
$TX $TY $TZ
|
@P.x @P.y @P.z
|
|
point法线
|
$NX $NY $NZ
|
@N.x @N.y @N.z
|
|
包围盒
|
$BBX, $BBY, $BBZ
|
bbox(“../node”, id)
|
getbbox_size(), getbbox()
|
用上面这些变量就可以快速获取信息,不用写函数了。
HSciprt Expression函数的参考文档见这里
个人见的比较多的是神奇的stamp,在foreach和copy里都会用到。其它的眼界太窄没太见过。。。
VEX函数的参考文档见这里
个人用的比较多的,point/vertex/prim/detail函数来获取几何体的attribute,各种addattribute,各种addgroup添加组,另外神奇的pc点云系列查找函数。。。。
有关HScript的变量定义的文章很少,官方文档里也不全(基本没人写过$CG是啥。。。),文章后面列了一些参考文章
参考文献:
有关各种Variable定义的
http://blog.sina.com.cn/s/blog_6856498b0100m55n.html
http://houdini.wikia.com/wiki/Expressions
https://sites.google.com/site/fujitarium/Houdini/sop/wrangle
http://www.sidefx.com/docs/houdini/ref/expression_cookbook.html
另外
