HoudiniVex笔记_P1_AttributeBase

本文介绍了Houdini中的VEX语言,包括Vertex、Point、Primitive与Detail的概念,常用的数据类型如float、vector和int,以及AttributeWrangle代码节点的运行方式。文章还强调了属性在不同组件中的使用规则和访问限制,提供了一个学习VEX编程的基础指南。
摘要由CSDN通过智能技术生成

原视频:https://www.youtube.com/playlist?list=PLzRzqTjuGIDhiXsP0hN3qBxAZ6lkVfGDI

Bili:Houdini最强VEX算法教程 - VEX for Algorithmic Design_哔哩哔哩_bilibili

Houdini版本:19.5

Houdini20版本双语离线文档,链接:https://pan.baidu.com/s/1ER9080W1h45ci_1WQma7QA?pwd=3apd 
提取码:3apd

1、Vertex、Point、Primitive与Detail

(可以理解为类似点、线、面之类的关系,仅是类似)
Primitive是Houdini中的一种对象类型,指的是组成一个物体的最小元素,可以理解为一个图元/基元;
Detail也是一个对象类型,包含了Vertex、Point、Primitive、Group等属性;
(用中文代替容易混淆,所以使用英文来写,具体意义可以看下面解释)

在Houdini中创建多边形小球,它的Point和Primitive为:

小球在Vertices属性面板显示为:第1列参数为Primitive:索引;第2列参数为Point Num(Ptnum)

 2、常用数据类型_Vex Type更多细节可以参考官方文档

float->小数(浮点数)、vector2->二维向量、vector->三维向量、vector4->四维向量、int->整数、matrix->矩阵(用作位移/旋转/缩放等)、string->文字(字符串)、dict->字典、……

VEX type

Syntax

float

f@name

vector2 (2 floats)

u@name

vector (3 floats)

v@name

vector4 (4 floats)

p@name

int

i@name

matrix2 (2×2 floats)

2@name

matrix3 (3×3 floats)

3@name

matrix (4×4 floats)

4@name

string

s@name

dict

d@name

拓展:

VEX type

Attribute names

vector (3 floats)

@P, @accel, @Cd, @N, @scale, @force, @rest, @torque, @up, @uv, /vex/@uv[1-9|Attr:/model/attributes#uv], @v @center, @dPdx, @dPdy, @dPdz (see Volume Wrangle).

vector4 (4 floats)

@backtrack, @orient, @rot

int

@id, @nextid, @pstate @elemnum, @ptnum, @primnum, @vtxnum, @numelem, @numpt, @numprim, @numvtx (see indexing variables below). @group_* (see accessing group membership below). @ix, @iy, @iz, @resx, @resy, @resz (see Volume Wrangle).

string

@name, @instan

3、Attribute Wrangle代码节点

Run Over参数,代表代码将在哪种类型的组件上运行,创建的属性也会保存到相应的组件中。

Detail运行一次;Numbers运行指定次数;其它的都会遍历各个组件运行。

4、属性Attribute在Houdini中的基本用法

eg.    float-浮点数、int-整数、string-字符串、vector-向量、array-数组,等数据类型在Point中的声明与使用,属性均存储在Point中

//运行代码
f@fval = 1.52;
i@ival = 100; 
s@sval = 'abc';
v@vval = set(3.2, 6.1, 4.1);
f[]@aval = array(3.5, 2.0, 56.0, 12.0, 22.3);

 5、属性访问

如Point、Vertex、Primitive组件中的属性尽量不跨组件访问,Detail可访问。

全局变量等可存储在Detail中。

eg.同一代码在Point与Primitive组件中运行

@P = rand(@P);
@Cd = rand(@P);

i@n = @primnum;

Point组件运行:如图所示,Primitive的@primnum属性在Point5(第5点)只能获取附加在第5点的Primitive之一:

Primitive组件中运行:如图所示,在Primitive中,@P是每个Primitive中的中心点,不是真正的Point.Poistion,因此第一行并没有使小球发生变化:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值