【MAYA】머티리얼의 페이스 어사인이 있는지 여부를 판단한다

5110 단어 파이썬maya
머티리얼의 얼굴 할당이 있는지 여부를 결정하는 프로그램
htps : // 이 m / 하라 요키 / ms / 8에 c88d8에서 7 ~ ​​b91357fc8
이 근처의 고찰을 바탕으로 만들어 보았습니다. (이쪽의 기사로부터 꺼내서 이동했습니다.)
MAYA2018 + MacOS Sierra에서 작동 확인 중입니다.

SG에 대한 연결이 인스턴스 객체 그룹과 객체 그룹 중 어느 것에서 뻗어 있는지 확인해도 좋을 것 같지만, objectGrpCompList 그 판단으로 해 보겠습니다.
import pymel.core as pm

def has_face_assign(shape):
    """
    シェイプにマテリアルのフェイスアサインがあるかどうか確認する

    :param shape: チェックするシェイプ
    :type shape: pymel.nodetypes.Shape
    :rtype: bool
    """
    instanceNumber = shape.instanceNumber()
    objectGrpCompList = \
        shape.instObjGroups[instanceNumber].objectGroups[0].objectGrpCompList
    num_face_block = (len(objectGrpCompList.get()))
    return num_face_block > 0


여기에서 동작 검증합니다.
shape = pm.PyNode('pCube1|pCubeShape1') # フェイスアサインのないシェイプ
has_fa = has_face_assign(shape)
print(has_fa)
#出力:False

shape = pm.PyNode('pCube2|pCubeShape1') # フェイスアサインのあるインスタンスシェイプ
has_fa = has_face_assign(shape)
print(has_fa)
#出力:True

shape = pm.PyNode('pCube3|pCubeShape2') # インスタンスが存在しないフェイスアサインのないシェイプ
has_fa = has_face_assign(shape)
print(has_fa)
#出力:False

shape = pm.PyNode('pCube4|pCubeShape3') #インスタンスが存在しないフェイスアサインのあるシェイプ
has_fa = has_face_assign(shape)
print(has_fa)
#出力:True

shape = pm.PyNode('pCube5|pCubeShape4') #マテリアルが外れてしまったシェイプ
has_fa = has_face_assign(shape)
print(has_fa)
#出力:False

문제 없을 것 같습니다.

좋은 웹페이지 즐겨찾기