gpt4 book ai didi

python - Maya 渲染设置问题

转载 作者:行者123 更新时间:2023-12-01 04:55:29 28 4
gpt4 key购买 nike

我有两个问题,我不确定这是否可以使用 python 在场景中完成。

我的 Maya 版本未随任何 Mental Ray 一起安装。有时,当我打开文件(随 Mental Ray 安装)时,我不断收到如下错误:

// Warning: file: /apps/Linux64/aw/maya2014/scripts/others/supportRenderers.mel line 77: The renderer "mentalRay" used by this scene, is not currently available. The Maya Software renderer will be used instead. //
// Error: file: /apps/Linux64/aw/maya2014/scripts/others/supportRenderers.mel line 82: setAttr: The attribute 'defaultRenderGlobals.currentRenderer' is locked or connected and cannot be modified. //
// Error: file: /apps/Linux64/aw/maya2014/scripts/others/unifiedRenderGlobalsWindow.mel line 415: The renderer mentalRay is not registered yet. //
// Error: line 1: The renderer mentalRay is not registered yet. //

我尝试使用以下代码来“纠正”该问题:

list = cmds.listAttr("defaultRenderGlobals", l=True)

for item in list:
cmds.setAttr("defaultRenderGlobals." + item, l=False)

mel.eval('updateCurrentRendererSel("unifiedRenderGlobalsRendererSelOptionMenu");')
mel.eval('loadPreferredRenderGlobalsPreset("mayaHardware");')

但是如果我尝试打开渲染设置,我会收到另一堆错误

//Error: Object ‘tabForm’ not found.

那么,有什么方法可以在场景中解决这个问题

附截图: enter image description here

最佳答案

注意:请参阅此答案下面的“更新”部分以查找完整的解决方案。

为什么不尝试使用 setAttr 本身解锁并设置 currentRenderer 值。

cmds.setAttr("defaultRenderGlobals.currentRenderer", l=False)    
cmds.setAttr("defaultRenderGlobals.currentRenderer", "mayaHardware", type="string")

您收到错误 //Error: Object ‘tabForm’ not find. 因为渲染设置窗口无法加载,可能是因为未注册 mentalRay。因此,在当前渲染器更改之前,请避免调用以下命令:

mel.eval('updateCurrentRendererSel("unifiedRenderGlobalsRendererSelOptionMenu");')
mel.eval('loadPreferredRenderGlobalsPreset("mayaHardware");')

更新:

从问题的更新和下面的评论中,我们了解到这里的问题是 Maya 在遇到缺少渲染器或渲染设置错误时无法正确构建渲染设置窗口的 UI。这会导致父 UI 组件(例如选项卡和框架)无法构建。因此,当渲染器切换时,渲染设置 UI 会尝试将相应的设置加载到这些选项卡中,但找不到它们并停止。

要解决此问题,我们只需设置所需的渲染设置,完全删除渲染设置窗口的 UI 并重新加载即可。我为此编写了一个快速函数。这将修复它。

import maya.cmds as cmds
import maya.mel as mel


def remake_render_settings_ui(renderer="mayaSoftware"):
""" Remakes the render settings window """
# Unlock the render globals' current renderer attribute
cmds.setAttr("defaultRenderGlobals.currentRenderer", l=False)

# Sets the current renderer to given renderer
cmds.setAttr("defaultRenderGlobals.currentRenderer", renderer, type="string")

# Deletes the render settings window UI completely
if cmds.window("unifiedRenderGlobalsWindow", exists=True):
cmds.deleteUI("unifiedRenderGlobalsWindow")

# Remake the render settings UI
mel.eval('unifiedRenderGlobalsWindow;')


if __name__ == "__main__":
remake_render_settings_ui(renderer="mayaHardware")

警告:如果再次选择有问题的渲染器,这不会阻止 UI 再次丢失。为了防止这种情况,最好 unload渲染器的插件。无论如何,如果再次调用上述方法,窗口应该被修复。

希望这有用。

关于python - Maya 渲染设置问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27520717/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com