- 서론
05/28/24 전반적인 내용수정하였습니다. (마야 호환성 부분에 대해서 내용을 조금 다듬었습니다.)
유니티 카테고리에 글을 올릴까 하다가, 마야 작업하시는 분들이 아무래도 더 해당되는 것 같아서 마야 카테고리로 집어넣었습니다 ㅎㅎ 다만 유니티를 주로 다루시는데 마야를 쓰게 되신 분들이 혹시나 있을까 하여 마야를 쓰시는 분, 유니티를 쓰시는 분 모두 고려해서 글을 작성하였습니다.
- 목차
결론적으로 말하면 되긴합니다. 마야에서 작업한것을 유니티로 끌어와 머티리얼과 텍스쳐를 추출하여 사용하면됩니다. 마야에 Send To Unity라는 기능도 있으나, 바로바로 호환되게 하는 기능은 아니고 내보내는 작업 자체의 간단화를 도와주는 기능입니다. 다만 주의할점이 있다면 마야에서 FBX파일을 넘기더라도 유니티에서 물론 파읽을 읽을 순 있겠지만, 마야에서 작업한 것과 완벽히 동일하게 호환되지 않습니다.
이는 유니티랑 마야는 기본적으로 다른 머터리얼 시스템과 메쉬시스템을 가지고 있기 때문입니다. 이에 같이 작업할땐 호환성을 항상 고려하고 작업해야합니다. 이러한 작업이 매끄럽지 못할 경우, 아티스트 입장에선 마야에서 만족스럽던 결과물을 유니티상에서는 만족스럽게 표현되지 않을 수 있습니다.퀄리티가 낮아진다는 의미보다, 예상치 못한 결과물이 나오는 경우도 허다합니다.아주 간단한 예를 들자면 마야에서 넙스로 작업해서 유니티로 넘기는 경우 유니티랑 하나도 호환이 안되서 오브젝트 렌더링 자체가 안되는 에러가 발생하는 경우가 있겠습니다.
근데 이렇게 메쉬,머터리얼 시스템이 다르다면 어떻게 다른걸까요? 이 부분을 너무 한쪽만 설명하자니 아마 유니티만 다루시는 분 입장에서도 혼동스러울 것이고, 마야만 다루시는 분에게도 혼동스러우실 겁니다. 따라서 양쪽 툴 모두 전반적으로 비교하면서 알아볼게요.
위 사진에 나와있는 글처럼 유니티는 기본적으로 삼각형 메쉬 시스템이고, 마야는 사각형 메쉬 시스템입니다. 근데 이건 좀 극단적으로 요약한 것 입니다. 그렇다고 깊게들어가면 양이 방대해서 끝이 없기때문에.. 다시 돌아와서 지금 이미지에서 보여드린 부분을 깊게 파시기 보다, 그냥 "메쉬 호환이 1:1로 안되는구나"라고 받아들이시는 게 제 포스팅의 요지와 가까울 것 같습니다. 따라서 최대한 유니티에 적합하도록 폴리곤작업을 어느 정도 해줘야 되는구나로 받아들이시면 될 것 같습니다.
개인적으로 처음에 유니티랑 마야를 억지로 호환시키려다가 가장 애를 많이 먹었던 부분입니다. 호환이 되는 듯 하면서 유니티에서 결과물이랑 마야의 결과물이 너무 차이났거든요. 결론적만 말씀드리자면, 마야와 유니티간에 어느 정도 서로 호환되는 기본 머터리얼도 물론 있습니다. 하지만 사실상 마야에서 작업을 해서 유니티에 넘기고 싶다면, 텍스쳐랑 머터리얼 작업을 유니티 환경에 맞게 최종적으로 다듬고 호환하는 작업이 꼭 들어가야합니다.
아마 유니티를 다루시는 개발자 분이라면 노말맵, 알비도, 베이스컬러 등등의 용어가 친숙하실 것이고, 마야로 주로 작업하신 분이라면 범프맵이나 파일별로 쪼개서 작업하는 저 그래프 창에 익숙하실 겁니다. 둘이 비슷하면서 많이 다른데요, 사실상 머터리얼 시스템이 많이 다르다고 해야겠죠.
마야 스크립팅이나 유니티에서 최대한 쉐이더를 조작하여 비슷하게 만드는 워크플로우를 간단하게 할 수 있다고 알 고있지만 이것도 프로젝트마다 퉁칠 수 없다고 합니다. 결론적으로 마야에서 작업한 모델링을 유니티에 가져오려면 유니티에서 머터리얼과 메쉬를 전반적으로 작업을 해주어야 합니다.
주의 아래 과정은 유니티에서 텍스쳐,머터리얼 추출기능이 없다고 가정하고 억지로 뜯어본 것 입니다. 실제작업할때 이렇게 해야된다 라기보다, 유니티랑 마야의 머터리얼,텍스쳐 시스템이 1대1매칭이 안된다는것을 더 이해하기 위한 목적으로 아래와 같은 내용을 수행한 것입니다.
그럼 과정은 대략 어떻게 될까요? 텍스쳐맵과, 노말맵을 적용시키는 과정을 먼저 알려드리려고 합니다. 이외에 메탈릭 맵이나 기타등등 많지만 사실상 아래 두가지 과정을 응용하는 수준입니다.
메쉬변환 문제와 텍스쳐, 범프맵을 유니티에 적용하는 사례를 보여드리겠습니다.
메쉬 부분은 저도 연구가 많이 필요한 부분이지만, 일단 마야에서 Smooth작업이나 Smooth 미리 보기 상태로 추출해서 유니티에서는 매끄럽지 않게 표현되는 이슈를 많이 보았습니다. 이런경우에는 Smooth 설정해서 디비전을 어느정도 올려주거나, 폴리곤 Smooth 미리보기상태로 작업해서 렌더링 상태에서는 적용 안된 채로 FBX가 추출된 것은 아닌지 점검해 보시면 될 것 같습니다.
개인적으로는 메쉬 부분이 유니티에서 살짝 정확하게 표현되지 않는다는 느낌을 받아서 이 부분에 대한 이슈를 정리해서 포스팅하면 어떨까 합니다.
- 텍스쳐 UV를 뽑아서 그대로 입히기
- 범프맵을 노말맵화 하기. (참고로 둘은 비슷하나, 노말맵이 좀 더 고도화된 표현을 할 수 있다는 차이가 있습니다.)
사실 UV mapping, Unwrapping이라는 표현이 정확합니다. 다만 유니티를 다루시는 분을 위해 조금 쉽게 풀어서 이렇게 표현하겠습니다. 쉽게 말해서 마야에서 3D 페인트툴을 이용해서 색칠을 한경우는 물론, 마야에서만 지원하는 머터리얼을 사용해서 칠한 경우에 그대로 유니티에 입히기가 조금 까다로울 수 있는데요. 이땐 마야에서 UV좌표, 즉 캐릭터에 입혀진 이미지를 좌표대로 2D 맵핑한 파일을 유니티의 베이스맵에 그대로 가져오는 과정을 거치는 게 올바른 시작이라고 할 수 있습니다.
*참고로 마야에서는. iff파일이 자주 이용되는데, 유니티에서는 호환되지 않으니, 마야에서 PSD, PNG, JPG 등으로 변환하는 작업이 필요합니다.
간단하게 말해 범프맵 보다 노말맵이 조금 더 고도화된 버전입니다. (범프맵은 Y좌표만 컨트롤 하지만, 노말은 X,Y,Z를 모두 컨트롤 합니다) 사실상 변환기를 통해서 사실상 동일하게 쓰는 경우도 많습니다. 물론 이 부분도 세부사항으로 들어가면 알아야 할게 많으니 일단은 마야에서 작업한 범프맵을 변환해서 유니티의 노말맵으로 쓰는구나!로 이해해 주시면 될 것 같습니다.
일단 변환에 앞서, 사용 배경을 말씀드리자면, 마야의 범프맵과 유니티 노말맵은 둘다 표면 질감을 표현하지만 즉각적으로 서로 상호 작용이 어렵습니다. 애초에 범프맵은 지원하지않는 유니티인데다가, 마야에서 3D Paint Tool로 질감을 표현할 때 범프맵을 사용하기 때문에 더욱더 즉각적인 작업은 안되고요. 따라서 아래예시에서 오른쪽 범프맵 이미지를, 변환기를 통해 왼쪽의 노말맵처럼 작업을 해주어야 합니다. 이때 유용한 툴이 바로 엔비디아 텍스쳐 툴입니다.
엔비디아 텍스쳐 툴 말고 서브스턴스 디자이너 등 다양한 프로그램이 있으나, 마야에서 파일을 따로 뽑아서 작업하기에 엔비디아 툴이 많이 무겁지도 않고, 변환 시 세부조정도 쉽게 가능해서 자주 쓰게 되는 것 같습니다. 포토샵을 사용하신다면 플러그인도 작용하고요. 마야 사용자입장에서는 꽤나 편리하다고 할 수 있을 것 같습니다.
이렇게 마야에서 유니티로 작업할 때 메쉬아 머터리얼에 대한 주의점을 알아보았는데요. 마야와 유니티에서 작업할때 주로 생기는 에러와 해결법이 있다면 자주 공유드리겠습니다.
도움이 되었기를 바랍니다.
비슷한 시도를 해보려고하는데 많은 도움되었습니다. 좋은 글 감사합니다.