Не могу инициализировать черепаху в Maya через скрипты - PullRequest
0 голосов
/ 25 мая 2018

У меня есть инструмент Maya Python, который должен загрузить черепаху, установить ее в качестве средства визуализации, а затем запечь вершину AO на выбранном объекте.Все это работает за исключением того, что когда пользователь впервые открывает Maya, он не будет инициализироваться в первый раз.Он не создает узел "TurtleDefaultBakeLayer" для скрипта, на котором можно изменять атрибуты.Пользователь должен вручную открыть окно настроек рендеринга, а затем щелкнуть вкладку «ЧЕРЕПАШКА» рядом с вкладкой «Общие», чтобы он что-нибудь испек.После этого он работает точно так же, как и с открытым окном Render Settings или без него.

Мой вопрос заключается в том, как мне получить только что открытую Maya, чтобы Turtle инициализировал и инстанцировал эти компоненты без необходимости открывать окно настроек рендеринга?

def initializeTurtle(self):
    #Load Turtle
    cmds.loadPlugin('Turtle')        

    #Set renderer
    cmds.setAttr("defaultRenderGlobals.currentRenderer", "turtle", type="string")

enter image description here

1 Ответ

0 голосов
/ 06 июня 2018

Для всех, кому было любопытно решить эту проблему, не открывая окно настроек рендеринга, единственное жизнеспособное решение, которое мы могли бы найти, - это вручную создать узлы, необходимые Turtle, вместо того, чтобы полагаться на ее автоматическое создание.

def initializeTurtle(self):
    #Load Turtle

    pluginStatus = cmds.pluginInfo( "Turtle", q = True, l = True, n = True )
    if pluginStatus == False:
        cmds.loadPlugin( "Turtle")

    #Create bake nodes
    cmds.setAttr("defaultRenderGlobals.currentRenderer", "turtle", type="string")
    tOptions = cmds.createNode ("ilrOptionsNode", name="TurtleRenderOptions")
    tBakeLayer = cmds.createNode ("ilrBakeLayer", name="TurtleDefaultBakeLayer")
    tbakeLayerMgr = cmds.createNode ("ilrBakeLayerManager", name="TurtleBakeLayerManager")

    cmds.connectAttr(tOptions+".message", tBakeLayer+".renderOptions")
    cmds.connectAttr(tBakeLayer+".index", tbakeLayerMgr+".bakeLayerId[0]")
...