HoudiniVex笔记_P7_Loop循环

原视频:
Bili:最强VEX算法教程 - VEX for哔哩哔哩
版本:19.5
1、for循环
创建类型为的节点,写入下面代码
int num = chi('num');for( int i=0; i
添加节点,用小球代替点,结果为:
2、 for循环与属性
利用 ()函数统计第几个连接点输入的点数 , 在上面的()节点下方添加一个()节点,输入以下代码:
for(int i=0; i
添加节点,用小球代替点,结果为:
seed参数为0,则所有小球默认颜色为抹绿色(如图第一个小球颜色) 。
3、for循环与螺旋曲线
利用for循环和三角函数创建螺旋曲线,开始之前 , 先讲讲三角函数 。
以二维直角坐标的原点为中心,画出一个半径为1的圆 , 将圆的半径从x轴旋转 θ度,从半径与圆弧相交的点作一条线垂直于x轴,这条垂线的长度就是正弦,以sinθ 表示 。
即,半径为1的圆,角度为θ的x坐标为余弦cosθ(=邻边/斜边),y坐标为正弦sinθ(=对边/斜边) 。
创建类型为的节点(),写入下面代码:
int num = chi('num');//可适当把范围扩大float angratio = chf('angratio');//角度系数,控制点的密集度float heightratio = chf('heightratio'); //高度系数,控制螺旋高度for(int i=0; i
添加一个Add节点  , 点击设置为,结果为:
4、while循环
while循环与for循环相似,for循环重点在于可以控制循环的次数使用,while循环重点在于注重循环的条件 。
使用while循环时注意别陷入无限循环 。
创建类型为的节点() , 写入下面代码:
int num = chi('num');//点数int i = 0;while(i
添加节点,用小球代替点,结果为:
5、do while循环
与while循环相似,但是至少运行一次(先运行一次,才进行条件判断)
创建类型为的节点(),写入与上面while循环相似下面代码:
int num = chi('num');int i = 0;do{int pt = addpoint(0, set(i, 0, 0));i++;}while(i
num不为0,结果与【4】的While循环结果相同 。
6、while循环与螺旋曲线
创建类型为的节点(),写入下面代码:
float totalang = $PI * chf('totalang');//旋转多少圈,360°为1圈($PI=180°)//可适当加大范围float angratio = chf('angratio');//角度系数,控制角度float heightratio = chf('heightratio');//高度系数,控制高度float currentang = 0.0;float currentheight = 0.0;while(currentang < totalang){float x = cos(currentang);float z = sin(currentang);float y = currentheight;vector pos = set(x, y, z);int pt =addpoint(0, pos);currentheight += heightratio;//下一个点的高度currentang += $PI * angratio;//下一个点的角度}//注意:angratio=0, totalratio≠0, 进入无限循环
添加一个Add节点  , 点击设置为,结果为:结果与【3、For循环练习—螺旋曲线】的结果相同 。
7、循环(与数组)
在循环中 , 每次循环依次取数组或对象中的集合,取出放置在定义的变量中,遍历后退出循环 。
创建类型为的节点(),写入下面代码:
int num = chi('num');int values[] = array();for(int i=0; i
创建类型为的节点(),连接在上面的节点下方 , 写入下面代码:
int values2[] = i[]@values; //把上一个节点内的values[]数组传递给values2foreach(int val; values2){int pt = addpoint(0, set(val, 0, 0));//遍历数组,每次取值给变量val,根据val创建点}//结果为:num为多少 , 则在场景中依次创建多少个点
添加节点,用小球代替点,结果为:结果与【4、while循环】的结果相同 。
8、for循环与数组
主要是通过数组的索引访问数组 。
eg.使用【7、循环(与数组Array)】的节点(),再创建类型为的节点(rray),连接在节点下方,写入下面代码:
int values3[] = i[]@values; 把上一个节点内的values[]数组传递给values3for(int i=0; i
添加节点 , 用小球代替点 , 结果为:结果与【4、while循环】的结果相同 。
9、for循环与螺旋曲线
这次使用立方体代替生成螺旋曲线,并控制立方体朝向 。
创建类型为的节点(),写入下面代码:
int num = chi('num');//点数,可适当扩大范围float angratio = chf('angratio');//角度float heightratio = chf('heightratio'); //高度//创建点的位置存储到数组positionsvector positions[] = array();for(int i=0; i
添加节点,用立方体box代替点,结果为:
结果依次为:不作优化改变、设置法线方向(0, 'N') , 设置Y方向(0, 'up')
10、嵌套循环
创建类型为的节点(),写入下面代码:
int num1 = chi('num1');int num2 = chi('num2');for(int i =0; i
添加节点,用立方体box代替点,结果为:
11、嵌套循环与多螺旋曲线
创建单螺旋曲线可查看【3、for循环练习—螺旋曲线】 。
创建类型为的节点(),写入下面代码:
int num1 = chi('num1');//生成的点数int num2 = chi('num2');//生成螺旋线的条数float angratio = chf('angratio');//角度系数float heightratio = chf('heightratio'); //高度系数for(int i=0; i
【HoudiniVex笔记_P7_Loop循环】添加一个Add节点,点击设置为【—>Add:By —> Name:id】,结果为: