Arnold自定义AOVs

1 投票
1 回答
5553 浏览
提问于 2025-04-18 03:25

我刚开始学习在Maya中使用Python,遇到了第一个问题:

我无法访问我阴影组中新创建的aiCustomAOV(这是Arnold渲染器的一个功能)。打印出来的结果显示阴影组的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)

1 个回答

2

你正在尝试自己连接所有东西,其实可以直接使用已经实现好的函数:

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

撰写回答