猿问

在Maya中查询一个AOV是否存在

我正在尝试编写一个脚本,使使用 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()

非常欢迎任何有关如何实现此目标或更好的方法继续点击的帮助或建议!


慕侠2389804
浏览 100回答 1
1回答

Cats萌萌

我最终使用了一个带有referenceQuery命令的列表。aovList = cmds.ls(type = "aiAOV")deleteNode = [node for node in aovList if 'lgt' in str(node) if not&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;cmds.referenceQuery(node, inr = 1)]cmds.delete(deleteNode)
随时随地看视频慕课网APP

相关分类

Python
我要回答