Houdini·xyzdist和primuv

因为最近这俩函数的出现频率很高,但是又有点难理解,所以单独研究一下。

一个简单的例子——定义一个点,获得其投射到指定几何体(猪头)表面最近的点上。

实现此功能的vex为:

i@posprim;
v@param_uv;
float maxdist = 10;
float dist = xyzdist(1,@P,@posprim,@param_uv,maxdist);
vector pos = primuv(1,"P",@posprim,@param_uv);
@P = pos;

简单来讲,xyzdist的功能就是返回指定点到其距离最近的几何体表面的距离,这个函数妙就妙在它不仅能计算距离,还能写入表面投影位置所在的prim id该位置在所在prim上的uv信息,根据这两个被写入的新属性值,可以通过primuv函数获取该点的具体位置。

参考

  1. The joy of xyzdist() and primuv()

  2. JoyOfVex19