유니티 글로벌 좌표계 로컬 좌표계 기초(+왼손 좌표계) - CCGrape
글로벌 좌표계와 로컬 좌표계의 기본 개념과 차이점을 알아봅니다. 유니티에서 활용되는 왼손 좌표계도 알아봅니다.
목차
Step 0. 글로벌 좌표계와 로컬 좌표계를 왜 알아야 할까?
Step 1. 좌표계 기초
Step 2. 씬 뷰(Scene View)에서 글로벌/로컬 좌표계 확인하기
Step 3. 인스펙터 뷰(Inspector View)에서의 좌표계
Step 4. 유니티의 왼손 좌표계(Left-Handed Coordinate System)
Step 0. 글로벌 좌표계와 로컬 좌표계를 왜 알아야 할까?
글로벌 좌표계와 로컬 좌표계의 개념을 이해하는 것은 매우 중요합니다.
이 두 가지 좌표계는 객체의 위치, 회전 및 크기를 관리하는 기본적인 방법으로, 올바르게 이해하고 사용할 경우 효율적인 게임 개발이 가능합니다.
이 포스팅에서는 글로벌 좌표계와 로컬 좌표계의 기초를 설명하고, 유니티 에디터에서 이 좌표계를 어떻게 확인할 수 있는지 알아보겠습니다.
Step 1. 좌표계 기초
① 글로벌 좌표계(Global Coordinate System)
글로벌 좌표계는 유니티 씬(Scene) 전체를 기준으로 하는 좌표계입니다. 여기서 모든 객체의 위치와 회전은 씬(Scene)의 원점을 기준으로 측정됩니다.
예를 들어, 글로벌 좌표에서 (0, 0, 0)
위치는 씬(Scene)의 원점
을 의미하며, 다른 모든 객체의 위치는 이 원점을 기준으로 측정됩니다.
② 로컬 좌표계(Local Coordinate System)
로컬 좌표계는 개별 객체를 기준으로 하는 좌표계입니다. 여기서 모든 객체의 위치와 회전은 그 객체의 부모 객체 또는 자신을 기준으로 측정됩니다.
따라서 부모 객체의 위치나 회전에 따라 자식 객체의 로컬 좌표도 달라집니다.
예를 들어, 만약 한 객체가 부모 객체를 가지고 있고 그 부모 객체가 회전하면 자식 객체는 글로벌 좌표계에서는 위치가 변하지만 로컬 좌표계에서는 여전히 같은 위치에 있습니다.
이는 로컬 좌표계가 부모 객체를 기준으로 하기 때문입니다.
Step 2. 씬 뷰(Scene View)에서 글로벌/로컬 좌표계 확인하기
유니티의 씬(Scene) 뷰에서는 객체의 이동, 회전, 스케일링 도구를 사용할 때 글로벌 좌표계와 로컬 좌표계 간에 전환할 수 있습니다.
이동 도구 사용 시
이동 도구(단축키W
)를 선택한 후 씬(Scene) 뷰 상단에 있는 글로벌/로컬 토글 버튼을 확인해보세요. 이 버튼을 클릭하여 글로벌 좌표계와 로컬 좌표계 간에 전환할 수 있습니다.다음 예시는 ‘Player’ 객체가 부모인 ‘mini chibi kid animations’ 객체가
Y 축으로 45도 회전
한 상태입니다.회전 도구 사용 시
회전 도구(단축키E
)를 선택했을 때도 동일하게 글로벌/로컬 좌표계를 전환할 수 있습니다. 글로벌 모드에서는 객체의 회전 축이 씬(Scene)의 축과 일치하며, 로컬 모드에서는 객체 자체의 축을 기준으로 회전하게 됩니다.
Step 3. 인스펙터 뷰(Inspector View)에서의 좌표계
유니티에서 게임 오브젝트의 Transform 컴포넌트는 인스펙터 뷰에서 확인할 수 있습니다. 이곳에서 위치(Position), 회전(Rotation), 스케일(Scale)을 설정할 수 있는데, 중요한 점은 인스펙터 뷰에 표시되는 모든 값은 로컬 좌표계
를 기준으로 한다는 것입니다.
- Position: 부모 객체를 기준으로 해당 객체가 얼마나 떨어져 있는지 나타냅니다.
- Rotation: 부모 객체를 기준으로 회전이 어떻게 이루어졌는지 나타냅니다.
- Scale: 부모 객체를 기준으로 크기 비율을 나타냅니다.
이것은 특히 계층 구조가 복잡한 씬(Scene)에서 중요합니다. 부모 객체가 움직이거나 회전하면 자식 객체의 글로벌 위치와 회전은 변할 수 있지만, 인스펙터 뷰에 표시되는 로컬 값은 부모 객체에 상대적인 값이므로 변하지 않게 됩니다.
인스펙터 뷰의 Transform 컴포넌트 값만 보고 작업할 경우 객체가 엉뚱하게 제어될 수 있으니 주의하세요!
Step 4. 유니티의 왼손 좌표계(Left-Handed Coordinate System)
좌표계를 이해할 때 중요한 점은 X, Y, Z 축이 어떻게 배치되고, 이 축을 기준으로 어떻게 회전이 정의되는지입니다.
유니티는 Y가 UP인 왼손 좌표계
를 사용합니다.
일반적으로 로보틱스에서는 Z UP을 사용하고 그래픽스에서는 Y UP을 사용합니다.
왼손 좌표계를 쉽게 이해하는 방법은 다음과 같습니다:
- 왼손을 펼친다: 엄지 손가락을 X축, 검지 손가락을 Y축, 중지를 Z축으로 생각해 봅니다.
- 엄지 손가락(X축)은 오른쪽을 가리킵니다.
- 검지 손가락(Y축)은 위를 가리킵니다.
- 중지 손가락(Z축)은 화면을 가리킵니다.
Tip : RGB 색깔 순서대로 XYZ 축 입니다.
이 좌표계는 일반적으로 3D 그래픽에서 사용되는 오른손 좌표계와 반대됩니다. 오른손 좌표계에서는 Z축이 화면에서 밖으로 나가는 방향을 가리키지만, 유니티의 왼손 좌표계에서는 Z축이 화면 안쪽으로 뚫고 들어가는 방향을 가리킵니다.
이 차이 때문에 모델링 소프트웨어(일반적으로 오른손 좌표계를 사용하는 프로그램)에서 가져온 모델의 방향이 다르게 보일 수 있습니다. 이를 인지하고, 필요한 경우 모델을 수동으로 조정해야 합니다.
이만 포스팅을 마치겠습니다. 궁금한 점은 댓글로 남겨주세요.
감사합니다.