星鸿阁

 找回密码
 立即注册
搜索
热搜: 活动 交友 动画
查看: 810|回复: 0

属性

[复制链接]

2254

主题

2764

帖子

9644

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
9644
发表于 2022-10-8 17:51:27 | 显示全部楼层 |阅读模式
Houdini VEX:属性

创建属性

int @num = 100;i@num = 100;int @num[];i[]@num = {100, 200};

两种方案的区别有一些,i@num可以使用表达式运算或者函数返回值,数组属性不简写不能赋初始值。

vector @up = {0, 1, 0};v@up = set(0, 1, 0);

内置属性不用指定数据类型,比如@ptnum,@N等,自定义属性如果不指定数据类型,默认初始化为浮点型数据。

所以为了和变量创建区别开推荐使用简写创建属性的方案。

i@i = 100; f@pi = 3.14; u@v1 = {1.0, 2.0}; v@v2 = set(1.0, $PI, 2.0); p@ 2@ 3@ 4@ s@

数组属性

i[]@ f[]@ s[]@

函数添加属性

addpointattrib(0, "Cd", {0, 0, 0});addvertexattrib(0, "Cd", {0, 0, 0});addprimattrib(0, "Cd", {0, 0, 0});adddetailattrib(0, "Cd", {0, 0, 0});

修改属性

setpointattrib(0, "Cd", 0, {0, 0, 0});setvertexattrib(0, "Cd", 0, {0, 0, 0});setprimattrib(0, "Cd", 0, 0, {0, 0, 0});setdetailattrib(0, "Cd", {0, 0, 0});

获取属性

float f1 = @P.y;float f2 = @opinput1_Cd.y;float f3 = v@opinput1_v1.y;vector c1 = point(1, "Cd", @ptnum);vector c2 = prim(1, "Cd", 0);vector c3 = vertex(1, "Cd", 0);vector c4 = detail(1, "Cd", 0);

全局属性

printf("%g\n", $PI);printf("%g\n", $E);printf("%g\n", @Frame);printf("%g\n", @Time);printf("%g\n", @Timeinc);printf("%g\n", @SimFrame);printf("%g\n", @SimTime);

内在属性

Intrinsic内在属性只有prim和detail上才会存在

prim() 读取属性 primintrinsic() 读取属性 setprimintrinsic() 设置属性

属性相关函数


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|starfluidga

GMT+8, 2025-5-9 03:22 , Processed in 0.017320 second(s), 20 queries .

Made by Liga 星鸿阁

Copyright © 2020-2048, LigaStudio.

快速回复 返回顶部 返回列表