下面是对 mental Ray 用户数据节点及其在 Maya 内部的使用方法的简要说明。
mental Ray 支持大量预定义类型的场景实体。但是,在某些应用程序中,这些实体类型不足以有效地表示场景中的数据。在其他情况下,实体包含一些自定义数据或自定义属性会非常有用。若要解决这些问题,可以在场景中的几乎任何位置使用和放置用户数据实体。
声明用户数据的优点是 mental Ray 知道参数的类型。因此,mental Ray 能够正确交换数据以防止在某个平台上创建数据后,在另一个使用不同字节顺序(字节序)的平台上对其进行渲染。
另一方面,应准备用于交换的文字用户数据(如果需要),例如,通过添加一个整数值来使其能够检测是否有必要交换,这需要在检索数据的着色器中执行。
应使用标准 .message 栓连接所有用户数据节点。实际上,也可以使用其他任何栓进行连接,与栓本身无关。
可以使用标准工具(例如,“连接编辑器”(Connection Editor),从“Hypergraph”或“Hypershade”拖放等)在 Maya 内附加数据节点。
在 Maya 中应直接连接到着色器。连接到形状节点(包括几何体、灯光和摄影机)或变换节点(DAG 实例)等场景实体,均需要添加动态属性 miData(消息),并将其连接到用户数据节点,以便在转换过程中得以识别。
将用户数据节点附加到着色器参数后,可以使用 mental Ray mi_db_*() 函数(传递输入参数提供的 tag 值)在自定义着色器中访问相应的数据。在大多数情况下,mental Ray 不接触用户数据的内容(除非可能要进行交换,请参见上文)。
获取用户数据内存的指针后,访问声明用户数据的值类似于读取带有匹配声明的 C 结构的字段。对于文字字节数据,数据的布局对 mental Ray 是未知的,因此所有结构和解码均取决于着色器。
在 mental Ray 中可以“链接”多个用户数据块,并且可以将链附加到一个场景实体中。在这种情况下,有一个非常有用的提示,那就是向用户数据中添加一个“幻”数,最好是作为块中的第一个值,这样可以使着色器将用户数据识别为期望的数据。