目录
一,概述
在Houdini内有多个节点可编写Vex表达式或Vex代码片段(snippet),如Geometry节点AttributeWrangle,Dynamic节点GeometryWrangle、Gas Field Wrangle、及particle dynamics nodes;Vex表达式可在point, particle, edge, primitive, voxel(依赖节点类型)上运行,还可读取节点参数和几何体属性,及设置特殊变量来更改输入几何体的值;Python与之类似,但是使用python语言编写;
出于性能的原因,Houdini正朝向通过对属性操作来修改几何体的方向发展,而不是使用HScript表达式操作局部变量和外部通道引用;
- 相对于HScript,Vex运行更快,可自动支持线程和并行计算;
- 直接处理属性,会更容易使用;局部变量的命名可能与底层属性的名称不一致,且节点与节点之间也可能不一致;
- 使用HScript表达式,获取属性(没有映射局部变量的)会变得非常麻烦,如point(opinputpath(".",0), $PT, "my_var", 0)),但Vex表达式,会简单的多,如@my_var;由于在Houdini里经常围绕属性,所以Vex会方便的多;
- 相对于使用HScript的外部引用而言,对于将属性信息向下传递及并行处理会更加友好;
- 当前,compiled SOP blocks可支持Vex操作,不支持编译使用局部变量的HScript表达式;
- Vex已有大多数HScript 表达式函数的等价物,且更易用于数组和字符串处理,如类似Python的数组/字符串切片和类似Python的字典;
随着处理的几何体越大、越复杂,线程和并行处理对于性能变得越来越重要;VEX会被越来越广泛地用于替换HScript表达式;
二,语法
VEX有一个语境(Context)的概念,一些函数仅仅在特定的语境下有效,如在SOP context内访问几何体信息的函数;VEX snippet可用于编写VEX代码片段,运行在CVEX语境下;
语法要点
- 每个语句必需已封号(;)结尾;
- //和/*...*/可引用注释;
- 三角函数如sin、cos使用弧度radians,而不是degrees;
- 矢量属性分量使用@v.x,而不是$VX;
- rand应用于矢量变量时,将产生矢量noise;
1,声明属性
在使用属性前,应指定属性的类型和默认值;
- 如属性已存在,忽略默认值;不存在,则使用默认值;
- 在声明属性类型后,即可省略类型符号;
float @mass = 1;
vector @up = {0, 1, 0};
//报错,必需是合法的constant,即是确定的常数值
float @mass = 1 / area; // Error
vector @up = set(0, 1, 0); // Error
可使用简写数据类型模式:
- 此时使用表达式不必是constant;
- 数组不简写,不可赋初值;
f@mass = 1;
v@up = {0, 1, 0};
f@mass = 1 / area;
v@up = set(0, 1, 0);
int @arr[] = {1, 2}; //报错
i[]@arr = {1, 2};
int arr[] = {1, 2};
2,访问Geometry属性和信息
在snippet内,可使用@attrib_name,来读取或写入属性值,如@P;
- 在Volume Wrangle内,@volume_name可读取和写入指定的volume;
- 当写入@attrib_name时,若属性不存在时,则会创建此属性,但Volume Wrangle不会创建新的volume;
- Houdini提供了一些可在snippet内使用的类属性的变量,如@elemnum(表示当前元素的编号),@numelem(表示元素的总数);
- 一些节点可能提供了额外的类属性的变量,如Volume Wrangle,可使用@center(表示volume的中心点);
- Houdini会使用适当的Vex数据类型来转换一些常用属性,如@P、@v等会自动转换属性类型;对访问不同端口输入的属性@opinputn_name,自动转换不起作用;
- 默认@是浮点类型,可手动在@前添加指定的类型的符号(只需首次指定类型);
| VEX Type | Syntax |

VEX是Houdini中用于处理几何体属性的高效语言,对比HScript,它具有更快的速度和并行计算能力。VEX支持声明属性、访问和设置Geometry属性,以及访问参数和全局变量。文章详细介绍了VEX的语法要点,包括声明属性、访问不同类型的属性、设置属性、创建几何体、使用属性操作函数等,并强调了其在处理大量和复杂几何体时的优势。
最低0.47元/天 解锁文章
4008

被折叠的 条评论
为什么被折叠?



