Как зарегистрировать рендер 'Арнольд' - PullRequest
0 голосов
/ 19 мая 2018

Я последовал за http://www.toadstorm.com/blog/?p=136, чтобы открыть сцену майя без интерфейса.

Это основной сценарий:

import maya.cmds as cmds
import subprocess
# replace mayaPath with the path on your system to mayapy.exe
mayaPath = 'C:/Program Files/Autodesk/Maya2018/bin/mayapy.exe'
# replace scriptPath with the path to the script you just saved
scriptPath = 'C:/Users/Rik/Desktop/CreateNewLayerWithMeshesForBatchRenderPurpose.py'
def massAddRenderLayer(filenames, layername):
    for filename in filenames:
        maya = subprocess.Popen(mayaPath+' '+scriptPath+' '+filename+' '+layername,stdout=subprocess.PIPE,stderr=subprocess.PIPE)
        out,err = maya.communicate()
        exitcode = maya.returncode
        if str(exitcode) != '0':
            print(err)
            print 'error opening file: %s' % (filename)
        else:
            print 'added new layer %s to %s' % (out,filename)


filenames = ['C:\Users\Rik\Desktop\Test_maya_file_FILE1.ma'] 
renderLayerToAdd = 'newRenderLayer'

massAddRenderLayer(filenames, renderLayerToAdd)

, и этот сценарий называетсяfor:

import sys
import maya.standalone as std
std.initialize(name='python')
import maya.cmds as cmds
from mtoa.cmds.arnoldRender import arnoldRender
filename = sys.argv[1]
layername = sys.argv[2]

def addRenderLayer(filename,layername):
    try:
        cmds.file(filename,o=True,f=True)
        newLyr = cmds.createRenderLayer(n=layername,empty=True,makeCurrent=True)
        meshes = cmds.ls(type='mesh')
        xforms = []
        for i in meshes:
            xf = cmds.listRelatives(i,p=True)[0]
            xforms.append(xf)
            cmds.editRenderLayerMembers(layername,xforms)

        cmds.loadPlugin( 'mtoa.mll' )
        arnoldRender(1, 1, True, True,'camera1', ' -layer' + newLyr)
        cmds.setAttr("defaultArnoldDriver.ai_translator", "png", type="string")
        cmds.setAttr("defaultArnoldDriver.pre", "file_name", type="string")
        arnoldRender(1920, 1080, True, True,'camera1', ' -layer' + newLyr)

        sys.stdout.write(newLyr)
        return newLyr
    except Exception, e:
        sys.stderr.write(str(e))
        sys.exit(-1)

addRenderLayer(filename,layername)

Когда я запускаю основной скрипт, он открывает программу mayapy.exe, но когда я хочу визуализировать фрейм, я получаю сообщение об ошибке Failed to register renderer 'arnold', даже если я импортировал arnold и загрузилплагин mtoa.mllКак я могу 'зарегистрировать' Арнольд ''?

...