Unity Transform 이해하기

2024. 12. 29. 04:43Unity 게임 프로그래밍/Unity 이해하기

728x90
반응형

1. Transform이란?

Transform은 유니티의 핵심 컴포넌트로서, 게임 내 모든 오브젝트는 Transform 컴포넌트를 필수적으로 가진다.

Transform은 오브젝트의 위치, 회전, 크기를 관리하며, 이를 기반으로 물리 엔진(Rigidbody, Collider)는 오브젝트의 상호작용을 계산하고, 렌더링(Rendering) 시스템은 오브젝트를 화면에 표현한다.

 

유니티에서 Transform은 다음과 같은 기능을 제공한다.

  • 위치(Position): 월드 좌표 또는 로컬 좌표에서의 오브젝트 위치를 정의
  • 회전(Rotation): 오브젝트의 방향을 정의하며, 쿼터니언 또는 오일러 각도로 표현
  • 스케일(Scale): 오브젝트의 크기를 정의하며, 로컬 좌표계에서 상대적으로 설정
  • 계층 구조(Hierarchy): 부모-자식 관계를 통해 오브젝트 간의 상대적 변환을 정의

2. Transform 컴포넌트의 인스펙터 창에서 보여지는 항목들

Position

  • Position 항목은 게임 오브젝트의 월드 좌표에서의 위치를 설정한다. X, Y, Z 값으로 구성되어 있으며, 게임 씬 내에서 해당 객체가 어느 위치에 배치되는지 정의한다.
    • X: 객체의 좌우 이동
    • Y: 객체의 위아래 이동
    • Z: 객체의 앞뒤 이동

Rotation

  • Rotation 항목은 게임 오브젝트의 회전을 설정한다. 인스펙터에서는 회전을 Euler Angles(오일러 각) 형식으로 나타내며, X, Y, Z 축에 대해 회전 값을 지정할 수 있다.
    • X, Y, Z: 각각의 축을 기준으로 회전 각도를 입력한다.

Scale

  • Scale 항목은 게임 오브젝트의 크기를 조정하는 부분이다. X, Y, Z 값에 따라 객체의 크기를 조정할 수 있다.
    • X: 너비 크기
    • Y: 높이 크기
    • Z: 깊이 크기

2. Transform 관련 행렬 계산

Transform에서 사용되는 주요 변환(Translation, Rotation, Scaling)은 4 x 4의 행렬(3D 기준)로 나타내며, 벡터와 행렬 곱의 계산으로 오브젝트의 이동, 회전, 크기 변화를 표현한다.

(1) 위치 이동 (Translation)

 

  • : 원래의 위치를 나타내는 벡터
  • T: Translation Matrix
  • P′: 이동 후의 새로운 위치를 나타내는 벡터

 


(2) 회전 (Rotation)

회전은 축과 각도를 기준으로 정의되며, 3D에서는 아래 행렬로 표현된다.

  • X축 회전:

  • Y축 회전:

  • Z축 회전:

복합 회전은 X축 회전, Y축 회전, Z축 회전의 곱으로 계산한다.


(3) 스케일링 (Scaling)

스케일링은 오브젝트 원래 크기에 x, y, z축 배율을 곱하는 방식으로, 아래와 같은 행렬식으로 표현할 수 있다.

 

스케일링으로 인해 변환되는 오브젝트 좌표는 다음과 같은 행렬식으로 계산된다.


3. 결합된 변환 (Composite Transformation)

위치 이동, 회전, 스케일링은 복합적으로 계산되며, 이들을 결합하여 하나의 변환 행렬로 표현할 수 있다.

 

변환 행렬식으로 계산된 오브젝트의 새로운 좌표는 아래와 같다.

 

※ 행렬 곱셈 순서: 항상 스케일링→회전→위치 이동 순으로 계산하여야 한다.

 

(1) 스케일링(Scaling)

  • 오브젝트의 로컬 좌표계(Local Space)를 기준으로 수행
  • 회전에 의해 로컬 좌표계의 축이 기울어진 상태에서 스케일링을 적용하면 축 비율이 왜곡되며, 예상치 못한 변형이 발생할 수 있음
  • 위치 이동을 먼저 수행한 상태에서 스케일링을 적용하면, 오브젝트의 기준점이 변경된 상태로 크기 조정이 이루어지므로, 이동한 위치도 스케일링 영향을 받아 확대 혹은 축소하는 결과를 초래할 수 있음

(2) 회전(Rotation):

  • 회전은 오브젝트를 로컬 죄표계의 원점 기준으로 회전하며, 스케일링 이후 수행
  • 위치 이동을 수행한 후 회전을 하게 되면 월드 좌표계의 변환으로 인한 회전의 기준점 변경으로 회전의 결과가 의도와는 달리 변경될 수 있음

(3) 위치 이동(Translation):

  • 위치 이동은 월드 좌표계(World Space)를 기준으로 하며, 스케일링과 회전 이후 수행
  • 위치 이동은 스케일링과 회전으로 인한 결과를 월드 공간의 정확한 위치에 배치하는 마지막 단계

 

 

5. Transform의 처리 흐름

  1. 초기 벡터 정의: 물체의 위치와 방향을 벡터로 정의.
  2. 변환 행렬 구성: 필요한 변환(위치 이동, 회전, 스케일링)을 행렬로 정의.
  3. 행렬 곱 수행: 변환 행렬과 벡터를 곱하여 새로운 위치/방향 계산.
  4. 결과 벡터 적용: 결과를 실제 물체에 반영.
728x90
반응형

'Unity 게임 프로그래밍 > Unity 이해하기' 카테고리의 다른 글

Unity Transform 회전  (0) 2025.03.03
Unity Transform 이동  (1) 2025.01.10