개요
Autodesk Maya의 cmds.rename 명령어는 현재 장면(Scene) 내의 오브젝트의 이름을 변경하는 데 사용됩니다.
이는 오브젝트의 관리와 식별을 용이하게 하기 위해 스크립트 및 도구 작성 시 자주 사용됩니다.
구문
cmds.rename(object, newName)
파라미터
object: 이름을 변경할 오브젝트의 현재 이름을 지정합니다.
cmds.rename('oldName', 'newName')
newName: 오브젝트의 새 이름을 지정합니다.
cmds.rename('objectName', 'newName')
반환 값
String: 새 이름을 반환합니다.
상세 설명
cmds.rename 명령어는 지정된 오브젝트의 이름을 새로운 이름으로 변경합니다.
이 명령어는 단일 오브젝트뿐만 아니라 여러 오브젝트의 이름을 일괄적으로 변경할 때도 유용하게 사용할 수 있습니다.
예제 1: 기본 사용법
단일 오브젝트의 이름을 변경하는 간단한 예제입니다.
import maya.cmds as cmds
# 'pSphere1' 오브젝트의 이름을 'mySphere'로 변경
new_name = cmds.rename('pSphere1', 'mySphere')
print(new_name) # 결과: 'mySphere'
예제 2: 선택된 오브젝트의 이름 변경
현재 선택된 오브젝트의 이름을 변경하는 예제입니다.
import maya.cmds as cmds
# 현재 선택된 오브젝트를 'selectedObject'로 이름 변경
selected_objects = cmds.ls(selection=True)
if selected_objects:
new_name = cmds.rename(selected_objects[0], 'selectedObject')
print(new_name) # 결과: 'selectedObject'
else:
print('No objects selected.')
예제 3: 이름 충돌 해결
새 이름이 이미 존재하는 경우, Maya는 자동으로 숫자를 추가하여 이름 충돌을 해결합니다.
import maya.cmds as cmds
# 'pCube1' 오브젝트의 이름을 'myCube'로 변경
# 'myCube'가 이미 존재하는 경우, 'myCube1', 'myCube2' 등의 이름으로 변경됨
new_name = cmds.rename('pCube1', 'myCube')
print(new_name) # 결과: 'myCube', 'myCube1' 등
고급 사용법
cmds.rename 명령어를 사용하여 더 복잡한 이름 변경 작업을 수행하는 방법에 대한 고급 예제입니다.
예제 4: 여러 오브젝트의 일괄 이름 변경
여러 오브젝트의 이름을 일괄적으로 변경하는 예제입니다.
import maya.cmds as cmds
def rename_objects(prefix):
selected_objects = cmds.ls(selection=True)
for i, obj in enumerate(selected_objects):
new_name = f"{prefix}_{i+1}"
cmds.rename(obj, new_name)
# 선택된 오브젝트의 이름을 'object_1', 'object_2', ... 형식으로 변경
rename_objects('object')
예제 5: 특정 패턴을 기반으로 이름 변경
특정 패턴을 기반으로 오브젝트의 이름을 변경하는 예제입니다.
import maya.cmds as cmds
def rename_pattern(old_pattern, new_pattern):
all_objects = cmds.ls()
for obj in all_objects:
if old_pattern in obj:
new_name = obj.replace(old_pattern, new_pattern)
cmds.rename(obj, new_name)
# 'oldPattern'이 포함된 모든 오브젝트의 이름을 'newPattern'으로 변경
rename_pattern('oldPattern', 'newPattern')
예제 6: 네임스페이스 내 이름 변경
특정 네임스페이스 내의 오브젝트 이름을 변경하는 예제입니다.
import maya.cmds as cmds
def rename_in_namespace(namespace, new_name):
all_objects = cmds.ls(f"{namespace}:*")
for obj in all_objects:
short_name = obj.split(':')[-1]
cmds.rename(obj, f"{namespace}:{new_name}_{short_name}")
# 'myNamespace' 내의 모든 오브젝트의 이름을 'newName_' 접두사로 변경
rename_in_namespace('myNamespace', 'newName')
주의 사항
cmds.rename명령어는 오브젝트의 이름이 고유해야 하므로, 새 이름이 이미 존재하는 경우 Maya는 자동으로 숫자를 추가하여 이름 충돌을 해결합니다.- 오브젝트의 이름을 변경하면 해당 오브젝트를 참조하는 스크립트나 설정이 영향을 받을 수 있으므로, 이름 변경 시 주의해야 합니다.
- 네임스페이스를 사용하는 경우, 전체 경로 이름을 사용하여 오브젝트를 정확하게 지정해야 합니다.
- Maya의 히스토리와 연결된 다른 오브젝트들이 이름 변경으로 인해 영향을 받을 수 있으므로, 필요한 경우 히스토리나 연결을 업데이트해야 합니다.
참조
- Maya Commands Documentation
- Maya 스크립팅 관련 기타 명령어들:
cmds.lscmds.selectcmds.listRelativescmds.objExists
이 매뉴얼은 Maya의 cmds.rename 명령어에 대한 포괄적인 설명을 제공하며, 다양한 예제와 사용법을 통해 사용자에게 깊이 있는 이해를 제공합니다.