自定义 mental Ray 文本

 
 
 

NVIDIA .mi 文件是通过 NVIDIA 场景描述语言创建的,可以是 ASCII 或二进制文件。

在 mental Ray for Maya 中,您可以在 Maya 内编写并插入自定义 mental Ray 着色器的纯文本集成。它允许创建特殊用途的 Maya 节点,用于保存自定义的 NVIDIA (.mi) 文本。

可以借助于“自定义文本编辑器”(Custom Text Editor)和特殊的自定义文本控件将这些节点指定给某些 Maya 场景实体。

通过 mental Ray for Maya 生成的 mi 文件可以包含以下内容的自定义版本:包括镜头、体积和环境着色器、灯光着色器、材质着色器、纹理或实用程序着色器以及对象定义的摄影机输出语句。此外,还可以生成在输出的特定阶段写入的文本。

有关详细信息,请参见将自定义文本指定给对象或着色器

自定义场景实体

mental Ray for Maya 插件提供专有的节点类型,即 mentalrayText 节点。与该节点一起提供了简单的用户界面,允许您在其中编辑 ASCII 文本。有关详细信息,请参见将自定义文本指定给对象或着色器

使用“自定义文本编辑器”(Custom Text Editor),可以在特定情况下将这些节点连接到场景中的其他节点。

将 mentalrayText 节点指定给 Maya 节点是在“附加属性”(Extra Attributes)区域的 .mi 文本中完成的。mental Ray for Maya 在遍历场景和着色器图表时检查这一新属性。如果找到该属性,将编写已连接 mentalrayText 的内容而不执行进一步检查。

警告

由于多个不可预测的问题,默认情况下对交互式预览渲染禁用此类实体的转换。对于 .mi 文件导出将启用该转换以创建用于外部渲染的自定义场景文件。

根据文本模式属性,附加自定义文本、添加前缀或完全替换所生成 .mi 文本中的现有文本。

Maya 渲染器将忽略这些附加属性,可以与通常一样安全地渲染场景。另一方面,由于灯光、对象与材质之间的依存关系断开,可能不再通过 mental Ray 渲染已更改的场景。请参见一般性说明

必须将场景保存为 Maya 二进制 (.mb) 文件,才能保留文本节点及其连接。

“自定义文本编辑器”(Custom Text Editor)控制组支持

“自定义文本编辑器”(Custom Text Editor)包含默认情况下处于暗显状态的两行下拉列表和按钮。

在 Maya 中选择对象或着色器时,“自定义文本编辑器”(Custom Text Editor)将根据选定的实体进行更新,所生成 .mi 文本中的现有文本。

有两个控制组支持以下内容:

自定义文本变量

自定义文本可以使用在变换过程中能识别的特殊占位符字符或字符串。它们在导出时将替换为实际值。有四种自定义文本变量受支持。

字符 说明

$

在属性名称前面使用该占位符以便将名称替换为属性值。属性名称必须已知是存在的。“自定义文本编辑器”(Custom Text Editor)可识别所有的数值属性类型和字符串类型。

后面应用右撇号 ' 将字符串包含起来,向该“自定义文本编辑器”(Custom Text Editor)指示应将该字符串作为 MEL 或 Python 命令求值。已求值的 MEL/Python 代码必须返回一个字符串。有关更多详细信息,请参见下面的 !。

!

感叹号 ! 用于指示由 ' 包围的字符串是 MEL 格式还是 Python 格式。如果不包括 ! 字符,自定义文本编辑器假定命令是 MEL 格式。

例如 '!mel any_mel_code' 或 '!python any_python_code'

@

使用 @ 字符指示填充。您使用的 @ 字符数目指示填充量。例如,使用 @@@@@ 表示最多用零填充 5 个字符。

提示

选中连接的 Maya 节点(而不是自定义文本节点)上的动画。因此,如果您使用已在自定义文本节点中设置关键帧动画的动态属性,则必须强制连接的 Maya 节点上的动画正确导出您的动画。

将文本指定给实体时发生的情况

创建自定义文本节点并将其指定给在场景中选定的节点时,“属性编辑器”(Attribute Editor)将更新。

选项菜单列出先前创建的所有可用文本节点。通过在该选项菜单中选择新实体,将当前场景实体的文本指定替换为该新选择的文本节点。将场景保存到 Maya 文件的同时也会存储所有已连接或未连接的现有文本节点。必须通过标准的 Maya 方法删除自定义文本节点,因为“自定义文本编辑器”(Custom Text Editor)不提供相关的操作方法。

文本指定的类型

摄影机输出和着色器

指定给摄影机的文本节点采用插件所创建的第一个输出语句。因此,可以创建自定义图像文件和帧缓冲区。此外,也可以添加镜头、体积和环境着色器。其他摄影机参数不受影响,仍根据 Maya 中设定的设置写入。

灯光着色器

指定给灯光的文本节点会影响原始灯光着色器输出。灯光参数保持不变,并且将与通常一样写入。使用标准 Maya 灯光着色器的替代项时,将断开 Maya 材质的照明,因为这些替代项依赖于特殊的灯光依存关系节点。

材质着色器

指定给着色组的自定义文本节点会影响 mental Ray 材质的导出。如果在替换模式下应用文本,则根本不会导出已连接的曲面、体积和置换着色器。否则,这些着色器将与通常一样写入,包括它们自己的从属节点。

自定义文本编辑器在当前所选实体的名称前面加上 material 以告知其用途。

其他着色器

也可以将文本节点指定给转换过程中支持的任何其他着色节点。编辑器可以控制受支持的节点被选中,以及在所选实体的名称前面加上节点类型。这与所有纹理和工具节点相关。使用该功能,可以创建和导出自定义文本节点的图形。mental Ray for Maya 确保正确导出图形,其中叶节点在从属节点之前导出,即使它们包含自定义文本也是如此。这样,自定义文本本身可以包含对图形下节点的引用。存在一个限制:自定义文本不应使用返回结构的任何着色器。在连接中,始终仅通过节点名称写入节点,不附加输出栓的名称,例如 .outColor

对象定义

指定给形状节点的自定义文本会影响除对象名称及其标志之外的整个对象定义。在文本替换模式下,标志将根据 Maya 中的设置写入,但是可以进一步在自定义文本中调整。此外,默认情况下会为导出的对象添加标记,因此自定义对象定义应使用材质标记编号,而不是材质名称。

实际材质是在实例语句中指定的,该语句可提供材质列表,其中一个材质对应一个标记编号。这样同一对象的不同实例,甚至超出网格对象的多边形可以获取不同的材质。

一般性说明

限制

如果将场景保存到 Maya 文件中以后进行还原,由于不可删除的默认 lambert1、particleCloud1、initialShadingGroup 和 initialParticleSE 节点是以非标准方式处理的,则它们不会存储指定的附加文本。文本节点已存储,但到这些节点的连接都会丢失,必须重复建立连接。任何其他 Maya 曲面节点将按照预期方式保存和还原。

自定义文本节点支持有限的动画。导出动画时,会逐帧检查常规节点属性是否存在更改,并在每个后续帧中增量式导出节点。即使附加自定义文本,也会发生这种情况。

不检查 mi 语法的正确性,可以在自定义文本中使用有效的名称引用。

对于包含空白文本并不打算附加、但连接到实体的自定义文本节点,将移除着色器或它所属对象的输出。

由于受 Maya 灯光依存关系的限制,无法再通过 mental Ray 成功渲染包含自定义文本和标准 Maya 节点的场景,尤其是在使用自定义的灯光节点时更是如此。

自定义文本不应使用返回结构的任何着色器。在连接中,始终仅通过节点名称写入节点,不附加输出栓的名称,例如 .outColor