在Maya中查询一个AOV是否存在
Query an AOV existence in Maya
我正在尝试编写一个脚本,使使用 LPE(光路径表达式)创建光 AOV 变得更加容易。
但我就是找不到一种方法来查询以前创建的 AOV 是否存在并跳过它们。
我正在学习从 Arvid Schneider 那里找到的教程,所以有些步骤来自他的视频。
这是我目前的情况:
custAovLst = []
for lightSel in range(len(LightList)):
lgt_name = cmds.listRelatives(LightList, shapes = 1)
aov ='setAttr -type "string" {}.aiAov {};'.format(lgt_name[lightSel], 'lgt_' + lgt_name[lightSel].replace("Shape", ""))
mel.eval(aov)
for light in LightList:
aovName = cmds.getAttr(light + '.aiAov')
custAovLst.append(aovName)
def aovCreate():
for aovPass in custAovLst:
if cmds.attributeQuery(aovPass , node = ".aiAov", ex = True):
pass
else:
lightAov = aovs.AOVInterface().addAOV(aovPass, aovType='rgba')
aiAov = pmc.PyNode(lightAov.node)
aiAov.lightPathExpression.set("C.<L.'" + aovPass + "'>.*")
aovCreate()
我们非常欢迎任何有关如何实现此目标或更好的方式继续点击的帮助或建议!
我最终使用了带有 referenceQuery
命令的列表。
aovList = cmds.ls(type = "aiAOV")
deleteNode = [node for node in aovList if 'lgt' in str(node) if not
cmds.referenceQuery(node, inr = 1)]
cmds.delete(deleteNode)
我正在尝试编写一个脚本,使使用 LPE(光路径表达式)创建光 AOV 变得更加容易。 但我就是找不到一种方法来查询以前创建的 AOV 是否存在并跳过它们。
我正在学习从 Arvid Schneider 那里找到的教程,所以有些步骤来自他的视频。
这是我目前的情况:
custAovLst = []
for lightSel in range(len(LightList)):
lgt_name = cmds.listRelatives(LightList, shapes = 1)
aov ='setAttr -type "string" {}.aiAov {};'.format(lgt_name[lightSel], 'lgt_' + lgt_name[lightSel].replace("Shape", ""))
mel.eval(aov)
for light in LightList:
aovName = cmds.getAttr(light + '.aiAov')
custAovLst.append(aovName)
def aovCreate():
for aovPass in custAovLst:
if cmds.attributeQuery(aovPass , node = ".aiAov", ex = True):
pass
else:
lightAov = aovs.AOVInterface().addAOV(aovPass, aovType='rgba')
aiAov = pmc.PyNode(lightAov.node)
aiAov.lightPathExpression.set("C.<L.'" + aovPass + "'>.*")
aovCreate()
我们非常欢迎任何有关如何实现此目标或更好的方式继续点击的帮助或建议!
我最终使用了带有 referenceQuery
命令的列表。
aovList = cmds.ls(type = "aiAOV")
deleteNode = [node for node in aovList if 'lgt' in str(node) if not
cmds.referenceQuery(node, inr = 1)]
cmds.delete(deleteNode)