返回首页 >> Maya文档 >> maya

最有效地使用 Maya


使用以下最佳实践以优化 Maya 的性能。

交互式绘图

启用“着色 > 交互式着色”(Shading > Interactive Shading)以提高移动摄影机时的性能。
将文件以最简单的显示模式保存以缩短加载时间。避免以纹理显示模式保存文件。
使用多边形的默认显示选项。
关闭所有非必要的 UI 的显示,这些 UI 随场景视图的更新而更新,例如:“平视显示仪”(Heads Up Display)、“时间滑块”(Time Slider)、范围滑块(Range Slider)、“Hypershade”、“属性编辑器”、“UV 纹理编辑器”(UV Texture Editor)。
关闭所有非必要的场景元素的显示,范围从栅格到绘图骨架。
使用仅包含单个建模面板的布局。
通过执行以下操作以有效地划分场景:
将场景转分段成不重叠的区域(例如,使用栅格布局)。
使用显示层来根据要求打开或关闭区域的显示。
将场景拆分到不重叠的矩形栅格也有助于设置可见性层,因为可以逐个区域设置场景。但是,请注意,Maya 针对每个对象执行前、后和侧摄影机视锥消隐。因此,即使只显示了一个三角形,Maya 也会完整地绘图。

使用新硬件“Mipmap”的过滤选项,这些选项位于着色器节点的“硬件纹理”(Hardware Texturing)区域的“纹理过滤器”(Texture Filter)下拉列表中。
使用新的“使用默认材质”显示模式(如果适用)。
如果不需要,不要使用额外的“着色”菜单设置(例如,着色对象上的线框)。
如果可能,使用“显示 > 隔离选择”(Show > Isolate Select)来限制场景中显示和刷新的内容。
如果对象具有的三角形不足几百个,特别是如果只具有几个三角形时,这些对象将具有较高的性能开销。如果可能,将这些对象合并为一个对象。与对象很多但每个对象只具有几个三角形相比,对象较少但每个对象具有数千个三角形时 Maya 的性能更高。
尽可能使用实例化。这包括实例化几何体、材质和纹理。如果使用文件纹理节点,最好使用实例化的一个文件纹理节点,而不是使用该节点的多个副本。这将影响文件加载时以及在磁盘上占用的内存。
请确保将显卡设定为 Maya 设置并禁用垂直同步(同步)。
默认材质显示选项可以用于查看针对所有对象使用 1 个着色器与使用 n 个着色器之间的差别。
如果将曲面划分为许多层,这可能会减慢着色模式显示。如果可能,尝试使用较少的划分,如果使用划分,为了可见性应将曲面划分成为栅格区域。这有助于实现可见性消隐。
尽量尝试构建边界(边界框)彼此不相交的曲面。可见性测试性能在这些情况下较差。
按显示属性类型对 DAG 层次进行排序可能会有所帮助。此操作可以通过在“大纲视图”(Outliner)中重新排序 DAG 对象来完成。
对 DAG 层次进行排序可能会有所帮助:
首先是所有曲面,然后是所有非曲面
按在给定区域内的可见性(如果层用于可见性划分,则可能是按层)
按到查看器的深度(如果可行)
材质和照明属性:例如,依次是所有 lambert、所有 blinn、所有不使用照明的着色器、所有使用照明的着色器、所有不具有透明度的着色器、所有具有透明度的着色器
针对对象尽量使用最少的着色器。例如,当不需要照明时可以使用一个曲面着色器,否则将替代其他位置的光源,例如逐顶点颜色。
移除重复的着色网络。
硬件着色器

这些是给硬件着色器插件编程人员的编码提示。

如果不是必需的,不要入栈和弹出所有 GL 属性。这比使特定属性入栈开销更高。
如果仅在场景视图中使用硬件着色器,建议使用旧版本的 API:geometry()、bind() 和 unbind()。如果还要对硬件着色器进行批渲染,建议使用较新的 API:glGeometry、glBind 和 glUnbind。
建议将所有节点属性缓存在内部。示例插件 hwColorPerVertex、hwPhongShader 和 cgFxShader 都可执行此功能。非缓存值的求值开销很高,可能双倍延长绘图时间。
避免使用复杂的属性(结构和数组)。
如果着色器上的输出颜色并不重要,不要让任何属性影响它。否则,将导致额外的计算,因为将一个属性标记为脏会导致重新计算以派生从属属性。
如果不是必需的,compute() 方法可以保留为空。该方法越简单越好。如果不计算输出颜色,将不会看到“Hypershade”样例。
不要在插件中对切线进行后期规格化。规格化由系统完成。
通过几何体调用发送的数据是只读的且缓存在内部。请勿修改这些值。
针对简单数据使用简单数据结构(而不是 Maya API 对象)。例如,使用 float3 而不是 MFloatVector。OpenMaya 中使用的接口导致性能开销。
利用 M3dView 上的可用方法。OpenGL 状态在内部进行缓存,与使用 beginGL()、endGL() 和直接调用 OpenGL 相比可以提供更好的性能。
使用 glDrawRangeElements 来绘图。显卡供应商建议使用此 API 来进行传递到硬件着色器的几何体阵列的绘图。
确保正确设定 hasTransparency() 的返回值。将其设定为 true 会导致 Maya 绘制某个对象两次(一次在消隐正面时,一次在消隐背面时)。
考虑在 M3dView 中的当前显示状态。例如,如果显示模式是“不使用灯光”(Use No Lights)就不要禁用照明。
当透明度为启用时,帧缓冲区混合已启用。不必再次启用。
使用新方法 MPxHwShaderNode::currentPath() 发送属性查询方法(例如,getTexCoordSetNames()) 的相应信息。
测试对于交互式和特别是对于硬件渲染,在颜色/Alpha 和深度遮罩上的哪些参数是启用的。它们可以为如何绘制更简单的几何体给出提示。
对于硬件渲染器,插件可以多次调用。常规序列通常是:深度过程、[照明过程[es]]、颜色过程、[阴影贴图过程]、[Alpha 过程]、[深度过程]。标记了方括号“[”和“]”的项目是可选项目并且依赖于场景中的灯光数量、是否已启用那些灯光的阴影以及在“渲染设置”中是否指定 alpha 和深度输出图像。
使用新的“忽略硬件着色器”(Ignore Hardware Shader)选项,该选项可用于每对象(NURBS 或多边形曲面)。该选项可以在“对象显示”(Object Display)区域的“属性编辑器”(Attribute Editor)中找到,并作为“显示 > 对象显示”(Display > Object Display)菜单的新选项。使用“忽略硬件着色器”(Ignore Hardware Shader)让硬件着色器不显示在对象上,或使用“使用硬件着色器”(Use Hardware Shader)来恢复显示着色器的默认状态。这将允许插件的用户根据性能要求选择性地关闭着色器显示。
内存

不受限制的撤消队列比受限制的撤消队列占用更多的内存。在“首选项”(Preferences)窗口中默认“撤销”(Undo)队列设置为 50。
利用在 Windows XP 上高达 3 GB 的大地址识别能力。
尽可能使用实例化。这包括几何体、材质、纹理、灯光等等。
平行内存复制可能在某些情况下提高 Opterm 或 Nehalem 系统的速度。但是,也会潜在减慢 Xeon 系统。如果发现速度已受到影响,使用 MAYA_NO_PARALLEL_MEMCPY 以禁用平行内存复制。但是,请注意,在 Maya 中还有其他因素可能会影响速度,例如场景的复杂性和工作量。
IK、依存关系循环和性能

加载文件后,等待光标可能会出现而且 Maya 将较长时间(至少几分钟)地使用所有可用 CPU 周期。该问题似乎出现在具有 IK 和依存关系循环的文件。
理想的解决方法是找到并移除依存关系循环。这些循环可能很难查找。例如,A 可能为 pointConstraint B 所转换,B 使用目标 C,C 的父是 D,D 为表达式 E 所旋转,E 有一个输入 F,F 受约束于 G,而 G 是 A 的一个子对象。一个提示是查找具有在许多不同节点上的属性输出的表达式。

即,有些复杂场景需要花费很长的时间来进行求值,在加载文件时可能会遇到这种情况。

多边形绘图缓存

在 Maya 中,使用多边形绘图缓存通常可以提高速度和性能。但是,在 Maya 中加载某些非常大的文件时,多边形绘图缓存可能导致 Maya 使用的内存超过在系统上应用程序的可用内存,从而导致不稳定。
(注意:在 Windows 和 Linux 上的 64 位版本的 Maya 提供了足够的内存空间从而不会出现此问题。)

如果 32 位系统上使用 Windows XP 遇到此问题,建议您增加 Maya 的应用程序内存限制;有关如何执行此操作的说明,请参见设置 Maya 使用最大内存(增加虚拟内存限制)。

也可以禁用多边形绘图缓存,以便可以更轻松地加载非常大的文件。有一个环境变量称为 MAYA_DISABLE_POLYGON_DRAW_CACHE。将其设置为 1 以禁用多边形绘图缓存。

如果禁用多边形绘图缓存,交互式绘图性能将减慢。建议您不要使此环境变量设置为 1,而是仅在处理出现此问题的文件时将其这样设置。

动画

使用“蒙皮 > 编辑平滑蒙皮(Skin > Edit Smooth Skin)”以限制最大影响,移除未使用的影响并删减小影响。
使用“编辑变形器 > 删减成员身份”命令移除不受变形器影响的组件。
音频

当在 Maya 中使用导入的音频文件时,不建议有使用音频功能的背景应用程序在运行。运行使用音频的其他应用程序可能会导致 Maya 挂起。
毛发

降低“毛发反馈”(Fur Feedback)头发的“毛发精确度”(Fur Accuracy)值显著地增加交互式绘图速度,但会造成不太容易预览“扭曲度”(Scraggle)、“卷曲”(Curl)或“成束”(Clumping)。
由于“阴影贴图”(Shadow Maps)的渲染成本很高,只有在需要时才使用。Autoshading 的成本很低,并且在使用“Maya 软件”(Maya Software)渲染器时可以为一些灯光提供一种可接受的替代方案。
杂项

在 Windows 上,碎片化的硬盘驱动器会导致严重的性能问题。建议使用专用的应用程序定期且彻底地消除碎片化。由操作系统提供的标准工具通常不足以获得性能优势。
利用文件引用。详细信息请参见关于文件引用。
应非常熟悉“窗口 > 设置/首选项 > 性能设置(Window > Settings/Preferences > Performance Settings)”。
使用“文件 > 优化场景大小(File > Optimize Scene Size) > ”移除未使用的场景数据。
在屏幕保护程序激活后返回 Maya 可能在一些使用旧的或低端显卡的机器上导致选择蚂蚁线或面板内容消失。
按空格键或使用“布片”菜单来更改当前的“面板”(Panels)配置。所有面板现在应正常绘图。要返回到上一个配置,再次按空格键,或者从“面板”(Panels)菜单选择相应的条目。

发生在属性求值期间的循环检查可能会丢失一个循环,在此循环中 DAG 节点上的传入连接形成一个在其子节点上包含任何世界空间属性的循环。如果怀疑有这样的情况,可以用 MEL 命令 cycleCheck NODE 来检测这些周期。
建模

使用多边形的“重用三角形”(Reuse Triangles)属性。
使用“多边形减少”(Poly Reduce)来简化复杂的几何体。不具有以下特征的多边形模型将显示得更快:非共享法线、非共享纹理坐标、未映射面和不是三角形的面(未三角形化)。
动力学

使用刚体几何体的“替代对象”(Stand In)属性。
当开始或设置模拟时,在粒子上使用较少的几何体。
经典布料

针对初始设置和模拟测试,禁用“经典布料”(Classic Cloth)碰撞。
动画设置例如“帧示例”(Frame Samples)和“时间步长”(Time Step Size)等属性,以减少解算时间。
在批处理模式下解算
渲染

使用“渲染诊断”(Render Diagnostics)来获得在提高性能方面的提示。详细信息请参见 Maya 渲染诊断
移除重复的着色网络。
Artisan

如果可能,增加“图章间距”(Stamp Spacing)(“Artisan 工具”(Artisan Tool)的设置编辑器中的“笔划”(Stroke)区域)。
如果可能,使用“屏幕投影”(Screen Projection)(“Artisan 工具”(Artisan Tool)的设置编辑器中的“笔划”(Stroke)区域)。
Paint Effects

在“Paint Effects 工具”(Paint Effects Tool)的设置编辑器中降低“显示质量”(Display Quality)。
请将您关于此页内容的评论发送给我们

(www.cgtsj.com)