美文网首页
houdini笔记三(2)vex学习之什么是变量?什么是函数?

houdini笔记三(2)vex学习之什么是变量?什么是函数?

作者: 睿智角逐 | 来源:发表于2021-10-12 22:53 被阅读0次

1.在Y轴输入“$F/2”把物体往上移动物体自身高度的一半。

什么是变量?变量就是容器它可以存储数据,就像geo一样存放着各类节点。

函数里面用到的点序号可以用变量指定,可以用变量的方式存起来,然后在用到函数里,例如addpiont函数它会在三维空间创建一个位置point(点)并且它会返回它所创建的点序号,那么这个变量就成为了点序号。

变量也是有类型的整数型,浮点型,点序号为浮点型。

1,变量名不能以数字开头

2,整数类型的变量可以存储一个整数,如点序号ptnum

3, addpoint()需指定输入端序号和点的位置坐标

4, addprim()需指定输入端序号, prim类型和点序号

                int p0=addpoint(0,{1,0,1});

                addprim(0,'poly',p0,p1,p2);

5,连点成面时,顺时针法线朝向自己,逆时针朝向前方

6,sublime text Ctrl+鼠标滚轮放大缩小界面显示

什么是函数?函数可以简单理解为一种工具可以执行命令可以创建效果,我们自己也可以创建函数,也就是说我们可以将我们创建好的指令打包成新的函数,然后可以很方便的使用它。

如何打包函数?

1,在sublime text选中所有指令按一次Tab键可以将所有的指令前加四个空格,(需注意tab键先进行设置)这样才不会变成横线!

Settings-Syntax Specific中设置 "translate_tabs_to_spaces": true,

然后保存就好!总而言之,Tab先设置转成四个空格。要不然保持横线拷贝到houdini里会出错,搞定这个问题后就可以往下进行了。

2,指令前后加上花括号{},

3,创建函数要给函数命名字,并且要输入参数就像addpiont函数,函数名后面有括号括号里有参数,你也可以只有括号,至少要有括号,括号里可以什么都不写。

这样就是创建的函数基本结构,除此之外还做些其他事

当我们指定函数的时候,我们要知道这个函数要返回什么,或者说这个函数不反回什么我该怎么写!记住函数总会有返回类型的,比如addpiont它在三维空间创建点给用户返回一个整数类型的数值,那么我创建的某个几何体它返回什么呢,它不需要返回什么!我们只需要它把几何体建出来就行,不需要它返回什么数字啊什么的。所以当这个函数不返回什么数值的时候,我们用void作为前缀

这样创建完之后我们就可以在houdini里面试试了

此时我们发现,刚打包好的函数并没有什么效果。

我们要注意的是我们只是打包或者说定义了一个函数,这时还没使用它,就像我做了一把工具我只是放在那里我还没使用它,我们如何要去使用它呢?我们只需要在输入一遍它的名字就可以。

我们可以多创建几个金字塔或者几何体,但是我们发现没有变化,其实是已经创建出来了只不过位置重合了,你可以发现有很多点重叠,那么我们在想我创建的金子塔能控制位置就好了,能指定它的位置三维空间里,那么也就是说我有个参数这时我告诉函数你按照这个参数给我在三维空间里摆放好,这是我们要做的,我们要在自定义函数括号里添加参数,要知道位置是什么参数,位置是三维的坐标,那么三维的坐标就是向量vector,所以呢我们想用户输入什么类型的参数要写清楚。类型就是vector,类型确定后就是名字,名字你随便写都可以,但是为了方便后续你知道,和方便别人懂得,所以写出寄简短又能概括出意思的名字比较好!

void pyramid(vector pos)

括号内这样写之后,那么就要求用户输入位置参数,用户不输入就会报错,那么这个POS存储的就是位置向量,如何使用呢很简单,在输入一边就可以

如果不输入呢就会报错。现在还是有问题,POS里用户输入的数值并没有改变金字塔的位置,什么原因呢,我们要把用户输入的位置参数加上之前的创建的每个点的参数位置才会发生改变。

这样呢函数就比较完整了。但是还是有问题为什么呢,你想你要这样输入位置是不是不太方便!现在在学习一个新的函数,chv('名字');

总结

四面体函数

四面体的三个点在y轴的负方向,不方便写我们可以用transform往上移动到y为零的位置。

怎么往上移动呢,可以在transform的y通道里输入-$YMIN意思是它存储这上一个模影的Y轴最小值

相关文章

  • Houdini学习笔记 | 关于stamp copy节点传递的属

    @pscale 是houdini的基本点属性之一,可以通过attribute wrangle的vex语句调节其他属...

  • Houdini VEX(十一)自制Neighbours函数

    一、neighbours函数:houdini自带的有,是用来查找邻居顶点的,如:我门输入的5,则会返回一个数组,装...

  • Houdini VEX(十五)数组相关函数

    一、数组相关函数

  • Houdini VEX(三)读取属性

    一、使用@符号 例子: 二、使用@opinput?_ 例子: 三、使用函数 例子: 查看一个节点存在哪些属性,可以...

  • Houdini VEX(四)获取全局变量

    一、全局变量的定义:以"E是自然对数,FF是浮点帧,$FPS是帧速率二、 如何在vex中获取全局变量 有些是可以通...

  • 2-3.函数与作用域

    1.函数声明和函数表达式有什么区别? 2.什么是变量的声明前置?什么是函数的声明前置? 就是var变量和funct...

  • 关于函数

    1. 函数声明和函数表达式有什么区别? 2. 什么是变量的声明前置?什么是函数的声明前置? 变量声明前置:所谓的变...

  • JS -函数及其作用域

    1、函数声明和函数表达式有什么区别 2、什么是变量的声明前置?什么是函数的声明前置 3、arguments 是什么...

  • Houdini VEX(十七)自定义函数

    一、自定义函数的目的:把我们常用的一些代码打包起来 示例:

  • 进阶任务3

    1、函数声明和函数表达式有什么区别2、什么是变量的声明前置?什么是函数的声明前置3、arguments 是什么4、...

网友评论

      本文标题:houdini笔记三(2)vex学习之什么是变量?什么是函数?

      本文链接:https://www.haomeiwen.com/subject/dcenwltx.html