[Maya] 객체 이름을 고려하지 않는 객체 선택UID 사용

3091 단어 Pythonuuidmayatech
특집 편집기 아래에 UUID 막대가 있습니다.
"앞으로 중복되거나 우연히 일치하지 않는 전제에서 사용할 수 있다", 이름으로 대상을 선택할 수도 있다.알아봤는데
위의 그림은 Sphere의 UID, ▲ Locator의 UID입니다.Transform과 locatorShape은 또 다르다.polySphere 노드, 소재도 다릅니다.모든 장면, 모든 객체에는 작성할 때마다 다른 ID가 할당됩니다.

MEL로 얻다


ls -sl -uuid;
// Result: 25519E0E-4D79-574D-1DE7-EDA620516AAA // 
ls 명령으로 "uuid"플래그를 사용하면 UUID가 이름 대신 반환됩니다.
https://help.autodesk.com/view/MAYAUL/2018/JPN/?guid=__Commands_ls_html

파이톤으로


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' # 
실수할 수도 있지...
https://github.com/LumaPictures/pymel/blob/master/pymel/core/general.py#L2282
이 근처에 뭔가 있는 것 같은데... 그리고 문서에 아무렇지 않은 것처럼 쓰여있는데?
https://help.autodesk.com/view/MAYAUL/2018/JPN/?guid=__PyMel_generated_functions_pymel_core_general_pymel_core_general_ls_html
따라서 ls upid를 사용하고 싶다면 cmds를 사용하세요.이미 몰라!바보!!
Maya2018.4에 기사를 썼기 때문에 2019 또는 그 이후에 치료가 가능할지도 모른다🤔
[추기] pikoboru씨로부터 추가 관련 정보가 있기 때문에 제가 인용할 수 있도록 허락해 주십시오

좋은 웹페이지 즐겨찾기