Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/blackberry/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 阿诺德定制AOV_Python_Maya - Fatal编程技术网

Python 阿诺德定制AOV

Python 阿诺德定制AOV,python,maya,Python,Maya,我开始使用maya和python,这里是我面临的第一个问题: 我无法访问我的着色组(Arnold)新创建的Acustomaov。打印结果显示着色组的AOV数为零(请参见代码的最后一行) 如果我将代码分成两部分(创建一个AOV并查询着色组的属性)并分别运行它们,我会得到结果,但我认为这不是正确的方法。对吧? 通常,从渲染设置创建自定义AOV时,会自动将AOV添加到Acustomavs的着色组列表中。 似乎存在初始化问题。如何克服它 代码如下: '''check whether the aiAOV_

我开始使用maya和python,这里是我面临的第一个问题:

我无法访问我的着色组(Arnold)新创建的Acustomaov。打印结果显示着色组的AOV数为零(请参见代码的最后一行)

如果我将代码分成两部分(创建一个AOV并查询着色组的属性)并分别运行它们,我会得到结果,但我认为这不是正确的方法。对吧?

通常,从渲染设置创建自定义AOV时,会自动将AOV添加到Acustomavs的着色组列表中。 似乎存在初始化问题。如何克服它

代码如下:

'''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)

您试图自己连接所有内容,只需使用已实现的功能:

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))