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

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

원문 링크

각 플랫폼 마다 다른 단위와 좌표 시스템을 다루는 것은 게임 개발 과정에서 가장 까다로운 부분 중 하나입니다. 저는(원문 저자) 오토데스크의 3ds 맥스를 기반으로 리소스를 제작하고 있으며 이를 유니티 3D 또는 언리얼 엔진을 활용해 게임 개발에 사용하고 있습니다. 계속해서 한 플랫폼에서 다른 플랫폼으로 작업을 전환하다보면해당 플랫폼에서 어떤 좌표 시스템을 사용하는지 잘 모르기 때문에 외적(Cross Product) 계산이나 UV 기반의 쉐이더 루틴에서 문제가 발생하기 쉽습니다. 매우 간단한 상황에서는 시행 착오 접근법(먼저 시도해보고 오류가 발생하면 고치는 방법)을 사용하면 작업이 빠르고 매우 효율적일 수 있습니다. 하지만 이는 처리해야하는 변수가 증가함에 따라 작업량이 폭발적으로 증가하게 됩니다. 이를 위해 개인적으로 기억하려는 목적으로 3ds 맥스, 유니티 3D, 언리얼 엔진의 서로 다른 규칙에 대한 글을 작성하기로 결정했습니다. 첫번째 글에서는 UV에 대해 다를 예정입니다. 다음은 전체 글 목록 입니다.

오토데스크 3ds 맥스에서의 UV

아래 그림은 3ds 맥스의 UV 편집기입니다. 여기에서는 10×10 타일이 적용된 그리드 텍스쳐를 사용하고 있습니다. 이 텍스쳐를 사용해서 UV 매핑된 쿼드(4각형 모양의 모델링)를 익스포트해서 유니티와 언리얼 간의 UV 좌표를 비교해보려고 합니다. 그림에서 볼 수 있듯이 3ds 맥스 UV 좌표의 원점 위치는 왼쪽 아래(bottom left)입니다.


타일 텍스쳐에서의 3ds 맥스 UV

유니티 3D에서의 UV

3ds 맥스에서 제작된 쿼드를 유니티 3D에 임포트 한 다음 위의 텍스쳐를 사용하는 머티리얼을 적용했습니다. 0.2 크기(2개의 타일)의 타일과 (0, 0.3)을 시작위치로 해서 UV를 다시 매핑하기 위해 tiling 및 offset 값을 설정했습니다. 아래 그림에서 볼 수 있듯이 텍스쳐의 매핑된 부분은 3ds 맥스 UV 좌표 시스템에서 사용하는 방식과 같은 것을 확인할 수 있습니다. 두 시스템(3ds 맥스, 유니티 3D)은 모두 왼쪽 아래 위치를 원점으로 사용합니다.


유니티 테스트 씬

언리얼 엔진에서의 UV

언리얼 엔진에서 0.2 tiling(2개의 타일)과 offset(0.1, 0.6)을 사용해서 매핑한 결과가 아래 그림입니다. 그림에서 볼 수 있듯이 텍스쳐의 매핑된 부분은 좌표 시스템의 원점으로 왼쪽 상단을 사용한다는 점을 알 수 있습니다. 이는 맥스에서 언리얼로 임포트할 때 수직으로 뒤집힌다는 의미가 아닙니다. 언리얼 엔진은 임포트 과정에서 좌표를 변경합니다. 따라서 이런 UV 좌표 시스템의 차이점은 UV 좌표와 관련된 코드를 작성할 때만 주의하면 됩니다.


언리얼 엔진 테스트 씬

정리

다음은 각 플랫폼의 UV 좌표 시스템을 정리한 내용입니다.

  • 오토데스크 3ds 맥스: 왼쪽 아래
  • 유니티 3D: 왼쪽 아래
  • 언리얼 엔진: 왼쪽 상단


3ds 맥스 및 유니티 3D에서의 UV


언리얼엔진에서의 UV

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

RonnieJ

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

답글 남기기

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

Please turn AdBlock off

Notice for AdBlock users

Please turn AdBlock off