В Maya, используя Python или Mel, как найти объекты без ультрафиолетовых оболочек - PullRequest
0 голосов
/ 22 мая 2018

Я пытаюсь создать сценарий, который просматривает все объекты сетки в сцене майя и возвращает объекты, которые не имеют УФ-оболочек.Я написал скрипт, который работает ... он использует команду findUvShells, но, очевидно, для этого приложения эта конкретная команда мучительно медленная.

Существует ли способ OpenMaya или более быстрая команда?Я использовал этот сценарий для одного из наших более простых персонажей ... у которого только один объект сетки ... и потребовалось больше минуты, чтобы сказать мне, что не было объектов с 0 УФ-оболочками.

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 голосов
/ 22 мая 2018

Похоже, я искал команду 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
...