Tuesday, June 23, 2009

How to install GI Joe? (in Maya MEL)

GI Joe is somewhat old MEL. Now its website is down and there are no help files available, but it's still popular.
Execution is simple. Just type
GI_Joe();
Then GI_Joe window is supposed to be load.
However, in most cases, you might run into this error :
// Error: File not found. //
To fix this, Inside the script, change this directory into the proper path.
Like this:
// modify here the path of the imported scene.
string $pathL = "C:/Your own path/GIJoe.lights";
Then problem will be solved.
FYI, GIJoe.lights is just a maya file that contains bunch of pre-made lights.
Below is the captured image of GIJoe.lights loaded into Maya.

GI Joe는 여러가지 단점 때문에 사용하기가 안좋으므로 별도의 툴을 간단히 만들어 사용하는 게 좋음.
키워드 : MMM 의 Light 툴


마야 다운될때 임시저장파일 있는곳 찾기

Maya crashes... How do I find the temp backup project file?
마야가 죽을때 자동으로 임시 저장되는 파일 위치
user(sometimes default user) > Document(or whatever its called in the english version) > Temp (or sometimes in the maya folder)

Subcharacter Set 만들기

Character Set 에 너무 많은 attribute 가 들어가면 Graph Editor 에서 보기 불편하다.
그럴땐 Subcharacter Set 을 만들어서 편한 단위로 관리할 수 있다.

Character Set 은
    메뉴 > Character > Create Subcharacter Set
하면 생성할수 있고
Character Set 에 Attribute 를 추가하거나 제거하는 등 Edit 하는 것은
그냥 Outliner 에서 끌어서 해도 되지만

Relationship Editor 에서
Character 에디트 모드로 한 후

왼쪽에 캐릭터셋을 선택하고,
오른쪽에 그 캐릭터에 들어갈 attribute 를 선택하면 바로 들어간다.

왼쪽에 parent 가 될 캐릭터 셋을 선택하고
오른쪽에 child 가 될 캐릭터 셋을 선택해서
subcharacter set 사이의 hierarchy 를 edit 하는 것도 가능하다.

MEL 함수정의 순서로 인한 error 해결법

멀쩡하던 MEL이 함수정의 순서를 바꾸니까 에러가 나는 경우가 있다.
이럴때는 호출하는 쪽에서 타입을 명확히 해서 argument 를 넘겨주면 문제가 해결된다.

--------------------------------
사례)

예를 들면 andy rig 즉 JTD Rigging Tool 사용시, 함수정의 순서가 바뀌면 문제가 생기는 일이 있다.
결론부터 말하면 이것은 float array 를 argument 로 받는 함수를 호출할때
{1.0, 2.0} 와 같이 넣어주지 않고 {1, 2} 와 같이 넣어주어 생기는 문제이다.

---------------------------------
설명)

MEL 에서 함수 정의 순서는, mainFunc() 가 sub() 를 부른다고 할때
정의 순서는 원칙적으로 상관이 없다.

하지만 실제 사용중에 문제가 생기는 경우가 있는데
예를 들어 sub() 가 argument 로 float[] 를 쓰는 경우,
mainFunc() 에서 {1.0, 2.0} 또는 {(float)1, (float)2} 와 같이 주면 문제가 안생기지만
그냥 {1, 2} 라고 주면 문제가 생긴다.

float array 를 {1.0, 2.0} 처럼 철저하게 소수점까지 찍어주지 않고
{1, 2} 처럼 부르는 버릇이 있다면, sub() 가 mainFunc() 보다 뒤에 정의되었을 경우
int[] 를 float[] 로 변환할 수 없다는 type error 를 낸다.

왜냐하면 아직 정의되지 않은 함수를 부를 때 호출하는 쪽에서 int array 를 넣어준다면
MEL 은 자동적으로 그 호출되는 함수의 array 타입이 int array 일 것이라고 가정하기 때문이다.

command line rendering in Maya 마야에서 커맨드 라인 렌더링하는 법

참고 : Dos command prompt 에서 Batch 파일 이용한 Batch Render 사용예

// Help 보기
Render -help -r sw Render -help -r mr

// house.mb 라는 파일을 렌더링한다. 렌더러는 software renderer 를 사용.
Render "house.mb"

// house.mb 라는 파일을 렌더링한다. 단 렌더러는 mental ray 를 사용.
Render -r mr "house.mb"

// mycam1 이라는 카메라를 이용해서 1 프레임에서 10 프레임까지 렌더링한다
Render -cam mycam1 -s 1 -e 10 "house.mb"

// 1 프레임부터 20 프레임까지 2 프레임씩 건너뛰어 렌더링한다. 즉, 총 10프레임이 렌더링됨
Render -s 1 -e 20 -b 2 "house.mb"

// 640 x 480 해상도로 렌더링한다.
Render -x 640 -y 480 "house.mb"

// -rd 는 Render Directory 를 지정한다.
Render -rd "c:\myRender" "house.mb"

// -n 은 프로세서 개수를 지정한다.
// 여기서는 두개의 프로세서로 렌더링하도록 지정.
Render -n 2 "house.mb" Render -rt 2 -r mr "house.mb"

// 멘탈레이일 때는 -rt 로 해야한다. -rt는 Render Threads
// 전체 프로세서 수는 task manager 에서 볼 수 있다.
// 다음과 같이 4개의 프로세서가 있다면, -n 2 라고 지정하면 이중 2개의 프로세서만 써서
// 렌더링을 하게 된다. 따라서 렌더링 걸면서도 컴퓨터를 별 지장 없이 쓸 수 있다.
// 별도로 지정하지 않으면 모든 프로세서를 다 쓴다. 즉 여기서는 -n 4 라고 한것과 같이 렌더링된다.



Troubleshooting
간혹 다음 같은 에러가 생기는 때가 있는데 Error: Error reading file. Error: Cannot load scene "empty.ma". Please check the scene name 이런 에러가 생기는 원인은 크게 두가지.

1. 마야에서 현재 프로젝트 세팅을 제대로 해준 후에 Command line 으로 렌더링 걸어야 한다. 안그러면 텍스처 경로 같은 것이 없어서 제대로 렌더링 안됨.

2. 마야 버전이 여러개 깔린 경우에 간혹 문제가 될 수 있는데 (보통의 경우 문제가 안됨. 왜냐하면 최신버전을 제일 나중에 깔았을 것이기 때문에 system path 등이 최신버전 걸로 돼 있을 것이므로) 이는 다음과 같이 하면 된다.

예를 들어 기존에 먀아 2010을 깔았는데 나중에 마야 2009를 깔아서 다음과 같이 했더니 마야 2009로 렌더가 돼버린다고 하자.
render -r mr "d:\myproject\myscene.ma"

마야 2010으로 렌더하고 싶으면 다음과 같이 실행하면 하면 된다.
"c:\program\autodesk\maya2010\bin\render.exe" -r mr "d:\myproject\myscene.ma"

(이와 같이 실행 파일인 render.exe의 패스를 full path 로 주면 해결된다(참고링크))

참고 :
DOS 명령어 잘 모르는 사람들은 다음 참조

여기는...

CG 관련 간단한 tip 모아놓는 곳