下列动态属性用于与自定义着色器一起使用。默认情况下,其中某些属性在 Maya 用户界面中不是始终可见的。但是,一旦您创建这些属性,即可在“属性编辑器”(Attribute Editor)的“附加属性”(Extra Attributes)区域查看和编辑相应值。
可将自定义信息合并到场景的元素(例如灯光、摄影机、对象和实例)中。使用动态 miData 属性将 mental Ray 用户数据节点连接到元素,以使 mental Ray 着色器可以访问该自定义信息。
createNode -n "miUserData" mentalrayUserData;
“mentalrayUserData”节点包含以下两个属性:“binaryData”和“asciiData”。“asciiData”是首选方法。“asciiData”属性应使用自定义用户数据填充并使用 mentalrayuserData.message 栓连接到 mental Ray 着色器。
addAttr -ln "miData" -at message pSphereShape1;
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;
在使用非常复杂的着色网络时,使用该属性将禁用依存关系图中循环的检测以提高性能。某些情况下,着色网络中的循环可能导致 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;
若要指定包含动画置换的对象,请将 miDisplaceAnimation(布尔)动态属性添加到对象形状节点。
这是针对转换引擎的提示,以便避免可能昂贵的 DG 遍历来检测动画置换。
addAttr -ln "miDisplaceAnimation" -at bool myShapeNode;
该选项可基于 Maya 的细分将所有多边形网格处理为镶嵌细分的三角形。使用该选项,您可以更有效地利用内存,以便具有较大多边形网格渲染的大型场景占用更少的内存。
有关详细信息,请参见导出三角形化的多边形。
此外,在每个形状节点上都支持动态属性 miTriangles (boolean),它将基于每个形状覆盖全局设置。因此,支持以下两种常见情况:
addAttr -ln "miTriangles" -at bool myMeshNode;
在每个 Maya 光的“属性编辑器”(Attribute Editor)中,属性的 mental Ray 区域指定用于焦散和全局照明的光子数。默认情况下,这是要存储的光子数。
为了进行正确的物理模拟,使用要发射的光子数更为理想。为提供这种支持,mental Ray 可识别有关平行光、点光源和聚光灯的两个属性:
addAttr -ln "causticPhotonsEmit" -at "short" myLightShape; addAttr -ln "globIllPhotonsEmit" -at "short” myLightShape;
可使用以下动态属性在 Maya 光节点上控制 mental Ray 灯光属性仅光子
如果在灯光节点上启用了光子发射,则识别该属性并将其转换为 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)
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)
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;
如果要将“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 的值。
使用该属性,可以指定光线从几何体偏移的距离。“光线偏移”(Ray Offset)可用于具有光线跟踪的自身阴影瑕疵的场景中。
addAttr -ln miRayOffset -at "float" -dv 0.0 pSphereShape1;