本文内容概要:

1、VEX语言简介及案例应用
2、VOP系统案例应用

3、VOP噪波效果

4、一次性设置噪波与多次叠加设置噪波的效果区别

例1:把Tours移动0.1个位置的两种方式

第一种方法:使用VEX语言

VEX语言是一种高性能的表达语言,在Houdini中很多地方都用到了,比如写shader。

VEX语言是Houdini中VOP系统从编程角度的表达方式。

VEX语法规则和C语言接近,和Python有很大区别,下面列出一些和Python语法上的不同点,以便区分是VEX脚本还是Python脚本。

VEX行结尾使用分号;

VEX代码块使用花括号{}

VEX声明变量定义变量类型

VEX声明函数定义函数返回值类型

VEX注释使用正斜杠,单行//,多行/multi-code/

Houdini中可以在Attribute Wrangle节点(节点网络中TAB键输入aw,后面简称aw节点)来编写VEX代码,这个节点很神奇,官网文档有说明它有一种内建的上下文处理机制,参数Run Over切换五种模式会得到不同的结果。

Detail(only once)

Primitives

Points

Vertices

Numbers

默认参数Points意味代码将在每个点循环执行,虽然你代码并没有写循环,只要有任何处理点的操作即会循环。

设置:Torus-----attribute wrangle-----在VEXpression窗口中输入@p = @p {0,0.1,0};

houdini要学哪种编程语言 houdini需要学什么语言_学习

第二种方法:VOP系统(是VEX的可视化编程节点操作方式,不愿意用代码的可以看这里)

设置:Torus---pointvop---设置const顶点参数为 0,0.1,0----add (进行连接)

houdini要学哪种编程语言 houdini需要学什么语言_houdini_02

houdini要学哪种编程语言 houdini需要学什么语言_houdini要学哪种编程语言_03

如上所诉,使用这两种方法都可以让圆环移动0.1个位置,这个VOP里的面板挺重要的,我们来单独介绍一下这个面板。

houdini要学哪种编程语言 houdini需要学什么语言_计算机视觉_04

P=Position 位置

V=Velocity 速率

Force 力

Age 将连入粒子的年龄

Life 粒子生命

id 粒子ID

Cd=color deffuse 颜色着色环境

Uv

N=normal 法线

Time 全局时间

Timeinc 时间增量

Frame 当前帧

Ptnum 当前进程下的点索引数值(点序列那些数值)
primnum  primitive的索引

Vtxnum 顶点序列数值

Mumpt 点的数量

Mumprim primitive的数量

Mumvtx 顶点数量

Oplnput1、2、3、4 四个端口

注意:它们自身的颜色分别代表不同意义,绿色代表的意思是它们是矢量值、蓝色是整数、蓝绿色是浮点值、浅棕色则是与几何体相关。

VOPS可以理解成VEX的简化版,可以通过节点的连接来实现VEX的编码功能。

噪波VOP效果

设置:Grid-----attribvop-----ptnum-----random(pos)-----Cd

houdini要学哪种编程语言 houdini需要学什么语言_计算机视觉_05

houdini要学哪种编程语言 houdini需要学什么语言_python_06

houdini要学哪种编程语言 houdini需要学什么语言_houdini_07

当两个端口数据不匹配时就会显示虚线状态,random随机的数值为浮点值,而Dd颜色的数值则是矢量的,因为它只有三个元素,红、绿和蓝(RGB), 两个端口数据不匹配所以显示为绿色虚线。Houdini会自动把浮点值改为矢量值,就直接使用浮点值填充了三个颜色,这就是为什么随机噪波都是黑白颜色显示。RGB数值大于1时是白色,小于1时是黑色。

连接完后,网格显示如下效果

houdini要学哪种编程语言 houdini需要学什么语言_houdini要学哪种编程语言_08

以上的浮点值自动转换为矢量值,我们也可以进行手动切换,创建一个浮点转矢量节点floattovec=floattovector

houdini要学哪种编程语言 houdini需要学什么语言_python_09

Floattovec三个fval1、2、3分别代表RGB三个通道,不同的连接方式产生不同颜色的噪波效果,如下图所示:

houdini要学哪种编程语言 houdini需要学什么语言_python_10

以上的噪波效果并不太实用,一般用噪波是为了产生比较自然的效果。

通常会用turbniose=turbulentnoise湍流噪波效果

 

houdini要学哪种编程语言 houdini需要学什么语言_houdini_11

houdini要学哪种编程语言 houdini需要学什么语言_houdini要学哪种编程语言_12

噪波一次性生成与多次生成细节上有区别,如下对比:

设置:Grid-----pointvop-----turbnoise1、2、3、4

Turbnoise1设置

 

houdini要学哪种编程语言 houdini需要学什么语言_houdini_13

 Turbnoise2设置

 

houdini要学哪种编程语言 houdini需要学什么语言_houdini_14

Turbnoise3设置

houdini要学哪种编程语言 houdini需要学什么语言_计算机视觉_15

Turbnoise4设置

houdini要学哪种编程语言 houdini需要学什么语言_houdini要学哪种编程语言_16

 连接turbnoise1、2、3的效果如下图(多次参数设置,叠加效果)

 

houdini要学哪种编程语言 houdini需要学什么语言_houdini要学哪种编程语言_17

houdini要学哪种编程语言 houdini需要学什么语言_houdini_18

连接turbnoise4的效果如下图(一次性参数设置)

houdini要学哪种编程语言 houdini需要学什么语言_python_19

 

houdini要学哪种编程语言 houdini需要学什么语言_python_20

通过以上的对比,明显能看出多次参数设置产生的效果比单纯一次性设置产生的效果细节更多一些。

 

通过噪波效果的设置过程,让我们认识到电脑屏幕所呈现出来的视觉效果,其实就是我们通过程序(函数)控制RGB在屏幕上的显示颜色,从虚拟的三维空间中让其显示出我们想要达成的视觉效果,这应该是电脑视觉呈现背后的本质原理。

 

Tips:

如何把参数面板窗口镶嵌到Objects视图窗口里

创建一个ego  然后在编辑窗口按P键,会得到一个缩小版的参数面板而且和整个Objects视图在一个区域里(前提是关闭了上方常规的参数面板窗口的情况下),这是后期执行时非常方便的视图方式之一。

houdini要学哪种编程语言 houdini需要学什么语言_houdini要学哪种编程语言_21

快捷键

shift+w

在Geometry面板中是显示图层分支列表
在View窗口中是隐藏或显示物体网格

 End.

发现日常的美好

houdini要学哪种编程语言 houdini需要学什么语言_python_22