cglandlogo First Page
고객센터   
gallery media job community contentsmall  
  dbrush Blizzardfest 2014
 
[튜토리얼]어렵고 복잡한 MEL 기초에서 응용·활용까지   2010-10-27
MEL은 Maya의 심장으로 Maya가 작동하는 근간이다. MEL은 프로그램 언어인 C나 C++와 비슷한 구조로 이루어진 컴퓨터 언어로 공학을 공부한 사람에게는 접근하기 쉬운 언어이다. 하지만 공학을 접하지 못한 사람에게는 까다로운 컴퓨터 언어로 여겨져 접근하기 어려운
씨지랜드기자 cgland@cgland.com
ⓒ 디지털브러시 & cgland.com, 무단 전재 및 재배포 금지
게시글을 twitter로 보내기 게시글을 facebook으로 보내기 게시글을 Me2Day로 보내기

MEL은 Maya의 심장으로 Maya가 작동하는 근간이다. MEL은 프로그램 언어인 C나 C++와 비슷한 구조로 이루어진 컴퓨터 언어로 공학을 공부한 사람에게는 접근하기 쉬운 언어이다. 하지만 공학을 접하지 못한 사람에게는 까다로운 컴퓨터 언어로 여겨져 접근하기 어려운 것이 사실이다. 그러나 MEL은 그 구조가 다른 컴퓨터 언어에 비해 비교적 간단하기 때문에, 누구나 마음만 먹으면 쉽게 접근할 수 있다. 이 글은 MEL이 컴퓨터 언어여서 가까이 다가서지 못하는 사람들을 위해 얼마나 유용한 도구이며, 이를 어떻게 활용하는가를 알기 쉽게 설명했다. 이를 통해 많은 사람들이 Maya를 보다 효율적으로 활용할 수 있으면 하는 바람이다.

 

1. 멜(MEL)의 기초

2. 멜 커맨드(MEL Command)와 스크립트(Script)를 짜기 위한 기초 1

3. 멜 커맨드(MEL Command)와 스크립트(Script)를 짜기 위한 기초 2

4. 캐릭터 리깅(Character Rigging)에 멜 활용하기 1

5. 캐릭터 리깅(Character Rigging)에 멜 활용하기 2

 

■MEL이란 무엇일까요?

MEL은“Maya Embedded Language”의 약자로, Maya라는 3D 프로그램을 작동하는데 사용하는 컴퓨터 언어입니다. MEL은 컴퓨터 언어인 관계로 우리가 일반적으로 사용하고 공부하는 영어나 일어, 국어와는 달리 굉장히 딱딱한 구조를 가지고 있습니다. 다음에 나오는 스크립트(Script)는 선택한 오브젝트에 셰이프 컨트롤러(Shape Controller)를 만드는 프로시저(Procedure)입니다. 이 글을 읽는 독자 중에 Maya에 익숙하지 못하거나 C와 같은 컴퓨터 언어를 접해본 적이 없는 분들은“스크립트”, “셰이프 컨트롤러”, “프로시저”, “makeIdentiy”와 같은 어려운 개념과 여러 가지 다양한 커맨드(Command)에 기가 질릴지도 모르겠네요.

 

//create by Yi Seong Keun

proc sR_shapeControl(string $control, string $target){

string $ctlTarParent[] = `parent $control $target`;

setAttr ($control+”.translate”) 0 0 0;

makeIdentity -a 1 $control;

delete -constructionHistory $control;

string $ctlShapeParent[] = parent -r -s ($control+”Shape”) $target`;

}

 

위에 있는 스크립트는 Maya 유저라면 누구나 일상적으로 사용하는 작업의 일부분입니다. 이 스크립트가 실행하는 대부분의 작업은 Maya 유저 인터페이스에서 해당하는 버튼이나 메뉴 아이템을 클릭하면 같은 결과를 얻을 수 있습니다. 대표적인 예로 위에 있는 스크립트에서 3번째 줄에 나오는“parent”커맨드를 들 수 있습니다. parent 커맨드는 아주 기본적인 Maya 커맨드로 초보자도 알 수 있는 커맨드입니다. 이 커맨드를 인터페이스에서 실행하기 위해서는 메뉴 바에서 Edit > Parent 항목을 클릭하면 됩니다. 마찬가지로 위의 스크립트에서 5번째 줄에 나오는“makeIdentity”커맨드는 메뉴 바에서 Modify > Freeze Transformations 항목에 해당됩니다. makeIdentity와 Freeze Transformations의 이름이 달라 좀 헷갈리지만, 이 둘은 같은 기능을 합니다. 이처럼 MEL로 만든 스크립트는 Maya와 관계없는 이상한 나라 얘기가 아니라 Maya의 작업 과정을 영어 단어와 숫자, 부호로 표현한 것 입니다.

 

유저 인터페이스 메뉴 바에서 Parent, Freeze Transformation 항목

 

하지만 MEL 스크립트만으로 3D 애니메이션 작업을 한다는 것은 거의 불가능합니다. 특히 예술적 감각이 필요한 분야인 인체 모델링을 MEL 스크립트를 이용해서 작업하는 것을 상상해 봅시다. 이 경우 폴리곤이나 넙스 서피스의 각 점의 위치를 수치로 계산해야 하는데, 이는 생각만 해도 끔찍한 일입니다. 또한 Maya를 다루는 3D 관련 종사자들이 필수적으로 MEL을 배워야 하는 어려운 일이 생길 것입니다. 이러한 불편을 줄이기 위해 Maya 개발자들이 유저들이 사용하기에 편한 그래피컬 유저 인터페이스(graphical user interface, GUI)를 개발하였습니다. 이 그래피컬 유저 인터페이스를 이용하면 유저가 MEL을 전혀 몰라도 Maya를 아무 문제없이 사용할 수 있습니다. 그러나 Maya의 그래피컬 유저 인터페이스도 결국 MEL 스크립트를 이용해서 개발한 것입니다. 따라서 Maya를 사용한다는 것 자체가 MEL과 떼려야 뗄 수 없는 관계를 맺는 것입니다.

 

Maya의 그래피컬 유저 인터페이스 
 

■MEL을 어디에 사용할 수 있을까요?

그럼 MEL을 어디에 유용하게 사용할 수 있을까요? ‘어차피 그래피컬 유저 인터페이스가 MEL을 대신하는데 굳이 MEL을 배울 필요가 있을까?’라고 생각할 수도 있습니다. 물론 이 말이 100% 틀렸다고 할 수는 없습니다. MEL을 몰라도 훌륭한 결과물을 만드는 사람이 많기 때문이지요. MEL을 안다는 것은 Maya라는 프로그램에 대해 더 깊이 아는 것을 말합니다. Maya라는 프로그램이 어떻게 작동하는가를 보다 세부적으로 안다는 것은, 이를 더 효율적으로 활용할 수 있다는 말과 같습니다. “아는 것이 힘이다.”라는 말이 있습니다. 어떤 것에 대해 많이 알면 알수록 그것을 더 잘 활용할 수 있는 기회가 생기는 것과 마찬가지입니다. MEL을 이용하면 유저 인터페이스를 통해 우리가 할 수 없었던 여러 가지 일과 지겨운 반복 작업을 손쉽게 처리할 수 있습니다. MEL을 모르는 사람이 며칠 걸릴 일을 MEL을 잘 다루는 사람은 몇 분 내에 끝내버리고 한가하게 커피 한잔의 여유를 즐길 수 있습니다. 애니메이션을 배우는 학생의 작업은 비교적 충분한 시간이 주어지지만, 실제 작업은 항상 일정에 쫓길 수밖에 없습니다. 이럴 땐 시간이 곧 생명입니다. 주어진 일을 정확하게 빨리 처리하는 사람이 진정한 고수라 생각합니다. 이러한 고수가 되기 위해서는 MEL이라는 마법을 배우는 것이 좋습니다. 아울러 MEL을 이용해서 자신의 작업을 정리하면 그것이 바로 작업 노트가 되고, 언제든지 필요하면 참고할 수 있고, 문제점이 발견되면 수정할 수 있습니다

 

작업 노트로서 MEL 스크립트
 
 

다음은 MEL을 이용하는 구체적인 방법입니다.

1. 인터페이스를 이용하는 것보다 빨리 단축키를 만들 수 있으며, 아울러 인터페이스를 통해 접근할 수 없었던 Maya의 향상된 특성에 다가갈 수 있습니다.

2. Maya 인터페이스를 작업에 편리하도록 수정하거나 새로 첨가할 수 있습니다.

3. 내 작업에 꼭 필요한 모델링, 애니메이션, 다이내믹스 관련 MEL 스크립트와 프로시저를 만들 수 있습니다.

4. 반복적인 작업을 자동화할 수 있습니다.

 

■Maya에서 MEL을 다루는 도구는 무엇일까요?

MEL에 대해 어느 정도 이해가 되셨지요? 이젠 Maya에서 MEL을 다루는 도구들에 대해 알아보겠습니다. MEL이란 기본적으로 컴퓨터에 글자를 입력하는 것입니다. 그럼 Maya에서 글자를 입력할 수 있는‘한글’이나‘MS Word’와 같은 텍스트 편집창이 필요할 것이라는 것은 쉽게 짐작할 수 있습니다. Maya에서 이와 같은 역할을 하는 텍스트 편집창으로 대표적인 것이 2개가 있습니다. 첫 번째 것은 스크립트 에디터(Script Editor)이며, 두 번째 것은 커 맨드 라인(Command Line)입니다.

 

요약정리

Maya의 거의 모든 작업은 MEL 커맨드와 스크립트를 이용합니다. 아울러 우리가 편하게 사용하는 그래피컬 유저 인터페이스도 MEL 스크립트를 이용해서 만들었습니다. 따라서 Maya를 사용한다는 것은 결국 MEL과 직접적이든 간접적이든 관계를 맺는 것입니다. 또한 MEL은 Maya라는 툴을 보다 깊게 이해할 수 있는 도구이며, 이를 통해 전에 할 수 없었던

일들을 해낼 수 있습니다. 아울러 반복적인 작업을 손쉽게 할 수 있어 시간을 절약할 수 있습니다.

 

● 스크립트 에디터(Script Editor) _ 스크립트 에디터는 MEL 커맨드와 스크립트를 입력하고 실행할 수 있는 편집창을 말합니다. 메뉴 바에서 Window> General Editors > Script Editor를 클릭하거나 Maya 유저 인터페이스에서 맨 오른쪽 아래에 있는 스크립트 에디터 아이콘을 클릭하면 손쉽게 창을 열 수 있습니다. 스크립트 에디터는 크게 3부분으로 나눌 수 있습니다. 첫 번째 부분은 메뉴와 단축 아이콘이 있는 부분으로, 자신이 원하는 메뉴를 실행할 수 있는 곳입니다. 두 번째 부분은 히스토리 창(History Pane)으로 포토샵의 히스토리 창처럼 자신이 작업한 내용이 계속 기록되는 곳입니다. 유저 인터페이스를 이용해 작업한 것은 기본적으로 히스토리 창에 기록됩니다. 마지막 부분이 인풋 창(Input Pane)으로, 유저가 직접 MEL 커맨드나 스크립트를 입력하는 곳입니다. 입력을 마치고 메뉴 바에서 Command > Execute 항목을 클릭하거나 키보드 숫자 패드에서 Enter키를 누르면 입력한 커맨드나 스크립트가 실행됩니다. MEL을 실행하기 위해 숫자 패드의 Enter키를 사용하는 이유는 메인 Enter키는 인풋 창에서 다음 줄을 의미하기 때문입니다. 다시 말해 메인 Enter키를 누르면 다음 줄로 커서가 이동하고, 숫자 패드 Enter키를 누르면 인풋 창에 입력한 내용이 실행됩니다.

 

숫자 패드의 Enter키를 누를 경우 입력한 커맨드가 사라지고 히스토리 창에 기록됩니다. 만약 입력한 커맨드나 스크립트가 인풋 창에 남기를 원한다면 입력한 커맨드나 스크립트를 드래그해서 하이라이트하고 숫자 패드의 Enter키를 누르세요. 입력한 커맨드나 스크립트가 인풋창에서 사라지지 않고 남게 됩니다

 

● 커맨드 라인(Command Line) _ 커맨드 라인은 말 그대로 MEL 커맨드를 입력하는 한 줄을 말합니다. 단 한 줄에 끝나는 MEL 커맨드를 입력할 때 사용합니다. 예를 들면 다음과 같습니다.

 

sphere ;

이 커맨드는 넙스 구를 디폴트 설정으로 만들라는 것으로, 단 한 줄에 불과합니다. 따라서 커맨드 라인에서 사용할 수 있습니다. 커맨드 라인은 단 한 줄만 의미가 있기 때문에 메인 Enter키를 사용하면 그 커맨드가 바로 실행됩니다

커맨드 라인

 

요약정리

MEL 커맨드와 스크립트를 입력하고 실행하는 도구로 스크립트 에디터와 커맨드 라인이 있습니다. 커맨드 라인은 단 한 줄만 입력할 수 있으며, 스크립트 에디터는 여러 줄을 입 력할 수 있습니다. 커맨드 라인에 입력한 커맨드를 실행하기 위해서는 메인 Enter키를 누르고, 스크립트 에디터에 입력한 커맨드를 실행하기 위해서는 숫자 패드의 Enter키를 누르세요. 스크립트 에디터에서 메인 Enter키를 누르면 다음 줄로 이동합니다.

 

■간단한 예제를 통해 MEL이 작동하는 원리를 알아봅시다.

자! 이젠 간단한 예제를 통해 MEL 커맨드를 어떻게 입력하고 실행하는지 알아보겠습니다.

● sphere 커맨드 _ 가장 쉬운 예인 넙스 구(NURBS Sphere)를 MEL 커맨드를 통해 만들겠습니다. 유저 인터페이스에서 넙스 구를 만들기 위해서는 Create > NURBS Primitives > Sphere를 클릭해야 합니다. Sphere 항목을 클릭하는 것은 바로 sphere 커맨드를 입력하고 실행하는 것과 같습니다. 따라서 스크립트 에디터나 커맨드 라인에 sphere를 입력하고 Enter키를 누르면 넙스 구를 얻을 수 있습니다. 스크립트 에디터를 여세요. 인풋 창에 다음과 같은 커맨드를 입력하고 쭉 드래그해서 하이라이트하세요. 숫자 패드의 Enter키를 누르세요.

 

스크립트 에디터에서 sphere 커맨드의 입력과 실행

 

그리드(Grid) 원점(Origin)에 넙스 구가 생긴 것을 알 수 있습니다. 이제 sphere가 어떤 역할을 하는 MEL 커맨드인지 아시겠지요! 말 그대로“넙스구를 만들어라!”라는 뜻입니다. 그런데 sphere 끝에 세미콜론(;)이 붙어있습니다. 이 세미콜론이 왜 끝에 붙어있을까요? C나 C++와 같은 컴퓨터 언어를 공부하신 분들은 금방 아시겠지만 컴퓨터 언어를 전혀 모르시는 분들을 위해 간단히 설명하면, 명령이 여기서 끝난다는 뜻입니다. 즉, “sphere 커맨드가 여기서 끝난다.”라는 것을 Maya에게 가르쳐 주는 기호입니다. 만약 MEL 커맨드가 여러 개 있을 때 그 커맨드를 구분하는 세미콜론이 없다면 Maya가 각 커맨드가 어디서 끝나는지 알 수 없기 때문에 에러가 발생합니다. 자, 이번에 폴리곤 구(Polygon Sphere)를 만드는 커맨드인 polySphere를 sphere 커맨드 옆에 입력하고 숫자패드의 Enter키를 누르세요. 스크립트 에디터 히스토리 창과 피드백 라인에 다음과 같은 에러 메시 지가 뜹니다.

 

세미콜론으로 구분하지 않는 MEL 커맨드 사용

 

이번에 각 커맨드 끝에 세미콜론을 붙여보겠습니다. 스크립트 에디터에 다음과 같이 입력하고 숫자 패드 Enter키를 누르세요. 넙스 구와 폴리곤 구가 그리드 원점에 이상 없이 생긴 것을 알 수 있습니다. 이처럼 세미콜론은 MEL 커맨드를 구분하는 아주 중요한 기호입니다. 커맨드의 끝에 세미콜론을 꼭 붙여야 한다는 것을 잊지 마세요!

 

세미콜론으로 MEL 커맨드를 구분하고 실행

 

● sphere 커맨드의 플랙(Flag) _ sphere 커맨드를 통해 원점에 넙스 구가 생긴 것을 알았습니다. 그런데 이 구는 아주 평범한 구입니다. 원점에 위치하고, 반지름이 1유니트 크기에 완전한 구 형태입니다. 즉 디폴트 형태의 넙스 구입니다. 그러나 경우에 따라서는 완전한 구가 아닌 반구가 필요가 때가 있습니다. 아울러 반지름이 2유니트 이상인 구를 원할 수도 있습니다. 이럴 경우에는 Maya 유저 인터페이스의 sphere 옵션 창을 조절하면 원하는 결과를 얻을 수 있습니다 (Create > NURBS Primitives > Sphere ?). MEL 커맨드도 넙스 구의 옵션 창처럼 sphere 커맨드의 세부 옵션을 조절할 수 있습니다. sphere 커맨드의 세부 사항을 정하는 것을 플랙(Flag)이라 하며, 해당 커맨드 다음에 대시 기호(-) 붙여 사용합니다. 플랙은 사전에 정해져 있기 때문에 유저는 해당 커맨드를 사용하기 전에 어떤 플랙이 있는지 살펴봐야 합니다. 커맨드의 플랙을 확인하는 방법으로, MEL 커맨드 레퍼런스 인터넷 문서를 추천합니다(Help >MEL Command Reference). 이 문서는 아주 자세하게 해당 커맨드의 플랙을 설명하기 때문에 초보자뿐만 아니라 숙련자도 반드시 참고해야 하는 문서입니다. 자, 그럼 sphere의 플랙에 대해 알아봅시다. Maya 인터페이스에서 Create >NURBS Primitives > Sphere 항목을 클릭하세요. 스크립트 에디터의 히스토리 창을 보면 다음과 같은 문장이 보일 것입니다. sphere -p 0 0 0 -ax 0 1 0 -ssw 0 -esw 360 -r 1 -d 3 -ut 0 -tol sphere 커맨드 다음에 대시 기호(-)로 묶여지는 알파벳과 숫자들이 보입니다 (-p 0 0 0 -ax 0 1 0 -ssw 0.......). Maya를 처음 다루는 사람은 sphere까지는 무슨 뜻인지는 대충 알 수 알겠지만 나머지는 도통 무슨 말인지 알기 어렵습니다. 이처럼 플랙이 어려운 이유는 단어의 길이를 줄이기 위해 약자 (short name)를 사용했기 때문입니다. -p는 -pivot의 약자입니다. 즉, 넙스 구의 피봇 포인트(Pivot Point)의 위치를 말하는 것입니다. -pivot 다음에 있는 0 0 0은 넙스 구의 피봇 포인트 위치가 X축 0, Y축 0, Z축 0이라는 것을 차례로 말합니다. 따라서 ‘sphere -pivot 0 0 0;’은 넙스 구를 만드는데 그 피봇을 원점에 위치하라는 뜻입니다. 이를 약간 응용하면‘sphere -pivot 0 3 0;’은 무슨 뜻일까요? 한번 스크립트 에디터에 입력하고 숫자 패드 Enter키를 누르세요. 넙스 구가 X축 0, Y축 3, Z축 0 유닛에 생긴 것을 알 수 있습니다. -p 0 0 0 다음에 있는 나머지 플랙들도 다 약자로 되어 있습니다. 이 들을 원래의 이름으로 바꾸면 다음과 같습니다.

sphere -pivot 0 0 0 -axis 0 1 0 -startSweep 0 -endSweep 360 -

radius 1 -degree 3 -useTolerance 0 -tolerance 0.01 -sections 8 -

spans 4 -constructionHistory 1;objectMoveCommand;

훨씬 보기 좋게 바뀐 것을 알 수 있습니다. 플랙 각각을 잘 살펴보면, 넙스 구의 옵션 창에 나와 있는 각 옵션과 정확히 일치하는 것을 알 수 있습니다. 자, 이제 플랙에 대해 이해가 되셨지요! 초보자의 경우 플랙을 적을 때 가능하면 약자가 아닌 풀 네임으로 적으세요. 이러한 습관을 가지는 것이 플랙을 빨리 배울 수 있는 좋은 방법입니다.

 

요약정리

▷sphere 커맨드는 넙스 구를 만드는 명령입니다. 폴리곤 구를 만드는 커맨드는 polySphere입니다.

▷세미콜론(;)은 커맨드의 끝을 알리는 기호입니다. 커맨드 끝에는 반드시 세미콜론을 붙여야 합니다.

▷플랙이란 커맨드를 어떻게 세부적으로 실행할 것인가를 정하는 것입니다. 예를 들어 sphere 커맨드의 플랙은 넙스 구를 어떻게 만들 것인가를 정하는 것이지요. 대시 기 호(-)를 이용하여 플랙을 표시합니다.

▷초보자의 경우 인터페이스를 통해 작업한 결과를 스크립트 에디터에서 확인하는 것이 MEL을 빨리 배울 수 있는 아주 좋은 방법입니다.

 

■맺는말

이상으로 MEL이 무엇이며 Maya에서 이를 어떻게 활용할 수 있는가를 알아봤습니다. MEL은 컴퓨터 언어지만, 다른 언어에 비해 비교적 쉬운 구조를 가지고 있습니다. 프로그래밍의 경험이 없다고 지레 포기하지 하세요. 관심을 가지고 차근차근 열심히 공부하면 어느 순간 MEL을 작업에 유용하게 사용할 때가 있을 것입니다.

 

참고문헌(Maya 도움말)

Kundert-Gibbs외 공저, Mastering Maya 7(Sybex,2006), pp.517~521 참고

 

글_이성근 (테크니컬 라이터)

 

ⓒ 디지털브러시 & cgland.com, 무단 전재 및 재배포 금지

 
스튜디오 연결끊기