XGen 表达式

函数
有一组函数调用可在表达式中使用。所有参数都可作为子表达式。如果表达式需要向量参数,请以大写形式提供输入值。如果将标量传递到需要向量的函数,则使用在所有三个通道具有相等值的向量(例如,length(2) == length([2,2,2]))。
将向量传递到标量运算时,会以分量形式执行运算(例如, cos(X) = [cos(X[0]),cos(X[1]),cos(X[2])])。这包括算术运算(例如, X*Y = [X[0]*Y[0],X[1]*Y[1],X[2]*Y[2]])。比较和条件仅使用 [0] 分量。相等测试(==、!=)会比较所有三个分量。函数中的任何标量结果都将为 [0] 分量。
下面定义中的方括号指明了可选参数:
abs(x)
x 的绝对值。
acos(x)
x 的反余弦,范围在 0 到 pi 弧度之间。
acosd(x)
x 的反余弦,范围在 0 到 180 度之间。
acosh(x)
x 的双曲余弦。
alignU([X]) alignV([X]) alignN([X])
将基本体与给定的向量对齐。这三个表达式应放置在 offU、offV 和 offN 中。如果没有传递参数,则使用默认值 [0,1,0],所得结果会“增长”。当传递参数时,会将同一参数传递给所有三个表达式。参数可以是表达式,无需进行规格化。
angle(X, Y)
向量之间的夹角(以弧度为单位)。
asin(x)
x 的反正弦,范围在 -pi/2 到 pi/2 弧度之间。
asind(x)
x 的反正弦,范围在 -90 到 90 度之间。
asinh(x)
x 的双曲正弦,在范围内。
atan(x)
x 的反正切,范围在 -pi/2 到 pi/2 弧度之间。
atand(x)
x 的反正切,范围在 -90 到 90 度之间。
atan2(x, y)
x/y 的反正切,范围在 -pi/2 到 pi/2 之间。
atanh(x)
双曲反正切
bias(x, b)
对比度的辅助对象,是 Gamma 的变体。
boxstep(x, val)
表达式计算小于 val 的值时生成 0,否则生成 1。从 boxstep 减去 boxstep 生成框函数,小于第一个 boxstep 的 val 时值为 0,介于两个 val 之间时值为 1,大于第二个 boxstep 的 val 时值为 0。确保从前一
boxstep 中减去后一 boxstep,否则会生成反转的框函数。
cbrt(x)
x 的立方根。
ceil(x)
不小于 x 的最小整数(向上舍入)。请参见 floor、round 和 trunc。
clamp(x, min, max)
在最小值和最大值之间钳制 x。
component(x, y, z)
允许表达式设置向量或颜色的各个分量的值。
contrast(x, c)
x 的对比度函数。c < 0.5 会减小对比度,c > 0.5 会增加对比度。
cos(x)
x 的余弦(x 以弧度为单位)。
cosd(x)
以度为单位的余弦。
cosh(x)
x 的双曲余弦。
cross(V, W)
向量的叉积
deg(r)
将弧度转换为度。请参见 rad。
dot(V, W)
向量的点积。
dist(x1, y1, z1, x2, y2, z2)
两点之间的距离。
exp(x)
x 的 e 次幂。
fit(x, a1, b1, a2, b2)
将 [a1..x..b1] 线性传递到 [a2..result..b2]。
floor(x)
不大于 x 的最大整数(向下舍入)。请参见 ceil、round 和 trunc。
fmod(x, y)
x 除以 y 的实际余数。与 x%y 相同。
gamma(x, g)
x 的 Gamma 校正。与 pow( x, 1/g) 相同。
gaussstep(x, a, b)
生成从 0 到 1 的高斯过渡。x 等于 a 时结果为 0,x 等于 b 时结果为 1。如果超出该范围,结果是连续的:超过 a 会生成连续的 0,超过 b 会生成连续的 1。如果 a 小于 b,则该函数为增函数,否则为减函数。
hypot(x, y)
(x*x + y*y) 的平方根。
length(V)
向量的长度。
linearstep(x, a, b)
生成从 0 到 1 的线性过渡。x 等于 a 时结果为 0,x 等于 b 时结果为 1。如果超出该范围,结果是连续的:超过 a 会生成连续的 0,超过 b 会生成连续的 1。如果 a 小于 b,则该函数为增函数,否则为减函数。
log(x)
x 的自然对数。
log10(x)
以 10 为底的 x 的对数。
map("mapname" [, s, t] [, channel])
在当前 (u,v) 或提供的 (s,t) 处计算 mapname。mapname 只能是 ptex 文件的路径。如果您打算使用正则表达式修改要使用的默认 $g.ptx,只需指定文件模式。可以指定可选通道以指示应读取图像的哪一通道。可以将变量 ${DESC} 用于描述名称。还可以使用内置 $PAL 宏来引用贴图。例如,map( “baseCoat_${PAL,myPick}” ),其中将计算名为 myPick 的选项板表达式,并以 %04d 格式插入其结果。
max(x, y)
返回两个值中较大的值。请参见 min。
min(x, y)
返回两个值中较小的值。请参见 max。
noise([x] [, y] [, z])
计算柏林噪波函数。未指定参数时,在当前 (u,v) 处计算该函数。可将一个、两个或三个参数用于具有一个、两个或三个维度的噪波。返回值始终为介于 -1 和 1 之间的浮点数。
norm(V)
规格化向量 V。
ortho(X, Y)
正交向量(等同于 norm(cross(X,Y)))。
pow(x, y)
计算 x 的 y 次幂。与 x^y 相同。
rad(d)
将度转换为弧度。请参见 deg。
rand([min, max] [, seed])
生成一个随机数字。未指定参数时,生成介于 0 和 1 之间的数字。(可选)可以传递两个参数以指定随机数字的范围。在任一情况下,都可指定 seed 值,确保返回的数字是随机的,并且可以预测(超过 y 时始终为 x)。
remap(x, source, range, falloff, interpolation)
在 0 和 1 之间重映射 x,当 x 在源的范围距离内时,结果等于 1。一旦超出该范围,结果将在衰减距离内衰减到 0。可以按名称或整数键指定插值方案:线性=0,平滑=1,高斯=2,boxstep=3。当使用 boxstep 插值时,使用衰减值
0.0。
round(x)
对 x 进行舍入生成的整数值,当小数部分时小于 0.5 时向零舍入,否则朝远离零的方向舍入。请参见 floor、ceil 和 trunc。
shadow(x)
仅在渲染的阴影过程中计算传入的表达式。用于更改渲染的颜色和阴影过程中的长度、宽度、密度等属性。如果不在阴影过程中,则该函数的计算结果为 1.0,因此其应用作乘数。
sin(x)
x 的正弦(x 以弧度为单位)。
sind(x)
x 度的正弦,以度为单位。
sinh(x)
x 的双曲正弦。
smoothstep(x, a, b)
生成从零到一的平滑过渡(二次)。x 等于 a 时结果为 0,x 等于 b 时结果为 1。如果超出该范围,结果是连续的:超过 a 会生成连续的 0,超过 b 会生成连续的 1。如果 a 小于 b,则该函数为增函数,否则为减函数。
sqrt(x)
x 的平方根。
tan(x)
x 的正切(x 以弧度为单位)。
tanh(x)
x 的双曲正切。
trunc(x)
简单地去除 x 的小数部分(向零舍入)。请参见 ceil、floor 和 round。
other()
选项板表达式以函数形式调用。如果您有一个名为 myPick 的选项板表达式,则可通过以下语法在另一表达式中调用它: myPick()。用于连接属性,例如指定长度和宽度之间的关联。还用于在单独描述中驱动属性,如设置选项板范围的宽度值。为选项板表达式指定的名称不能与任何预定义 XGen 函数重叠;否则,选项板表达式将无法访问。
以下常量有效:
PI
圆的周长与其直径的比率 (3.14159265358979323846)。
E
自然对数的底 (2.7182818284590452354)。
注意
如果表达式无效,将显示错误消息,并将其计算为 0.001。