What & How & Why

差别

这里会显示出您选择的修订版和当前版本之间的差别。

到此差别页面的链接

两侧同时换到之前的修订记录前一修订版
后一修订版
前一修订版
vfx:houdini:vex:functions [2020/05/14 01:46] – [Foreach] codingharevfx:houdini:vex:functions [2020/05/14 02:00] (当前版本) – 移除 codinghare
行 1: 行 1:
-======VEX Concepts & Refs====== 
-//Ver. 18.0//  
-//VEX 的函数相关// 
-===== ===== 
- 
-====Arrays==== 
-  * 数组可以通过 ''array[n]'' 的形式访问和修改。 
-  * Houdini VEX 不支持多维数组。 
- 
-==Len== 
-<code vex> 
-//注意:该函数功能与 Length() 完全不同。 
-//功能:返回指定对象的元素个数。 
-//返回:指定对象的长度,如果是 martix / vector,返回分量的数量。如果是 array,返回元素数量。如果是 string,返回字符的数量。 
-/* 使用 */ 
-int len(v) //返回对象长度 
-int len(v[]) //返回数组长度 
-</code> 
-==Push== 
-<code vex> 
-//功能:向 Array 中添加元素 
-/* 使用 */ 
-//1.向数组的末尾添加一个元素 
-push(<type>&array[], <type>value); 
-//2.将两个数组组合为一个数组。目标数组将连接到源数组的末尾: 
-push(<type>&array[], <type>target[]); 
-</code> 
-==Pop== 
-<code vex> 
-//功能:移除数组最后一个元素并返回该元素 
-//返回:被移除的元素 
-//下标可以使用负数,-1 代表最后一个元素。 
-/* 使用 */ 
-<type>pop(<type>&array[]); // 移除并返回最后一个元素 
-<type> pop(<type>&array[], int index) //移除并返回指定下标元素。 
-</code> 
-==Removeindex== 
-<code vex> 
-//功能:按指定的 index 删除数组元素 
-/* 使用 */ 
-<type> removeindex(<type>&array[], int index); 
-</code> 
-====Attribute AND Iintrinsics==== 
-===Attrib=== 
-==point== 
-<code vex> 
-//功能:读取指定的点属性 
-//返回:返回类型与需要读取的属性相同。返回值指定的点的属性值,如果点不存在则返回 -1。 
-/* 使用 */ 
-//可以对 intrinsic 属性进行读取 
-//可以使用 geohandle 或者 path (op:/path) 
-//Point number 可以用@P 循环选定所有点,也可以指定具体的点编号对指定点操作 
-<type> point(<geometry>geometry, string attribute_name, int pointnumber) 
-//FIXME 
-<type>[] point(<geometry>geometry, string attribute_name, int pointnumber) 
-</code> 
-====Geometry==== 
-===Create=== 
-==Addpoint== 
-<code vex> 
-//功能:为指定的几何体添加点 
-//返回:函数返回类型为 int,返回对应点的 @ptnum,或者 -1。 
-/* 使用 */ 
-//在指定的几何体中(通过geohandle决定), 在指定的点(通过@ptnum决定)添加一个点 
-int  addpoint(int geohandle, int point_number) 
-//给定点的坐标,添加一个点 
-int  addpoint(int geohandle, vector pos) 
-</code> 
-==Addprim== 
-===Delete=== 
-==Removepoint== 
-<code vex> 
-//功能:删除几何体中指定的点 
-//返回:函数返回类型为 int  
-/* 使用 */ 
-//按点的编号(@ptnum)删除指定源中的指定点 
-removepoint(int input number, int point number); 
-//对删除点后的面的处理方式 
-//1 为删除任意因删除点造成的坏面,比如封闭的,只有3个顶点的面,或者开放的,只有二个顶点的面 
-//0 为删除因删除点造成的无效的几何体,比如少于 4 个顶点的四面体,没有顶点的体积等 
-removepoint(int input_number, int point_number, int method_code); 
-//e.g. 删除当前几何体中的 0 号点 
-removepoint(0, 0); 
-</code> 
-===Point=== 
-==Nearpoints== 
-<code vex> 
-//功能:寻找并返回所有离目标几何体最近的点(只适用于点到点,参考 xyzdist) 
-//返回:int array,该数组内部包含所有满足要求的点的 @ptnum,包括源点自身在内。 
-/* 使用 */ 
-//通过指定点的位置和最大搜寻距离寻找点 
-int [] nearpoints(<geometry>geometry, vector pt, float maxdist) 
-//通过指定点的位置和最大搜寻距离寻找点,限定点的搜寻数量 
-int [] nearpoints(<geometry>geometry, vector pt, float maxdist, int maxpts) 
-//对指定的 group 应用上述的搜寻方式: 
-int [] nearpoints(<geometry>geometry, string ptgroup, vector pt, float maxdist) 
-int [] nearpoints(<geometry>geometry, string ptgroup, vector pt, float maxdist, int maxpts) 
-</code> 
-====MEASURE==== 
-===BoundingBox=== 
-==Getbbox_min / max== 
-<code vex> 
-//功能:返回当前几何体 bounding box 的 min / max 点 
-//返回:函数返回类型为 Vector,为 min / max 的坐标。 
-/* 使用 */ 
-//以 vec 的形式返回当前几何体 Bounding Box 的 min / max 点 
-//这两个点用于定义 Boundingbox(AABB) 
-vector  getbbox_max(geometry) 
-//也可以返回指定 primtive group 的 min / max 
-vector  getbbox_max(geometry, string primgroup) 
-</code> 
-====NOISE AND RANDOMNESS==== 
-==Rand== 
-<code vex> 
-//功能:根据指定的种子产生一个[0,1]的随机数 
-//返回:该函数可以返回 float、vec2、vec3、vec4 的随机数。 
-//所有随机数的范围均在 [0,1] 之间,根据 seed 的不同来决定。 
-//根据操作系统的不同,同一个 seed 也可能导致不同的随机数结果。 
-/* 使用 */ 
-float rand(seed); //返回类型为 float 的随机数 
-//如果返回是 vector,那么每一个分量的随机数都将不同。这种情况下如果需要做uniform scale,那么需要先将 vec 转化为 float: 
-vector pos = 1; 
-float seed = 0; 
-pos *= rand(seed); //random number are differernt in x,y,z 
-pos *= float(rand(seed));// uniformed random number 
- 
-</code> 
-====VOLUME==== 
-===Volume=== 
-==Volumesample== 
-<code vex> 
-//功能:对 volume 中的指定属性进行采样 
-//返回:该函数返回类型为 float,返回值为采样的结果。在 @primum、@inputnum 越界的情况下或者被采样 volume 不是 vector voulme 的情况下返回 0。 
-/* 使用 */ 
-//对指定数据进行采样 
-//geometry 可以为 handle 类型,也可以为路径 
-volumesample(int input_number, int primitive_number, vector position); 
-volumesample(int input_number, int "volume_name", vector position); 
-</code>