原视频:https://www.youtube.com/playlist?list=PLzRzqTjuGIDhiXsP0hN3qBxAZ6lkVfGDI
Bili:Houdini最强VEX算法教程 - VEX for Algorithmic Design_哔哩哔哩_bilibili
Houdini版本:19.5
Houdini20版本双语离线文档,链接:https://pan.baidu.com/s/1ER9080W1h45ci_1WQma7QA?pwd=3apd
提取码:3apd
1、Vertex、Point、Primitive与Detail
(可以理解为类似点、线、面之类的关系,仅是类似)
Primitive是Houdini中的一种对象类型,指的是组成一个物体的最小元素,可以理解为一个图元/基元;
Detail也是一个对象类型,包含了Vertex、Point、Primitive、Group等属性;
(用中文代替容易混淆,所以使用英文来写,具体意义可以看下面解释)
在Houdini中创建多边形小球,它的Point和Primitive为:
小球在Vertices属性面板显示为:第1列参数为Primitive:索引;第2列参数为Point Num(Ptnum)
2、常用数据类型_Vex Type更多细节可以参考官方文档
float->小数(浮点数)、vector2->二维向量、vector->三维向量、vector4->四维向量、int->整数、matrix->矩阵(用作位移/旋转/缩放等)、string->文字(字符串)、dict->字典、……
VEX type | Syntax |
---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
拓展:
VEX type | Attribute names |
---|---|
| @P, @accel, @Cd, @N, @scale, @force, @rest, @torque, @up, @uv, /vex/@uv[1-9|Attr:/model/attributes#uv], @v @center, @dPdx, @dPdy, @dPdz (see Volume Wrangle). |
| @backtrack, @orient, @rot |
| @id, @nextid, @pstate @elemnum, @ptnum, @primnum, @vtxnum, @numelem, @numpt, @numprim, @numvtx (see indexing variables below). @group_* (see accessing group membership below). @ix, @iy, @iz, @resx, @resy, @resz (see Volume Wrangle). |
| @name, @instan |
3、Attribute Wrangle代码节点
Run Over参数,代表代码将在哪种类型的组件上运行,创建的属性也会保存到相应的组件中。
Detail运行一次;Numbers运行指定次数;其它的都会遍历各个组件运行。
4、属性Attribute在Houdini中的基本用法
eg. float-浮点数、int-整数、string-字符串、vector-向量、array-数组,等数据类型在Point中的声明与使用,属性均存储在Point中
//运行代码
f@fval = 1.52;
i@ival = 100;
s@sval = 'abc';
v@vval = set(3.2, 6.1, 4.1);
f[]@aval = array(3.5, 2.0, 56.0, 12.0, 22.3);
5、属性访问
如Point、Vertex、Primitive组件中的属性尽量不跨组件访问,Detail可访问。
全局变量等可存储在Detail中。
eg.同一代码在Point与Primitive组件中运行
@P = rand(@P);
@Cd = rand(@P);
i@n = @primnum;
Point组件运行:如图所示,Primitive的@primnum属性在Point5(第5点)只能获取附加在第5点的Primitive之一:
Primitive组件中运行:如图所示,在Primitive中,@P是每个Primitive中的中心点,不是真正的Point.Poistion,因此第一行并没有使小球发生变化: