东部三维网 学习论坛 查看内容

Houdini常用函数的介绍

2019-10-15| 发布者: www.d83w.com | 查看: 1926|原作者: 东部三维网

摘要:1,舍入功能:ceil()floor()int()rint()trunc()round()ceil()取整个函数,省略小数部分并取?

1,舍入功能:

ceil()floor()int()rint()trunc()round()

ceil()取整个函数,省略小数部分并取整数值。例如:CEIL(6.1)=7;

floor()接受舍入函数,省略小数部分,只取整数部分。例如:地板(6.1)=6或地板(6.9)=6;

int()取整数函数,省略小数部分,只取整数部分。例如: int(6.5)=6;

trunc()取整数函数,省略小数部分,只取整数部分。例如:trunc(6.5)=6;

rint()接受舍入函数并遵循舍入原则。

rint(6.5)=7或rint(6.1)=6;

round()接受舍入函数并遵循舍入原则。

圆形(6.5)=7或圆形(6.1)=6;

舍入函数大致分为以下三种类型:1)、ceil()省略小数部分,并将整数值取1。

2)、floor()、int()、trunc()取整函数,小数部分省略,整数部分省略。

3)、rint()、round()取整函数,遵循舍入原则。

舍入函数还有一个sign()函数

函数的作用是当参数变量为0时,值为0。当参数变量取负值时,值为-1,当参数为

当变量取正值时,该值为1.她的值空间为-1,0,1。此函数只能采用三个状态值。

2,wrap()循环函数:

Wrap()函数:可以执行循环效果,产生周期性分布效果,并具有与其余效果相同的效果。

wrap()函数的基本用法:wrap(变量,最小句点值,最大句点值)

例如:涡卷($ F,0,20)

它的价值空间在1-20之间。当变量值大于20时,它进入下一个循环并继续从1开始取值。

请注意wrap()函数和clamp()函数的函数曲线。唯一的区别是wrap()函数具有周期性特征。

3,fit()函数,自适应函数:

fit()函数有三种不同的自适应方法

1),fit01()函数

Fit01(可变,新范围最小,新范围最大)

案例描述

创建一个线节点,向该行添加一个属性,创建一个attribcreate节点,添加一个名为aaa的点属性,class:point(point attribute),这里的值使用$ BBX作为属性aaa的值,这也表明属性aaa只能取0-1之间的任何值。在这里添加fit01()函数时,fit01($ BBX)的值从0-1扩展到0-10,并使用fit01()函数。值范围均匀映射。

仅当变量参数的值介于0-1之间时,fit01()函数才可用于映射值。

函数的作用是使原始变量的范围为0-1。此函数可以由fit01()映射,并根据变量的值在范围值内均匀分布。

2),fit10(),fit01(),fit11()映射值方法

fit10()函数的值正好与fit01()函数的范围相反。

0x251D

函数的作用是:获取-1-1范围内的值。

这些fit()函数相对来说比较麻烦。现在使用fit()函数而不是上面fit()函数的形式

函数的格式:fit(变量,原始范围最小值,原始范围最大值,新范围最小值,新范围最大值)

例如:

fit($pt,$npt-1,0,1)这将使值正常化。

fit($pt,$npt-1,0,10)这将值的范围扩大了10倍。

4,distance()houdini独特的内置函数,用于测量两点之间的距离。

首先解释distance()函数的用法:

首先创建两个测量点,使用add节点创建两个随机点,计算下两个点之间的距离,并用字体节点打印测量的距离值。

distance()函数的格式:

距离(x1,y1,z1,x2,y2,z2)也是待测两点的xyz空间坐标。

这里我们使用前面的例子来说明distance()函数的使用:在字体节点的text属性中写入distance()来打印测量的距离结果。

表达:

`距离(点( '/ADD1',0, 'P',0),点( '/ADD1',0, 'P',1),点( '/ADD1',0, 'P',2) ,point('/add1',1,'P',0),point('/add1',1,'P',1),point('/add1',1,'P',2))

5. length()函数用于查找线段的长度值或向量的值。

这是一个案例来说明lenght()函数来查找速度。

创建线段并为线段指定一定数量的点以便于弹簧的解决。将属性添加到spring解决的线段,创建一个attribcreate节点,并添加一个名为speed的新属性,

值:长度($ VX,$ VY,$ VZ)使用lenght()函数计算。

创建一个球体球并通过复制节点将球复制到已解算的线段。复制节点中的统一

在规模属性上调用新添加的属性:$ SPEED/30

让球根据lenght()函数的结果整体缩放球。

6,使用Normalize()函数(标准化函数)

1,normalize()是一个标准化函数,因此向量的长度为“1”,只是为了对向量的长度进行标准化控制。它不控制方向,但保持长度一致并标准化。 (向量由长度和方向组成.Quantize()函数仅修改长度值)。

现在使用案例描述:

在这里使用多边形

球体通过向粒子添加法线并显示速度方向来添加

来发射粒子

正常:($ VX,$ VY,$ VZ),添加一个新属性来进行速度的标准化处理。创建一个attribcreate节点,

名称:(新属性的名称)normalvel

; type :(新属性的数据类型)向量创建向量类型;

值:(变量的值)vector3($ VX,$ VY,$ VZ);这里的组件是用vector3()函数编写的,这三个组件组合成一个向量,表示整体。

2,正常,速度是三元矢量,使用vector3()函数一次表示矢量,现在标准化速度。他代表的向量:规范化(vector3($ VX,$ VY,$ VZ))

并且在值中写入三个组件,然后如何将一个向量写入组件。这里,通过向向量添加[0],提取分量,从而可以将向量作为分量写入值。

值:

正常化(的Vector3($ VX,VY $,$ VZ))[0]

正常化(的Vector3($ VX,VY $,$ VZ))[1]

正常化(的Vector3($ VX,VY $,$ VZ))[2]

3,现在验证规范化过程的速度,我们要创建一个自定义矢量属性normalvel组件形式,可以写入正常的三个框。

在attribcreate的节点下再次创建一个点节点,添加normal属性,添加normal:($ NORMALVELX,$ NORMALVELY,$ NORMALVELZ),并在变量之后添加X,Y,Z以将向量输入到组件。

4.在houdini中,粒子速度调整在粒子节点之前使用。现在,使用$ NORMALVEL向量来修改粒子节点之后的速度显然是不可能的,因为这是点节点对速度的修改,而不是节点解决方案获得的速度结果。在sop模块下,在解决方案解决之前修改速度,并且不修改解决方案之后的速度节点。

7,mindist()或

Pointdist()相当于两个函数。这是距离点的距离。

1,XYZdist()是从空间点到表面的距离,这与上述两个函数不同;

pointdist()函数的基本格式:

Pointdist(“点所在节点的路径”,点号,“人脸所在节点的路径”,面部编号,频道编号)

pointdist()函数输入点编号,该点编号是实际点到曲面的距离值。这里的通道号表示所寻找的属性,“0”表示点到表面的距离值,“1”表示表面上的下降点的u方向的坐标值,“2”表示它是在找到表面的表面上的v方向的坐标值。



友情链接:

版权所有© 东部三维网 | 备案: 皖ICP备11016851号-1 | www.d83w.com . All Rights Reserved | 网站地图