Artoke

MEL에서 파이썬으로 — 마야 스크립팅의 두 언어

MEL에서 파이썬으로 — 마야 스크립팅의 두 언어

3D 프로그램 마야(Maya)를 켜면 버튼이 수백 개다. 클릭, 클릭, 또 클릭. 그런데 똑같은 작업을 100번 반복해야 한다면? 손이 아프다. 그래서 마야에는 말로 시키는 방법이 있다. 그게 스크립팅이다.

마야에는 이 "말"이 두 가지다. 하나는 MEL, 다른 하나는 파이썬(Python)이다.

MEL은 마야 전용 언어다

MEL은 Maya Embedded Language의 줄임말이다. 우리말로 하면 "마야에 심어진 언어"다.

비유하자면 학교에서만 쓰는 말이다. 우리 학교 급식실에서 "짜장 두 개요"라고 하면 다 알아듣는다. 하지만 학교 밖 식당에서 그렇게 말하면 이상하다. MEL도 똑같다. 마야 안에서는 아주 잘 통한다. 마야 밖으로 나가면 아무도 못 알아듣는다.

MEL의 놀라운 점은, 마야 자체가 MEL로 만들어져 있다는 것이다. 버튼을 누르면 사실 마야가 속으로 MEL 문장을 읽는다. 마야 화면 아래쪽 스크립트 에디터를 열어두고 아무 버튼이나 눌러 보자. 방금 내가 한 일이 MEL 문장으로 주르륵 찍힌다.

이건 굉장한 학습 도구다. 마야가 나 대신 답을 적어 주는 셈이니까.

파이썬은 세상 어디서나 쓰는 언어다

파이썬은 반대다. 표준어다.

파이썬은 마야만의 언어가 아니다. 웹사이트도 만들고, 인공지능도 만들고, 엑셀 파일도 정리한다. 마야, 후디니, 블렌더, 니트로 — 3D 프로그램 대부분이 파이썬을 알아듣는다.

2008년쯤부터 마야도 파이썬을 받아들였다. 그래서 지금 마야에는 두 언어가 함께 산다.

MEL에서 파이썬으로 — 마야 스크립팅의 두 언어 도식

리깅하는 사람에게 이게 왜 중요한가

리깅은 캐릭터에 뼈와 조종 손잡이를 넣는 일이다. 인형에 관절을 달아 움직이게 만드는 것과 같다.

문제는 이 일이 지독하게 반복된다는 것이다. 손가락 뼈 하나에 손잡이 하나, 이름 붙이기, 색 정하기, 축 맞추기. 손가락이 열 개면 이걸 열 번. 캐릭터가 스무 명이면 스무 번.

그래서 리거는 거의 다 스크립트를 쓴다. 그리고 그 스크립트는 대부분 MEL로 쓰여 있다. 마야가 30년 가까이 된 프로그램이기 때문이다.

버리지 않고 넘어가는 법

여기서 많은 사람이 오해한다. "파이썬으로 갈아타려면 MEL 스크립트를 다 다시 써야겠네."

아니다. 다시 안 써도 된다.

파이썬 안에서 MEL을 그냥 불러 쓸 수 있다. 마치 한국어 문장 중간에 영어 단어를 섞어 쓰듯이.

import maya.mel as mel

mel.eval("내_오래된_MEL_스크립트;")

이 두 줄이면 끝이다. 10년 전에 만든 MEL 도구도 파이썬 안에서 그대로 돌아간다. 통째로 데려올 수 있다.

실무에서는 이렇게 한다.

  1. 새로 만드는 것은 파이썬으로 쓴다.
  2. 이미 잘 도는 MEL은 그냥 둔다. 파이썬에서 불러 쓴다.
  3. 자주 고치는 MEL만 조금씩 파이썬으로 옮긴다.

집을 새로 짓는 게 아니라, 방 하나씩 고치는 것이다. 이사 갈 필요가 없다.

MEL에서 파이썬으로 — 마야 스크립팅의 두 언어 도식

파이썬으로 옮길 때 좋은 점

도구를 빌려 쓸 수 있다. 파일 정리, 엑셀 읽기, 사내 서버에 리깅 결과 올리기 — 남이 만들어 둔 파이썬 부품이 이미 널려 있다. MEL로는 마야 밖 일을 시키기가 무척 번거롭다.

물어볼 사람이 많다. 막혔을 때 검색하면 파이썬 답은 수만 개가 나온다. MEL은 몇 개 안 나오고, 그마저 10년 전 글이다.

덩어리로 묶기 좋다. "다리 리그"라는 것을 하나의 묶음으로 만들어 두고, 왼다리·오른다리·강아지 다리에 재활용하기가 쉽다. MEL로도 되지만 훨씬 지저분해진다.

다른 프로그램으로 옮겨간다. 회사가 블렌더나 후디니를 쓰기 시작해도, 파이썬 실력은 그대로 따라간다.

파이썬으로 옮길 때 힘든 점

줄이 길어진다. MEL로 한 줄이면 될 일이 파이썬에서는 두세 줄이 되곤 한다. 특히 마야 명령을 부를 때 괄호와 따옴표가 계속 붙는다. 손이 처음엔 답답하다.

띄어쓰기가 문법이다. 파이썬은 들여쓰기가 틀리면 아예 안 돈다. MEL은 중괄호로 묶으니 들여쓰기가 좀 어긋나도 돌아간다. 남의 코드를 복사해 붙이면 여기서 자주 터진다.

마야가 찍어 주는 건 MEL이다. 스크립트 에디터가 자동으로 기록해 주는 문장은 기본이 MEL이다. 파이썬으로 쓰려면 그걸 머릿속에서 번역해야 한다. 초보에게는 이 번역 단계가 은근히 벽이다.

회사 코드가 섞여 있다. 실무 파일을 열면 파이썬과 MEL이 뒤엉켜 있는 경우가 많다. 어디서 어디까지가 어느 언어인지 헷갈린다. 에러 메시지도 두 종류로 나온다.

마야 버전마다 파이썬이 다르다. 옛날 마야는 파이썬 2, 요즘 마야는 파이썬 3을 쓴다. 둘은 문법이 미묘하게 다르다. 예전 스크립트를 새 마야에서 열면 갑자기 안 도는 일이 생긴다. MEL에는 이런 골치가 거의 없다.

그래서 결론은

MEL은 읽을 줄만 알아도 충분하다. 마야가 찍어 주는 문장을 알아보고, 옛 스크립트가 뭘 하는지 짐작할 정도면 된다.

새로 쓰는 건 파이썬으로. 그리고 이미 잘 도는 MEL은 건드리지 말고 감싸서 쓰면 된다.

둘 중 하나를 고르는 싸움이 아니다. 오래된 도구를 버리지 않으면서 새 도구를 얹는 일이다. 리깅 실무는 원래 그렇게 굴러간다.

출처

광고

리깅 파이프라인 자동화 도구

반복 작업은 스크립트에게. 현업에서 쓰는 리깅 툴 모음.

리깅 도구 보기