Maya에서 Arnold 렌더러를 사용할 때, StandIn 오브젝트의 경로를 일괄적으로 업데이트해야 하는 경우가 있습니다.
이 글에서는 Python 스크립트를 사용하여 이 작업을 자동화하는 방법을 단계별로 설명하겠습니다.
단계별 가이드
1단계: 필요한 모듈 설치
이 스크립트는 Maya의 내장 Python 환경을 사용하므로 추가 모듈 설치가 필요하지 않습니다. Maya에 기본적으로 포함된 `maya.cmds`와 Python 표준 라이브러리의 `os` 모듈만 사용합니다.
2단계: 스크립트 작성
Maya의 스크립트 편집기를 열어 다음 코드를 입력합니다:
import maya.cmds as cmds
import os
class ArnoldStandInPathCorrectorUI:
def __init__(self):
self.window_name = "arnoldStandInPathCorrectorUI"
self.create_ui()
def create_ui(self):
# 이미 존재하는 창 삭제
if cmds.window(self.window_name, exists=True):
cmds.deleteUI(self.window_name)
# 새 창 생성
cmds.window(self.window_name, title="Arnold Stand-In Path Corrector", widthHeight=(400, 150))
cmds.columnLayout(adjustableColumn=True, columnAttach=('both', 5))
# UI 요소 추가
cmds.text(label="New Path:")
self.new_path_field = cmds.textField()
cmds.button(label="Browse New Path", command=self.browse_new_path)
cmds.button(label="Update Paths", command=self.update_paths)
# 창 표시
cmds.showWindow(self.window_name)
def browse_new_path(self, *args):
# 폴더 선택 다이얼로그 표시
path = cmds.fileDialog2(fileMode=3, dialogStyle=2)
if path and path[0]:
cmds.textField(self.new_path_field, edit=True, text=path[0])
def update_paths(self, *args):
# 새 경로 가져오기
new_path = cmds.textField(self.new_path_field, query=True, text=True)
if not new_path:
cmds.confirmDialog(title="Error", message="Please specify the new path.")
return
# 씬에서 모든 Arnold Stand-In 노드 찾기
stand_in_nodes = cmds.ls(type="aiStandIn")
updated_count = 0
for node in stand_in_nodes:
# 현재 .ass 파일 경로 가져오기
current_path = cmds.getAttr(f"{node}.dso")
if current_path and current_path.lower().endswith('.ass'):
# 현재 경로에서 파일 이름 추출
file_name = os.path.basename(current_path)
# 새 파일 경로 생성
new_file_path = os.path.join(new_path, file_name)
# 새 경로로 속성 업데이트
cmds.setAttr(f"{node}.dso", new_file_path, type="string")
print(f"Updated: {node}")
updated_count += 1
else:
print(f"Skipped: {node} (Not an .ass file or no path)")
# 완료 메시지 표시
cmds.confirmDialog(title="Complete", message=f"Total Arnold Stand-In nodes updated: {updated_count}")
# UI 생성 및 표시
ui = ArnoldStandInPathCorrectorUI()
3단계: 코드 실행
- Maya에서 스크립트 편집기를 엽니다 (Windows > General Editors > Script Editor).
- 위의 코드를 Python 탭에 붙여넣습니다.
- 코드를 선택하고 실행 버튼을 클릭합니다.
4단계: UI 사용하기
스크립트를 실행하면 “Arnold Stand-In Path Corrector” 창이 나타납니다:
- “Browse New Path” 버튼을 클릭하여 새로운 경로를 선택합니다.
- 선택한 경로가 텍스트 필드에 표시됩니다.
- “Update Paths” 버튼을 클릭하여 모든 Arnold Stand-In 오브젝트의 경로를 업데이트합니다.
- 프로세스가 완료되면 업데이트된 노드의 수를 보여주는 확인 창이 나타납니다.
코드 설명
이 스크립트는 다음과 같이 작동합니다:
ArnoldStandInPathCorrectorUI클래스를 정의하여 사용자 인터페이스를 생성합니다.create_ui메소드에서 Maya 명령어를 사용하여 창과 UI 요소들을 생성합니다.browse_new_path메소드는 폴더 선택 다이얼로그를 표시하고, 선택된 경로를 텍스트 필드에 설정합니다.update_paths메소드는 실제 경로 업데이트 작업을 수행합니다:- 씬에서 모든 Arnold Stand-In 노드를 찾습니다.
- 각 노드의 현재 .ass 파일 경로를 가져옵니다.
- 새 경로와 원래 파일 이름을 조합하여 새 파일 경로를 만듭니다.
- 노드의 ‘dso’ 속성을 새 경로로 업데이트합니다.
- 마지막으로, 업데이트된 노드의 수를 표시하는 확인 창을 보여줍니다.
이 스크립트를 사용하면 프로젝트의 파일 구조가 변경되었을 때 Arnold Stand-In 오브젝트의 경로를 쉽고 빠르게 업데이트할 수 있습니다.