필요한 파이썬 패키지 설치하기
Maya는 자체적으로 Python 환경을 제공합니다. 외부 Python 환경과의 연동을 위한 ‘pymel’ 패키지 설치 방법은 다음과 같습니다.
pip install pymel
스크립트 분석
라이브러리 불러오기
# 필요한 라이브러리를 불러옵니다.
import maya.cmds as cmds
함수 정의 및 실행
# Hypershade에서 선택된 파일 노드들의 UV Tiling Mode를 UDIM (Mari)로 변경합니다.
def set_udim_tiling():
selected_nodes = cmds.ls(selection=True)
file_nodes = [node for node in selected_nodes if cmds.nodeType(node) == 'file']
for file_node in file_nodes:
uv_tiling_mode_attr = f"{file_node}.uvTilingMode"
cmds.setAttr(uv_tiling_mode_attr, 3)
num_changed_nodes = len(file_nodes)
if num_changed_nodes > 0:
cmds.inViewMessage(amg=f'Changed {num_changed_nodes} nodes to UDIM tiling mode.', pos='midCenterTop', fade=True, fit=100)
else:
cmds.inViewMessage(amg='No nodes were changed.', pos='midCenterTop', fade=True, fit=100)
set_udim_tiling()
전체 코드
import maya.cmds as cmds
def set_udim_tiling():
"""
Hypershade에서 선택된 파일 노드들의 UV Tiling Mode를 UDIM (Mari)로 변경합니다.
"""
# 선택된 노드 가져오기
selected_nodes = cmds.ls(selection=True)
# 파일 노드 필터링
file_nodes = [node for node in selected_nodes if cmds.nodeType(node) == 'file']
# 각 파일 노드의 UV Tiling Mode 변경
for file_node in file_nodes:
# UV Tiling Mode 속성 가져오기
uv_tiling_mode_attr = f"{file_node}.uvTilingMode"
# UDIM (Mari) 모드로 설정 (값 3)
cmds.setAttr(uv_tiling_mode_attr, 3)
# 변경된 노드 개수 출력
num_changed_nodes = len(file_nodes)
if num_changed_nodes > 0:
cmds.inViewMessage(
amg=f'',
pos='midCenterTop',
fade=True,
fit=100
)
else:
cmds.inViewMessage(
amg=f'',
pos='midCenterTop',
fade=True,
fit=100
)
# 스크립트 실행
set_udim_tiling()
Maya Python `cmds` 모듈 상세 매뉴얼
아래는 위 코드에서 사용된 Maya Python 함수 및 명령어들입니다:
maya.cmds 모듈
Maya의 명령어를 사용할 수 있도록 하는 모듈입니다.
cmds.ls()
주어진 조건에 맞는 객체 리스트를 반환합니다.
selected_nodes = cmds.ls(selection=True)
cmds.nodeType()
주어진 객체의 타입을 반환합니다.
cmds.nodeType(node) == 'file'
cmds.setAttr()
지정된 객체의 속성 값을 설정합니다.
cmds.setAttr(uv_tiling_mode_attr, 3)
cmds.inViewMessage()
Maya의 뷰포트 상단에 메시지를 표시합니다.
cmds.inViewMessage(amg='', pos='midCenterTop', fade=True, fit=100)