HoudiniVex笔记_P3_ParameterBase参数基础

文章介绍了如何在Houdini19.5中创建和编辑参数,包括不同类型的参数如Menu、togglevalue和floatrampvalue。通过VEX代码访问和控制这些参数,特别是使用channel函数来引用和操作参数。还讲解了VEX与渐变参数Ramp的结合使用,以及参数表达式中的全局和局部变量应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

原视频:https://www.youtube.com/playlist?list=PLzRzqTjuGIDhiXsP0hN3qBxAZ6lkVfGDI
Bili:Houdini最强VEX算法教程 - VEX for Algorithmic Design_哔哩哔哩_bilibili

Houdini版本:19.5

一、参数类型

1、什么是参数

例如创建一个多边形小球Sphere,它的默认参数有半径Radius、中心Center、旋转Rotate、大小UniformScale、轴向Orientation、频率Frequency……等

2、编辑/创建参数

在Geo创建NULL节点并命名为<Params_Type>,如图点击即可打开参数面板

拖拽左边参数到中间,点击Apply即可创建参数

此处请注意参数描述的<Name><Label><Name>相当于ID,在VEX代码中需通过该名字才可访问它的值,<Label>是参数面板中的名字(自定义参数也可以在<参数描述窗口>的<Type>选择参数类型)。

3、更多参数类型: 

3.1、其中的<Menu>参数,如上图所示可在<参数描述>窗口的<Menu>编辑;
3.2、其中的<toggle value>参数:勾选值为1,不勾选值为0;
3.3、其中的<float ramp value>参数可以点击下箭头,可将图形最大化(X轴Y轴大小范围均为0~1):(重映射参数)

点击小箭头后变成:

二、参数引用

1、参数的复制与引用

基本上,节点参数都可以直接右键<复制参数CopyParameter>,在另一(节点)参数,,<粘贴相对引用PasteRelativeReference>

eg.使用上面的<Params_Type>节点<float value>参数控制小球Sphere的大小UniformScale

按图操作后,滑动float value,即可控制小球大小。(左键+中间可恢复默认值)

2、Menu、String参数类型引用

eg.以Menu Value为例,在<Params_Type>节点的<Menu Value>处右键复制参数CopyParameter:

在创建的font节点文本处<粘贴相对引用PasteRelativeReference>,结果如下:

3、可多多尝试其它参数类型,感受其变化。

三、使用VEX访问参数

更多通道用法可查看官方文档functions的NODES,截图仅显示部分:

1、通道参数—channel

除了使用上面拖拽的方法新建参数外,也可以使用VEX方法创建通道channel,

string stringValue = chs('string_value');
float floatValue =chf('float_value');
int intValue = chi('int_value');

float rampValue = chramp('ramp_value',floatValue);

写好代码,点击右边按钮生成,也可以理解为访问通道channel参数,操作及运行结果如下:

2、访问channel参数示例

以控制小球Y轴移动示例,

继续使用前面的<Params_type>节点,再创建一个多边形小球及<attributeWrangle>节点。复制<Params_type>节点的float参数,在<attributeWrangle>节点粘贴相对引用

@P.y = @P.y +`chs("../Params_Type/float_value")`;
//    chs返回一个字符串,外面的反引号 `` 将其转换成数值
//        ../指在当前整个网络节点内
//        Params_Type指需要访问的节点
//        float_value指访问的具体参数

按下图完成操作后,即可在<Params_type>节点的<float value>处控制小球Y轴移动。

代码也可以改成

//@P.y = @P.y +`chs("../Params_Type/float_value")`;

@P.y = @P.y + ch("../Params_Type/float_value");
//ch直接将其转换成数值(ch常用且强大,可以转换成任何种数据类型)
//所以该行代码也可以写成  @P.y = @P.y + chf("../Params_Type/float_value");

3、把<粘贴相对引用>作为<变量>

观察上方代码,因为粘贴的<粘贴相对引用PasteRelativeReference>实际是一个值的名字,若名字/float value发生改动,则需要手动进行相应修改

对上面<2>进行修改操作如下:
给<attributeWrangle>节点编辑参数-->拖拽一个float类型通道channel,ID及名称命名为<fval>(也可以写完代码后点击右边按钮,直接生成一个float类型通道channel)

按图操作后,即可在Params_type节点的float value处控制小球Y轴移动。

 四、VEX与渐变参数Ramp

1、float ramp类型参数——重新映射值

创建一个多边形小球<Sphere>和一个命名为<float ramp>的<attributeWrangle>节点,

f@val = chf('scaleVal');
@P *= chramp('ramp',f@val);
//chramp根据f@val值返回一个映射的Y轴,不懂往下看


按图操作后,滑动<Scaleval>即可控制小球大小。

 编辑<Ramp>参数,首先打开<+>号下面的<下箭头>,使曲线图最大化:

对曲线进行编辑如下图所示,所有点均选择为<Bezier>,使曲线更平滑;<Scaleval>参数类型默认0~1,<Ramp>参数横竖值范围都是0~1;

按图操作后,滑动<Scaleval>值就可以控制小球<Sphere>从【大->小->大】变化。
<Scaleval>值相当于<Ramp>参数的<X>轴,是一对映射值,<Ramp>返回相对于<Y>轴值。

 2、color ramp类型参数

与<float ramp>类型参数类似。
创建一个多边形小球<Sphere>;添加一个命名为<color ramp>的<attributeWrangle>节点,

@Cd = chramp('ramp', chf('val'));

编写代码后,点击右边按钮生成通道channel,点击右上方按钮将<Ramp>的<RampType>换成<Colror>,

按图操作后,滑动<Val>即可控制小球颜色从蓝色到青色进行拜变化。

3、当然,不同节点间的<Ramp>类型通道channel也可以进行<复制>和<粘贴引用>。

五、参数表达式

1、全局变量与函数表达式(官方文档介绍

一些常见全局变量:起始帧$FSTART、结束帧$FEND、$F当前帧……

截图仅截部分,更多可查看官方文档。
创建一个多边形小球<Sphere>;添加一个命名为<golbal_variable>的<attributeWrangle>节点

按图操作后,点击播放按钮,小球逐渐变大。

2、局部变量 

继续上述操作,添加一个<Transform>节点,并添加局部变量<$SIZEY>,然后再乘以0.5

按图操作后,点击播放按钮,小球逐渐变大的同时,向上移动(在球的Y轴二分之一处变大):

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值