python - Arnold 自定义 AOV

标签 python maya

我开始使用 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)

最佳答案

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

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

关于python - Arnold 自定义 AOV,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23173703/

相关文章:

python - 有没有办法用 python 开发 OS X 应用程序?

python - Maya 脚本编辑器中的执行行范围

syntax-error - Mel表达式语法错误

python - 使用多处理迭代幂集

python - jupyter 笔记本中的 Ipython 错误,没有堆栈跟踪

python - 手势识别 (PCA) - Python

python - 有没有更好的(即更 Pythonic 的)方法来处理打包/解包函数参数?

python - 设置不带字符串连接的属性

c++ - C++ 中的 Maya 批处理渲染

玛雅皮 : where's the graphics output?