posted by cimple 2010. 8. 12. 19:12

1. Python Scripting 시작하기

Maya 에서 Python Scripting 을 가장 간단히 할 수 있는 방법은 MEL 과 똑같이 Script Editor 를 사용하는 방법과 Command Line 을 사용하는 방법이다.

하지만 Python Script 를 실행하기 위해서는 해당 실행창에서만 실행 가능하다.

Script Editor 에서는 Python 탭에서 실행해야 하고,



Command Line 에서는 좌측의 MEL 글자를 클릭하면 Python 스크립트 입력창으로 바뀌게 된다.




2. Hello World 찍어보기

Script Editor 의 Python 탭에서 간략하게 Hello World 를 찍어보자.
다음과 같이 입력하면 된다.


print "Hello, World!"






이렇게 입력한 뒤 실행하면 위쪽의 History 창에 실행 결과가 표시될 것이다.
다음도 가능하다.


print 25
print 25 / 2
print 25.0 / 2
print 25 / 2.0






3. Cube 하나 만들어보기

Python Script 를 실행하기 위해서는 maya 의 특정한 모듈들을 import 해야 한다.
그리고 그 모듈 안에 들어 있는 명령어를 실행하는 방식으로 이루어진다.

요약하면

Step 1) 필요한 Maya 모듈 import
Step 2) 필요한 명령어 실행


순으로 이루어지는데, 큐브를 하나 생성하려고 하면

ex)
import  maya.cmds
maya.cmds.polyCube()


이런 식으로 실행해야 한다.



import 는 한 번만 해도 되지만, 명령어를 실행할 때에는 매번 위와 같이
maya.cmds.명령어()
의 형태로 입력해야 하며, 커맨드를 하나의 function 처럼 인식하므로 뒤에 괄호 () 를 붙여 주어야 한다.

물론 저렇게 입력하는 것이 tedious 한 일이므로, 좀더 간결하게 입력하기 위해서

import maya.cmds as mc

이렇게 mc 라는 단축어로 import 하면 앞으로

mc.polyCube()

로 실행해도 정상적으로 실행할 수 있다.





4. MEL command 의 Echo 를 Phython Command 에서 실행하는 방법
(Phython Command 에 각종 Flag 를 추가하여 실행하는 방법)


마야의 메뉴를 클릭하거나 Shelf 에 있는 버튼 등을 눌러서 특정 명령을 실행하면, Script Editor 에서 그에 해당하는 커맨드가 표시되는 것을 확인할 수 있다.

이러한 식으로 커맨드의 Echo 를 받아 스크립트를 작성하는 방법을 자주 활용하게 되는데, Python Command 에서 이러한 MEL command 의 Echo 를 받아서 실행하는 방법은 다음과 같다.

MEL command 에서는 polyCube 를 생성할 때

polyCube -w 1 -h 1 -sx 1 -sy 1 -sz 1 -ax 0 1 0 -cuv 4 -ch 1

이런 식으로 명령어가 호출되는데, Phython command 에서는 다음과 같이 하면 된다.

(위에서 import 를 단축어로 받아왔다고 가정한 후)

mc.polyCube (w=1, h=1, d=1, sx=1, sy=1, sz=1, ax = (0, 1, 0), cuv = 4, ch = 1)

여기서 ax = (0, 1, 0)  과 같이 하나 이상의 배열 형태로 되어 있는 Flag 에 주목하자.



이 외에, scale 을 조정할 때 Maya command 에는 다음과 같이 표현된다.

scale -r 4 4 4;

하지만 여기서 -r 은 numeric value 를 attribute 로 받는 Flag 가 아니라, relative 하게 크기를 조절할 것인지를 결정하는 Boolean type Flag 이다. 따라서 이를 Python script 에서 실행하고 싶으면

mc.scale(4, 4, 4, r=True)

이런 식으로 실행해야 한다.



또 한 가지. polyBevel 같은 명령어의 경우, 커맨드의 맨 마지막에 해당하는 오브젝트의 이름이 오게 된다.

polyBevel -offset 0.5 -offsetAsFraction 1  ......... -angleTolerance 180 -ch 1 pCube1;

python script 에서는 이 때 해당하는 오브젝트의 이름을 맨 앞으로 가지고 오고, 쌍따옴표를 붙인다.

mc.polyBevel ("pCube1", offset=0.5, ...., ch=1)



MEL 과 마찬가지로 Script Editor 에서 완성된 Python script 를 드래그 한 후 가운데 버튼을 클릭하고 shelf 에 드래그&드랍하면 아이콘이 생성된다. 이것을 클릭해서 스크립트를 실행할 수 있다.





Script Editor 에서 각종 명령어들 (예를 들면 scale 등) 의 flag 를 확인하고 싶다면 해당 명령어를 드래그하고, 우클릭을 하고 있으면 나타나는 메뉴에서 Quick Help 라는 메뉴를 확인할 수 있다. 클릭하면 우측 하단에 해당 명령어에 해당하는 flag 들이 표시된다. 하지만 어떤 type 을 사용하는지까지는 표시되지 않아서 효용성을 잘은 모르겠다;






ThEnd.