[Maya] 객체 이름을 고려하지 않는 객체 선택UID 사용
"앞으로 중복되거나 우연히 일치하지 않는 전제에서 사용할 수 있다", 이름으로 대상을 선택할 수도 있다.알아봤는데
위의 그림은 Sphere의 UID, ▲ Locator의 UID입니다.Transform과 locatorShape은 또 다르다.polySphere 노드, 소재도 다릅니다.모든 장면, 모든 객체에는 작성할 때마다 다른 ID가 할당됩니다.
MEL로 얻다
ls -sl -uuid;
// Result: 25519E0E-4D79-574D-1DE7-EDA620516AAA //
ls 명령으로 "uuid"플래그를 사용하면 UUID가 이름 대신 반환됩니다.파이톤으로
from maya import cmds
sel_ID = cmds.ls(sl=True,uuid=True)[0]
와 같다.uid 플래그를 사용합니다.선택 항목
sel_ID
# Result: u'25519E0E-4D79-574D-1DE7-EDA620516AAA' #
cmds.select(sel_ID)
# Error: TypeError: file <maya console> line 1: Object 25519E0E-4D79-574D-1DE7-EDA620516AAA is invalid #
cmds.ls(sel_ID)
# Result: [u'pSphere1'] #
UUID를 select 명령에 직접 전달하는 것도 오류가 발생하지만 ls 명령에 전달하면 대상 이름이 반환됩니다.먼저 ls 명령으로 ID에서 대상 이름을 뽑아서 select에 넘기는 게 어때요?
객체 이름 변경 여부
이름 바꿔도 괜찮아, 이번 눈이야.괜찮으시면 곤란합니다.
이름을 변경한 후 같은 ID를 ls 명령에 전달한 결과 새로운 대상명을 얻었다.ID 이름을 변경해도 계속 사용할 수 있습니다.
추가 1: UID 재작성
rename 명령을 사용하여 uid 플래그를 활성화하면 UUID를 직접 입력할 수 있습니다.물론 자유로운 내용을 입력할 수 없으니 UUID의 쓰기 방법을 모방할 필요가 있다.
위의 그림은 먼저'~AAA'의 UID를'~BBB'로 바꾸는 모습이다.
sel_ID = cmds.ls(sl=True,uuid=True)
cmds.rename(cmds.ls(sel_ID)[0],u"25519E0E-4D79-574D-1DE7-EDA620516BBB",uuid=True)
cmds.ls(sl=True,uuid=True)
그나저나 그림 아래에 살짝 보이지만 스크립트를 통해 이 작업을 진행하면 아토찰리 편집기가 차례대로 업데이트되지 않기 때문에 BBB가 된 후에도 AE에서 AAAA가 된다.다시 선택하면 AE에서도 결과를 확인할 수 있습니다.
혜택2:pymel의 경우
개인적으로는 cmds보다 pymel을 사용하기 쉽지만, 여기서는 보기 드문 것이 cmds가 쓴 것이다.왜냐면...
from pymel import core as pm
pm.ls(sl=True,uuid=True)
# Error: MayaNodeError: file C:\Program Files\Autodesk\Maya2018\Python\lib\site-packages\pymel\core\general.py line 2282: Maya Node does not exist (or is not unique):: u'25519E0E-4D79-574D-1DE7-EDA620516BBB' #
실수할 수도 있지...이 근처에 뭔가 있는 것 같은데... 그리고 문서에 아무렇지 않은 것처럼 쓰여있는데?
따라서 ls upid를 사용하고 싶다면 cmds를 사용하세요.이미 몰라!바보!!
Maya2018.4에 기사를 썼기 때문에 2019 또는 그 이후에 치료가 가능할지도 모른다🤔
[추기] pikoboru씨로부터 추가 관련 정보가 있기 때문에 제가 인용할 수 있도록 허락해 주십시오
Reference
이 문제에 관하여([Maya] 객체 이름을 고려하지 않는 객체 선택UID 사용), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://zenn.dev/it_ks/articles/0f461d86cc3b53텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)