3ds 맥스, 유니티, 언리얼 엔진의 월드 좌표 시스템

3ds 맥스,유니티,언리얼 엔진의 월드 좌표 시스템

원문 링크

이 글은 오토데스크 3ds 맥스, 유니티 3D, 언리얼 엔진 간의 좌표 시스템 비교 시리즈의 두번째 글입니다. 이번 글에서는 월드 좌표 시스템에 대해 살펴보려고 합니다. 시리즈 전체 목록은 다음과 같습니다.

3ds 맥스 월드 좌표 시스템

3ds 맥스는 오른손, z-up 좌표 시스템을 사용합니다. 아래 그림에서 표준 티포트와 텍스쳐 쿼드(피봇은 월드 좌표로 표시됨)를 사용한 씬을 볼 수 있습니다. 프론트 뷰(정면 뷰)에서 Y 방향은 화면 안쪽을 가리킵니다.


3ds 맥스 테스트 씬


3ds 맥스 테스트 씬, 프론트 뷰, Y는 화면 안쪽을 가리킴

언리얼 엔진 월드 좌표 시스템

언리얼 엔진은 왼손, z-up 월드 좌표 시스템을 사용합니다. 아래 그림에서 볼 수 있듯이 맥스와 언리얼의 유일한 차이점은 Y 벡터가 서로 반대 방향을 가리킨다는 점입니다. 텍스쳐 쿼드를 보면 이 좌표에 따라서 뒤집힌 부분이 없는 것을 볼 수 있습니다. Y 방향이 뒤집혔지만 단면 쿼드이기 때문에 이를 볼 수 없고, 엔진에서 이 쿼드의 뒷면을 보면 그려지지 않는 것을 볼 수 있을 것입니다(backface cull에 의해 보이지 않습니다). 엔진은 이렇게 다른 좌표 시스템을 임포트 과정에서 처리합니다. 3ds 맥스의 정면 뷰(프론트 뷰)의 모습은 Y축의 방향이 반대라는 점을 제외하면 언리얼 엔진의 정면 뷰의 모습과 동일한 것을 볼 수 있습니다.


3ds 맥스와 언리얼 엔진

여기에서 언리얼 엔진은 월드 좌표 시스템에 대해 3ds 맥스에 친화적이라는 것을 볼 수 있습니다. 분석해 볼 만한 또 다른 사항으로는 언리얼에서 사용된 축 규칙입니다(아래 그림 참조).

  • 앞 방향: X 축
  • 오른쪽 방향: Y 축
  • 위 방향: Z 축

따라서 앞으로 이동하는 물체(비행기 또는 자동차처럼)를 디자인하는 경우 언리얼 좌표 시스템과 일치하도록 3ds 맥스 X축의 양의 방향을 가리키도록 물체를 디자인해야 합니다.


언리얼 엔진의 앞, 오른쪽, 위 벡터

유니티 3D 월드 좌표 시스템

유니티 3D는 왼손, Y-up 월드 좌표 시스템을 사용합니다. 아래 이미지에서 볼 수 있듯이 3ds 맥스에서 유니티로 메쉬를 임포트하면 전혀 다른 방향이 설정됩니다. X 축 방향이 서로 반대이기 때문에 X 축으로 90도 회전된 결과를 볼 수 있습니다.


3ds 맥스와 유니티3D

다음은 유니티 3D의 좌표축 규칙입니다.

  • 앞 방향: Z 축
  • 오른쪽 방향: X 축
  • 위 방향: Y 축


유니티 3D의 앞, 오른쪽, 위 방향

3ds 맥스에서 유니티 3D로 임포트할 때 방향 문제 해결하기

맥스에서 가져온 티포트 메쉬를 유니티 씬에 배치하면 유니티는 자동으로 좌표를 보정하기 위해 배치된 게임 오브젝트에 대해 90도 X축 회전을 설정합니다. 처음에는 3ds 맥스 FBX 익스포트 창에서 y-up 옵션을 체크한 결과라고 생각했습니다. 하지만 동일한 메쉬에 z-up 옵션을 설정했음에도 같은 결과가 나타났습니다.

X축에 대한 90도 회전은 오브젝트의 방향이 올바르게 보이도록 할 수 있지만 실제로는 전혀 쓸모가 없습니다. X축으로 90도 회전을 적용한 다음 스크립트를 통해 위치와 회전을 제어하려는 경우에 90도 회전이 적용된 벡터의 방향을 처리하는데 많은 어려움을 겪을 수 있습니다. 이 경우 앞 방향 벡터는 실제로는 위를 가리키는 로컬 Z가 되고, 실제 앞 방향 벡터는 -X가 됩니다. 이런 방향의 불일치를 모두 해결하기 위해 게임 오브젝트의 계층 관계를 설정해 이를 해결할 수는 있지만 이보다 더 나은 해결방법이 있습니다.

3ds 맥스 메쉬를 유니티 3D로 내보내기를 할 때 쉬운 방법은 메쉬 피봇을 회전시키는 것입니다. Z축을 앞으로, Y 축을 위로, X축을 왼쪽으로 해서 피봇을 회전시켜야 합니다. 아래 그림을 참고하면 이해하는데 도움이 됩니다.


3ds 맥스에서 피봇 방향 재설정 및 유니티 3D로 익스포트

위 그림에서 볼 수 있듯이 맥스에서 피봇을 회전시키면 유니티에서 임포트한 메쉬의 방향이 올바르게 설정됩니다. X축은 뒤집힙니다. 맥스에서는 X축이 왼쪽을 가리키고 유니티에서는 오른쪽을 가리키지만 티포트 오른쪽에 붙은 박스는 여전히 두 경우 모두 오른쪽에 위치한 것을 볼 수 있습니다. 텍스쳐 매핑 정렬 역시 동일하게 유지되는 것도 확인할 수 있습니다.

내용 끝까지 읽어주셔서 감사합니다.
배너 클릭은 저에게 많은 힘이 됩니다.
감사합니다 🙂

RonnieJ

프리랜서 IT강사로 활동하고 있습니다. 게임 개발, C++/C#, 1인 기업에 관심이 많습니다.

2 Responses

  1. 정동근 댓글:

    페북이나 트위터 주소를 알고 싶습니다!
    유니티 최적화에 대해서 간단한 컨설팅이 가능하신가요?

    • RonnieJ 댓글:

      안녕하세요~

      페이스북은 최근에 계정을 닫았습니다.
      트위터는 @SeYunJang 인데 최근에는 거의 신경쓰지 못하고 있네요.

      문의주신 컨설팅은 프로젝트 마다 다를 수 있어 구체적인 부분은 힘들 수 있지만,
      대략적인 가이드는 드릴 수 있을 것 같습니다.

      블로그 방문 감사드립니다. 가끔 놀러오셔서 배너도 눌러주세요~
      감사합니다.

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

Please turn AdBlock off

Notice for AdBlock users

Please turn AdBlock off