HoudiniVex笔记_P5_Array数组

原视频:https://www.youtube.com/playlist?list=PLzRzqTjuGIDhiXsP0hN3qBxAZ6lkVfGDI
Bili:Houdini最强VEX算法教程 - VEX for Algorithmic Design_哔哩哔哩_bilibili

Houdini版本:19.5

数组是相同类型的若干个有序排列的集合(容器)

1、数组声明与初始化

float fArray[] = {2.5, 1.4, 10.8};
string SArray[] = {'W', 'A', 'S', 'D'};
vector vArray[] = {{0, 1, 2},{3, 4, 5}};

2、 使用变量声明数组

数组使用大括号的同时,不能使用变量,使用变量声明初始化数组方法如下:

//使用 array() 函数
float fval = 2.5;
string sval = 'W';
vector vval = {0, 1, 2};

float fArray[] = array(fval, 1.4, 10.8);
string SArray[] = array(sval, 'A', 'S', 'D');
vector vArray[] = array(vval, {3, 4, 5});

3、数组和属性

在AttributesWrangle节点(detail)中运行以下代码,即可在表格中看到创建的数组属性值,两种方法结果相同:

float fArray[] = {2.5, 1.4, 10.8};
string sArray[] = {'W', 'A', 'S', 'D'};
vector vArray[] = {{0, 1, 2},{3, 4, 5}};

//方法一:快速
f[]@fval = fArray;
s[]@sArray = sArray;
v[]@vArray = vArray;

//方法二:可通过代码更改属性名称
setdetailattrib(0, 'fvals2', fArray);
setdetailattrib(0, 'svals2', sArray);
setdetailattrib(0, 'vvals2', vArray);

4、访问数组

创建一个<primitive>类型的小球Sphere,添加一个AttributeWrangle节点,以下代码通过索引访问数组:

float values[] = {1, 2, -3, 4};

int index = chi('index');

@P.x = values[index];   //滑动 index 通道即可移动小球,超过数组范围恢复默认位置

5、数组添加值

方法一:通过 push()函数添加数组

float values[];

push(values, 3.6);
push(values, 1.9);

float val = 8.4;
push(values, val);

//数组结果 [3.6, 1.9, 8.4]

方法二:通过 append 方法在已有数组属性末尾添加

float values[] = {1.4, 5.3, 6.3};

f[]@values= values;

setdetailattrib(0, 'values', 10.0, 'append');
//数组属性结果 [1.4, 5.3, 6.3, 10.0]

6、数组值删除

方法一:通过 pop() 函数删除数组最后一个值

float  values[] = {2.3, 93, 34, 4.2};

pop(values);

//数组结果 [2.3, 93.0, 34.0]

方法二:通过removevalue()函数删除指定值,仅能删除匹配的第一个值

float  values[] = {2.3, 93, 34, 4.2, 93.0};

removevalue(values, 93.0);

//数组结果 [2.3, 34.0, 4.2, 93.0]

方法三:通过 removeindex() 函数删除指定索引对应值

float  values[] = {2.3, 93, 34, 4.2, 93.0};

removeindex(values, 4);//删除第五个值

//数组结果 [2.3, 93.0, 34.0, 4.2]

7、数组综合函数

eg.数组复制

float  values[] = {2.3, 93, 34, 4.2, 93.0};

//方法一
float values2[] = values;

//方法二
float values3[] = set(values);

//两种方法结果相同,数组结果 [2.3, 93.0, 34.0, 4.2, 93.0]

上面两种方法结果相同,但是 set() 函数可以把向量或矩阵转换成浮点数

float  values[] = {2.3, 93, 34, 4.2, 93.0};
vector vval = {2, 4, 6};

float values2[] = set(vval);

//数组结果为 [2.0, 4.0, 6.0]

8、数组长度

float  values[] = {2.3, 93, 34, 4.2, 93.0};

int arrlen = len(values);

//数组长度结果为 5
  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值