Maya에서 Arnold Stand-in 쉐이딩 모드 변경하기: 초보자 가이드 | 지식에 대한 탐구

Maya에서 Arnold Stand-in 쉐이딩 모드 변경하기: 초보자 가이드 | 지식에 대한 탐구

이 글에서는 Maya에서 Python 스크립트를 사용하여 Maya scene파일 내부에 존재하는 모든 Arnold Stand-in 노드의 viewport 표시 설정을 클릭 한 번으로 변경하는 방법을 알아봅니다. 특히 ‘Shaded’ 모드로 설정하여 렌더링에 가깝게 표시하는 방법을 다룹니다.

 

다만 주의 하실 것은 shaded 모드의 경우 scene에 존재하는 aiStand-in의 수에 따라 RAM 사용량이 급증하여 다운될 수 있으니 주의하시기 바랍니다.

1. 필요한 도구: Maya 및 Python

이 스크립트를 실행하려면 다음 도구가 필요합니다.

  • Autodesk Maya: 3D 모델링 및 애니메이션 소프트웨어.
  • Python: 스크립트를 작성하고 실행하는 데 사용되는 프로그래밍 언어. Maya는 기본적으로 Python을 지원하므로 별도 설치가 필요 없습니다.

2. 스크립트 이해하기

제공된 Python 스크립트를 단계별로 살펴보겠습니다.

import maya.cmds as cmds

# aiStandIn 노드 찾기
ai_standins = cmds.ls(type='aiStandIn')

# aiStandIn 노드의 viewport 표시 설정 변경
for standin in ai_standins:
    try:
        # 'mode' 속성을 6으로 설정하여 'Shaded' 모드로 변경
        # Mode 설정 : 0-Bounding Box, 1-Per Object Bounding Box, 2-Polywire, 3-Wireframe, 4-Point Cloud, 5-Shaded Polywire, 6-Shaded
        cmds.setAttr(f'{standin}.mode', 6)
    except RuntimeError as e:
        print(f"Error setting shading mode for {standin}: {e}")

1. 모듈 가져오기:

maya.cmds 모듈은 Maya 명령어에 접근할 수 있도록 해주는 Python 모듈입니다. 이를 cmds라는 별칭으로 사용하여 코드를 간결하게 작성합니다.

2. aiStandIn 노드 찾기:

cmds.ls(type='aiStandIn') 명령은 현재 Maya scene에서 모든 Arnold Stand-in 노드를 찾아 리스트로 반환합니다.

3. 쉐이딩 모드 변경:

이 부분은 ai_standins 리스트에 있는 각 Stand-in 노드에 대해 반복 작업을 수행합니다.

  • cmds.setAttr(f'{standin}.mode', 6).mode 속성을 6으로 설정하여 ‘Shaded’ 모드로 변경합니다.
  • Mode 설정 종류 : 0-Bounding Box, 1-Per Object Bounding Box, 2-Polywire, 3-Wireframe, 4-Point Cloud, 5-Shaded Polywire, 6-Shaded
  • try...except 블록은 속성 변경 중 발생할 수 있는 에러를 처리합니다. 만약 에러가 발생하면 에러 메시지를 출력합니다.

 







 

3. 스크립트 실행하기

  1. Maya Script Editor를 엽니다.
  2. 위 코드를 Script Editor의 python 창에 붙여넣습니다.
  3. 실행 버튼을 클릭하거나 Ctrl+Enter를 누릅니다.
  4. 또는 Maya Script Editor의 python 창에 있는 코드를 모두 선택 후 가운데 버튼으로 shelf에 드래그하여 버튼으로 등록합니다.

이제 scene에 있는 모든 Arnold Stand-in 노드가 ‘Shaded’ 모드로 변경되어 렌더링에 가깝게 표시됩니다.

4. 전체 코드

import maya.cmds as cmds

# aiStandIn 노드 찾기
ai_standins = cmds.ls(type='aiStandIn')

# aiStandIn 노드의 viewport 표시 설정 변경
for standin in ai_standins:
    try:
        # 'mode' 속성을 6으로 설정하여 'Shaded' 모드로 변경
        # Mode 설정 : 0-Bounding Box, 1-Per Object Bounding Box, 2-Polywire, 3-Wireframe, 4-Point Cloud, 5-Shaded Polywire, 6-Shaded
        cmds.setAttr(f'{standin}.mode', 6)
    except RuntimeError as e:
        print(f"Error setting shading mode for {standin}: {e}")

이 스크립트를 사용하면 Arnold Stand-in 노드의 쉐이딩 모드를 빠르게 변경하고 워크플로우를 개선할 수 있습니다.

 

5. 위 코드에 사용된 Maya Python 함수와 명령어

1. maya.cmds 모듈

Maya의 명령어를 사용할 수 있도록 하는 모듈입니다. 이 모듈을 통해 다양한 Maya 명령어를 실행할 수 있습니다.

 

2. cmds.ls()

주어진 조건에 맞는 객체 리스트를 반환합니다. 예를 들어, 특정 타입의 객체를 찾는 데 사용할 수 있습니다.

cmds.ls(type='aiStandIn')

 

3. cmds.setAttr()

지정된 객체의 속성 값을 설정합니다. 예를 들어, 객체의 특정 속성을 변경하는 데 사용할 수 있습니다.

cmds.setAttr(f'{standin}.mode', 6)

 

4. RuntimeError

특정 예외 상황이 발생했을 때 이를 처리하기 위해 사용되는 예외 클래스입니다.

 

5. 예제 코드

다음은 cmds.ls()cmds.setAttr()를 사용하여 aiStandIn 노드의 viewport 표시 설정을 변경하는 예제 코드입니다:

import maya.cmds as cmds

# aiStandIn 노드 찾기
ai_standins = cmds.ls(type='aiStandIn')

# aiStandIn 노드의 viewport 표시 설정 변경
for standin in ai_standins:
    try:
        # 'mode' 속성을 6으로 설정하여 'Shaded' 모드로 변경
        # Mode 설정 : 0-Bounding Box, 1-Per Object Bounding Box, 2-Polywire, 3-Wireframe, 4-Point Cloud, 5-Shaded Polywire, 6-Shaded
        cmds.setAttr(f'{standin}.mode', 6)
    except RuntimeError as e:
        print(f"Error setting shading mode for {standin}: {e}")

 

위 코드에서 사용된 Maya Python 함수는 cmds.ls()cmds.setAttr()입니다.
cmds.ls()는 특정 타입의 객체를 나열하는 데 사용되며, cmds.setAttr()는 객체의 속성 값을 설정하는 데 사용됩니다.
RuntimeError는 예외 처리를 위해 사용되었습니다.