我开始在maya和python工作,这是我遇到的第一个问题:
我无法访问我的着色组(Arnold)新创建的aiCustomAOV。打印给出了阴影组的AOV数量(参见代码的最后一行)。
如果我将代码分成两部分(创建AOV并查询着色组的属性)并单独运行它我得到结果,但我认为这不是正确的方法。正确?
通常,当从渲染设置创建自定义AOV时,它会自动将AOV添加到aiCustomAOVS的着色组列表中。 似乎存在初始化问题。如何克服它?
以下是代码:
'''check whether the aiAOV_Default_Color exists'''
if not cmds.objExists('aiAOV_Default_Color'):
customAOV = cmds.createNode('aiAOV',n='aiAOV_Default_Color', skipSelect=True)
cmds.setAttr(customAOV+'.name','Default_Color',type='string')
cmds.connectAttr(customAOV+'.message','defaultArnoldRenderOptions.aovList',force=1)
cmds.connectAttr('defaultArnoldDriver.message',customAOV+'.outputs[0].driver', force=1)
cmds.connectAttr('defaultArnoldFilter.message',customAOV+'.outputs[0].filter', force=1)
print 'AOV has been created'
else:
print 'No need to create a new customAOV'
''' get all shading groups'''
shadingGroup = cmds.ls('aiStandard1SG')[0]
numOfCustomAOVs = cmds.getAttr(shadingGroup+'.aiCustomAOVs', size=1)
print 'Number of custom AOVs %d' % (numOfCustomAOVs)
答案 0 :(得分:1)
您正在尝试自己连接所有内容,只需使用已实现的功能:
import mtoa.aovs as aovs
# Create AOV
aovs.AOVInterface().addAOV('cputime', aovType='float')
# List all AOVs with their names
print(aovs.AOVInterface().getAOVNodes(names=True))