在Maya中,使用Python或Mel,如何查找没有UV shell的对象

时间:2018-05-22 15:56:16

标签: python maya uv-mapping

我正在尝试制作一个脚本,该脚本扫描Maya场景中的所有网格对象,并返回没有UV外壳的对象。我编写了一个有效的脚本......它使用命令findUvShells,但显然对于这个应用程序来说,特定的命令令人痛苦地缓慢。

是否有OpenMaya方法可以执行此操作,还是使用更快的命令?我在我们的一个更简单的角色上使用了这个脚本......只有一个网格对象...并且花了一分钟时间告诉我没有0个UV外壳的对象。

def FindObjectsWithNoUVShells():    
    ObjectsWithNoUVShells = []
    OldSel = mc.ls(sl=True)
    Geo = mc.ls(typ="mesh")
    for Obj in Geo:
        mc.select(Obj)
        AllUVSets = (mc.polyUVSet(Obj, q=True, allUVSets=True))
        UVSet = AllUVSets[0]
        if (findUvShells(uvSet=UVSet)[1]) == 0:
            ObjectsWithNoUVShells.append(Obj)
    mc.select(OldSel)

    return (len(ObjectsWithNoUVShells) > 0), ObjectsWithNoUVShells

FindObjectsWithNoUVShells()

1 个答案:

答案 0 :(得分:1)

看起来polyEvaluate命令就是我想要的。对于这一点,它几乎是即时的。

def FindObjectsWithNoUVShells():
    ObjectsWithNoUVShells = []
    OldSel = mc.ls(sl=True)
    Geo = mc.ls(typ="mesh")
    for Obj in Geo:
        mc.select(Obj)

        if mc.polyEvaluate(uvShell=True) == 0: 
            ObjectsWithNoUVShells.append(Obj)
    mc.select(OldSel)

    return (len(ObjectsWithNoUVShells) > 0), ObjectsWithNoUVShell