mental ray for Maya 的动态属性

 
 
 

下列动态属性用于与自定义着色器一起使用。默认情况下,其中某些属性在 Maya 用户界面中不是始终可见的。但是,一旦您创建这些属性,即可在“属性编辑器”(Attribute Editor)“附加属性”(Extra Attributes)区域查看和编辑相应值。

用户数据

可将自定义信息合并到场景的元素(例如灯光、摄影机、对象和实例)中。使用动态 miData 属性将 mental Ray 用户数据节点连接到元素,以使 mental Ray 着色器可以访问该自定义信息。

注意

要使用以下工作流,您必须有带有数据属性的 mental Ray 着色器。

  1. 使用以下命令创建 mental Ray 用户数据节点:
    createNode -n "miUserData" mentalrayUserData;
    

    “mentalrayUserData”节点应包含与您的 mental Ray 着色器所需格式相匹配的自定义用户数据。

  2. 将 miUserData.message 连接到 shader.data

    “mentalrayUserData”节点包含以下两个属性:“binaryData”“asciiData”“asciiData”是首选方法。“asciiData”属性应使用自定义用户数据填充并使用 mentalrayuserData.message 栓连接到 mental Ray 着色器。

    注意

    “mentalrayUserData”节点仅在连接到 mental Ray 着色器时转换。

  3. 如下所示创建“miData”属性:
    addAttr -ln "miData" -at message pSphereShape1;
    
  4. 如下所示将“miData”属性连接到 userdata 节点:
    connectAttr -f miUserData.message pSphereShape1.miData;
    
    提示

    将一个幻数添加到用户数据,最好作为块中的第一个值。通过该操作,您的着色器可以轻松识别用户数据。

导出阴影着色器

使用该属性可产生透明阴影,即使使用了光子也是如此。该属性基于每种材质在局部起作用并覆盖 shadowEffectsWithPhotons 属性(“渲染设置”(Render Settings)的“焦散和全局照明 > 光子跟踪”区域中的“直接照明阴影效果”(Direct Illumination Shadow Effects)设置),因此即使在启用光子时也将导出阴影着色器。

如下所示创建该属性:

addAttr -ln miExportShadowShader -at bool phong1SG;

禁用动画检测

转换后续帧时,mental Ray 将自动检测场景对象和相关着色节点的动画。“优化动画检测”(Optimize Animation Detection)选项(“渲染设置”(Render Settings)窗口中有多个 mental Ray 选项卡,在其中的“选项(Options)”选项卡中“转换”(Translation)区域的“性能”(Performance)子区域中)还执行 Maya 依存关系图的预扫描,以便更快地找到已设置动画的节点,并相应地标记各个节点来加速整个动画的转换。

在默认性能可能仍不是最佳或标准检测算法未捕捉到所有动画的情况下,有多种方式可以手动提示 mental Ray 有关已设置动画的节点的情况。

通过添加新的动态属性 miAnimated(布尔)并将其设置为禁用,可将各个实例或整个 DAG 子树从动画中排除。一旦在变换节点上找到该属性,DAG 遍历会使剩余子树(而非节点本身)免于进行动画检测。需要禁用“优化动画检测”(Optimize Animation Detection)选项以激活手动覆盖。

如下所示将该属性创建为形状节点上的覆盖:

addAttr -ln miAnimated -at bool group1;

禁用 DG 循环检测

在使用非常复杂的着色网络时,使用该属性将禁用依存关系图中循环的检测以提高性能。某些情况下,着色网络中的循环可能导致 mental Ray for Maya 变得不稳定。将该属性设定为 false 可以禁用“DG 循环检测”(DG cycle detection)

如下所示创建该属性:

addAttr -at bool -ln "nodeCycleCheck" mentalrayGlobals

强制几何体的按需转换

使用“按需导出对象”(Export Objects On Demand)选项可控制场景中对象的处理。该选项对于具有超出摄影机视口的对象的场景特别有效。在这种情况下,mental Ray 不处理超出摄影机视口的对象,因此可以缩短处理时间。

如下所示将该属性创建为形状节点上的覆盖:

addAttr -ln "miPlaceholder" -at bool pSphereShape1

禁用自定义节点自动灯光链接

注意

如果将灯光链接模式设定为 4,则不需要该属性。它仅对于不支持 mental Ray 灯光链接的着色器是必须的。有关详细信息,请参见自身 mental Ray 灯光链接

使用该属性可基于每个节点禁用自动灯光链接(将该属性设定为 false)。这在具有不同灯光链接的多个对象使用相同材质时非常有用。在这种情况下,使用该属性禁用灯光链接,然后手动将灯光节点连接到着色器的灯光属性。

如下所示创建该属性:

addAttr -ln "miLightLink" -at bool mib_illum_lambert1

标签

为了实现 mental Ray 标签的导出,在几何体的变换节点上可识别该动态属性。mental Ray 不对这些标签执行任何检查,而仅仅导出它们。此时不存在任何标签帧缓冲区支持。

如下所示创建该属性:

addAttr -ln "miLabel" -at long nurbsSphere1

裁切不透明度

miCutAwayOpacity(浮点)添加到材质的着色引擎。

对于使用透明度贴图从平面中切去复杂 2D 图形的 2D 替代对象或卡对象,该属性很有用。

miCutAwayOpacity 是一个不透明度阈值。其不透明度小于指定值的所有曲面点均视为不存在。例如,值为 0.05 将移除所有透明度为 99.5% 或更高的曲面点。

如下所示创建该属性:

addAttr -longName "miCutAwayOpacity" -attributeType "float" shadingGroup1;

自定义运动向量

mental Ray for Maya 支持零长度运动向量的创建。自定义置换着色器可以操纵运动向量生成运动模糊置换。仅考虑对 miCustomMotion(布尔)属性设定为 true 的几何形状节点执行自定义运动。

全局选项导出自定义向量可用于控制该功能。默认情况下该选项已启用。如果禁用,将不会为任何对象生成任何自定义运动向量。该功能还要求在 mental Ray 渲染设置中已启用运动模糊

如下所示创建该属性:

addAttr -ln "miCustomMotion" -at bool myShapeNode;

其中 myShapeNode 是形状节点。

强制置换动画

若要指定包含动画置换的对象,请将 miDisplaceAnimation(布尔)动态属性添加到对象形状节点。

这是针对转换引擎的提示,以便避免可能昂贵的 DG 遍历来检测动画置换。

如下所示创建该属性:

addAttr -ln "miDisplaceAnimation" -at bool myShapeNode;

强制进行多边形网格的三角形导出

该选项可基于 Maya 的细分将所有多边形网格处理为镶嵌细分的三角形。使用该选项,您可以更有效地利用内存,以便具有较大多边形网格渲染的大型场景占用更少的内存。

有关详细信息,请参见导出三角形化的多边形

此外,在每个形状节点上都支持动态属性 miTriangles (boolean),它将基于每个形状覆盖全局设置。因此,支持以下两种常见情况:

如下所示创建该属性:

addAttr -ln "miTriangles" -at bool myMeshNode;

强制灯光发射的光子

在每个 Maya 光的“属性编辑器”(Attribute Editor)中,属性的 mental Ray 区域指定用于焦散和全局照明的光子数。默认情况下,这是要存储的光子数

为了进行正确的物理模拟,使用要发射的光子数更为理想。为提供这种支持,mental Ray 可识别有关平行光、点光源和聚光灯的两个属性:

causticPhotonsEmit(整型)

globIllPhotonsEmit(整型)。

除了光子存储的编号,如果创建了它们,它们将被转换并导出。

如下所示创建这些属性:

addAttr -ln "causticPhotonsEmit" -at "short" myLightShape;
addAttr -ln "globIllPhotonsEmit" -at "short” myLightShape;

仅光子灯光

可使用以下动态属性在 Maya 光节点上控制 mental Ray 灯光属性仅光子

miPhotonsOnly(布尔)

如果在灯光节点上启用了光子发射,则识别该属性并将其转换为 mental Ray。若要优化光子跟踪性能,您可以将光源标记为仅考虑进行光子发射并在 mental Ray 中禁用其直接光照贡献。

如下所示将该属性创建为灯光形状节点上的覆盖:

addAttr -ln "miPhotonsOnly" -at bool spotLightShape1

自定义标志

Maya 变换节点不会显示 mental Ray 的所有扩展实例标志,但可以通过以下动态属性控制这些节点:

'miReflection' (integer)
'miRefraction' (integer)
'miTransparency' (integer)

该值是指向预定义标志(位集)的索引:

按照以下这些示例所示创建上述属性:

addAttr -ln "miReflection" -at "enum" -enumName "Cast Off Receive Off:Cast On Receive On:Inherit:Cast On Receive Off:Cast Off Receive On" myTransformNode
addAttr -ln "miRefraction" -at "enum" -enumName "Cast Off Receive Off:Cast On Receive On:Inherit:Cast On Receive Off:Cast Off Receive On" myTransformNode
addAttr -ln "miTransparency" -at "enum" -enumName "Cast Off Receive Off:Cast On Receive On:Inherit:Cast On Receive Off:Cast Off Receive On" myTransformNode

如果存在任何反射和折射属性,则不再考虑标准跟踪标志

'miFinalGather' (integer)

该属性遵循现有焦散和全局照明标准标志的方案,并支持下列值:

如下所示创建该属性:

addAttr -ln "miFinalGather" -at "enum" -enumName "Hide On:Cast Off Receive Off:Cast On Receive Off:Cast Off Receive On:Cast On Receive On:Inherit" myTransformNode

自定义元素

若要启用替换元素的文件导出,而不是当前实例化的 Maya 形状,则使用下列动态属性:

'miExportElement' (boolean)
'miElement' (string)

如果布尔选项已启用,则将替换元素导出为对象名称,无需进一步检查。

如下所示创建这些属性:

addAttr -ln "miExportElement" -at bool myTransformNode 
addAttr -ln "miElement" -dt "string" myTransformNode

为转换自定义现象

若要启用与当前指定的 Maya 着色引擎不同的材质的转换,则使用以下动态属性:

'miExportMaterial' (boolean)
'miMaterial' (message)

如果布尔选项已启用,则将替换材质(通常为指向 Maya 着色引擎或自定义节点的连接)作为 instance 材质转换。如果连接的节点是 material 类型的自定义节点,它将被转换为 mental Ray 中常规材质描述的完全替换。

如下所示创建这些属性:

addAttr -ln "miExportMaterial" -at bool myTransformNode 
addAttr -ln "miMaterial" -at message myTransformNode

光栅化器着色采样覆盖

可以基于逐对象/逐实例覆盖光栅化器着色质量的全局选项(mental Ray: 着色采样数)。可通过 mental Ray 区域中对象形状节点的“属性编辑器”(Attribute Editor)中的“着色质量”(Shading Quality)属性访问逐对象覆盖。对于逐实例覆盖,动态属性

'miShadingSamples' (float)

在 Maya 形状节点和变换节点上可识别;如果其值不为负值,则该动态属性将转换为 mental Ray。

如下所示创建该属性:

addAttr -ln "miShadingSamples" -at "float" myTransformNode

景深采样覆盖

Maya 中的景深效果(受摄影机控制)使用执行真实 3D 景深渲染的 mental Ray 自定义镜头着色器,每像素投射多条光线以获得平滑的结果。

这些附加镜头采样的数目预定义为 4,但可以通过以下两种方式调整。

可以将动态属性

'dofLensSamples' (integer)

添加到 mental Ray 全局节点,这将定义场景中所有摄影机中所有景深效果的新默认值。

如下所示创建该属性:

addAttr -ln "dofLensSamples" -at "short" mentalrayGlobals 

也支持通过将动态属性

'miLensSamples' (integer)

添加到 Maya 摄影机形状节点进行逐摄影机覆盖。

如下所示创建该属性:

addAttr -ln "miLensSamples" -at "short" perspShape

当对象脱离焦点时,通常需要增加采样数。

内存模式

mental Ray 监视集成渲染(预览和批处理)过程中的内存消耗,并能对内存不足情况做出反应,避开通常会导致 Maya 崩溃的 mental Ray 致命内存错误。默认情况下,如果任一内存请求超过当前设置的内存限制加“zone”的 20%(符合将内存限制设置为已安装物理内存的 80% 的建议)之和,则 mental Ray 将终止。

可通过将以下动态属性添加到 mental Ray 全局节点调整该功能:

'memoryMode' (enum: none, report, inquiry, abort, release)

mode 值如下所示:

mental Ray 全局节点上的现有属性 memoryZone 可用于控制 zone(以内存限制的百分比表示),以便确定何时应执行内存处理并按照 mode 继续操作。

如下所示创建该属性:

addAttr -ln "memoryMode" -at "enum" -enumName "None:Report:Inquiry:Abort:Release" mentalrayGlobals

关闭网络烘焙

mental Ray 提供了一个属性,通过该属性,您可以控制用于纹理的集成烘焙的卫星的使用。默认情况下,mental Ray 将该属性设定为 true:

setAttr miDefaultOptions.lightMapsNetwork false

但是,mental Ray 可以禁用该选项,以便在检测到不支持的情况时(例如,在任意活动烘焙集中启用了“烘焙到一个贴图”(Bake to one map)时)运行实际烘焙。

环境光遮挡

若要在透明度为一个因子的情况下更精确地计算环境光遮挡,请启用“深度遮挡”(Occlusion Deep)属性。可以使用以下动态属性公开该属性:

addAttr -at "bool" -ln "occlusionDeep" textureBakeSet1

隐藏对象使其对于最终聚集射线不可见

将动态布尔属性 miFinalGatherHide 添加到对象的形状节点,使其对于最终聚集射线不可见。这不同于禁用“最终聚集投射”(Final Gather Cast)“最终聚集接收”(Final Gather Receive)标志,就最终聚集来说,后者将对象转化为黑洞。如下所示设置该属性:

addAttr -ln "miFinalGatherHide" -at bool myShapeNode;

椭圆过滤

通过设置下列动态属性可获取椭圆过滤中的高级功能。有关这些属性的详细信息,请参见使用椭圆过滤进行高质量纹理过滤

双线性纹理像素插值

当椭圆面积小于纹理像素时,通过将 miEllipticalBilinear 设定为 1 (TRUE),您可以启用双线性纹理像素插值以创建更模糊的图像。

addAttr -longName "miEllipticalBilinear" -at bool -defaultValue 1 file1; 

最大偏心率

使用 miEllipticalEccMax 动态属性设置椭圆的最大偏心率。该属性的值必须等于或大于 1.0。椭圆的偏心率是主半径与次半径的比值。较高的偏心率值会导致较长的渲染时间;因此,如果偏心率高于指定的最大值,则椭圆的次半径会相应增大。

addAttr -longName "miEllipticalEccMax" -at "float" -defaultValue 4.0 -minValue 0.001 -maxValue 40.0 file1; 

采样点之间的距离

对于纹理空间中每三个采样点,您可以设置其他两个采样点和中心采样点之间的最大距离。换句话说,如果中心采样点位于(0,0),则其他两个点应位于半径为 DiscR(距离该中心位置)的圆盘内部。如下所示设置 DiscR 值:

addAttr -longName "miEllipticalDiscR" -at "float" -defaultValue 0.3 -minValue 0.001 -maxValue 1.0 file1; 

设置圆形的半径

您可以使用 miEllipticalCircleR 属性设置投影的屏幕空间圆形的尺寸。使用的值越大,就可能愈模糊,但使用较小的值可能会增加锯齿。使用 0.4 到 1.0 范围的值。

addAttr -longName "miEllipticalCircleR" -at "float" -defaultValue 0.8 -minValue 0.001 -maxValue 1.0 file1;

mental Ray 导数(mental Ray Derivatives)

如果要将“mental Ray 导数”(mental Ray derivatives)而不是默认的 mental Ray for Maya 导数用于“NURBS”“细分曲面”(subdivision surfaces)(以与着色器交互),请使用该属性。

如下所示在形状节点上创建该属性:

addAttr -ln "miDerivatives" -at "enum" -en "none:first:second:both" -dv 0 pSphereShape1;

对于 -“miDerivatives”,支持范围从 0 到 3 的值。

mental Ray 光线偏移(mental Ray Ray Offset)

使用该属性,可以指定光线从几何体偏移的距离。“光线偏移”(Ray Offset)可用于具有光线跟踪的自身阴影瑕疵的场景中。

如下所示在形状节点上创建该属性:

addAttr -ln miRayOffset -at "float" -dv 0.0 pSphereShape1;

该属性通常用于帮助解析阴影瑕疵,例如,在阴影或光线跟踪效果中显示的细分。