常用的 Hscripts 函数用法记录。
primuv
可以用于提取几何体的 UV 坐标中某一点的属性。通常的写法如下:
primuv(surface_node, prim_num, attrib_name, attrib_index, u, v)
surface_node
代表了需要读取的节点。prim_num
代表了需要读取的面的编号。attrib_name
代表了需要读取的属性的类型名称,比如 Cd
。attrib_index
代表了需要读取属性的分量(通道),编号从 0
开始。u / v
代表了指定的坐标。具体的例子:
primuv("/obj/geo1/tube1", 0, "Cd", 1, 0.7, 0.3)
其作用为:读取面编号为 0
中,处于坐标 [0.7, 0.3] 位置的颜色属性的绿色通道。
u
和 v
表示的实际上是 Vertex 的编号,或者行列。
primuv
读取曲线某一点的位置:v
值恒为 0
,只需要读取对应 u
位置处的 P
属性即可。如果 u
值使用标准化的面编号 @primnum / (@numprim - 1)
表示,可以使每个面在曲线上平均分布,再利用 @time
对 u
进行额外的变量操作,可以得到面随着曲线的路径运动的动画。
clamp
用于为接收的变量指定上限和下限。它接收 3
个 float
变量,返回一个 float
变量。其使用实例如下:
clamp(@primnum / (@numprim - 1) + @time - 1, 0, 1)
上述代码将开头的表达式得到的结果限制到了 0
到 1
的范围内。
noise
函数会根据几何体的 Lattice 产生一个 3D 的 Noise。该函数可以用于添加变化到几何体上,比如添加 P
属性的 Noise 可以产生凹凸不平的效果。其使用实例如下:
noise($TX, $TY, $TZ)
noise
函数要求变量值不能是离散的;也就是说,noise
不能使用整型数据。