본문 바로가기
Computer Science/게임 수학

게임 수학 | 3부 3차원 콘텐츠 제작 | 10장 3차원 공간

by continue96 2023. 2. 27.

10장 3차원 공간: 입체 공간의 생성

 

10장 3차원 공간: 입체 공간의 생성

10.1 3차원 공간의 설계

  • 3차원 공간 좌표계는 두 가지로 구분한다.
    • 오른손 좌표계(right-handed coordinate system)
    • 왼손 좌표계(left-handed coordinate system)

그림 10-1 3차원 공간의 오른손 좌표계와 왼손 좌표계

 

  • 3차원 공간 좌표계를 설명할 때 좌표계와 위아래 방향을 담당하는 축의 정보를 알려준다.
    • 유니티(unity)는 y업 왼손 좌표계를 사용한다.
    • 언리얼(unreal)은 z업 왼손 좌표계를 사용한다.

 

10.2 3차원 공간의 트랜스폼

10.2.1 오일러 각

  • 오일러 각(euler's angle)은 3차원 공간에서 물체가 놓인 방향을 세 개의 각을 사용해 표시하는 방법이다.
    • 오일러 각은 표준기저벡터를 중심으로 회전하는 각의 크기를 3차원 벡터로 표현한다.
    • (θx, θy, θz)

 

  • 표준기저벡터를 축으로 하는 회전의 움직임은 방향에 따라 요(yaw), 롤(roll), 피치(pitch)로 나누어진다.

그림 10-2 요, 롤, 피치의 회전

 

회전 방향 언리얼 축 유니티 축
z y
x z
피치 오른쪽 y x

 

 10.2.2 회전 행렬

  • 오일러 각은 표준기저벡터를 중심으로 세 번의 연속적인 회전을 통해 회전 변환 행렬(R)을 만든다.
  • 오일러 각의 회전 순서에 따라 세 가지 회전 행렬을 곱해 회전 변환 행렬(R)을 생성한다 
    • x축 회전 행렬 Rx, y축 회전 행렬 Ry, z축 회전 행렬 Rz를 z → x → y 순으로 곱한다.
    • 회전 변환 행렬 R = Ryaw · Rpitch · Rroll

그림 10-3 회전 행렬 Rx, Ry, Rz

 

  • 회전 변환 행렬 R의 열 벡터는 표준기저벡터가 회전 변환된 로컬 축을 의미한다.
    • xlocal = (cosα cosγ + sinα sinβ sinγ, cosβ sinγ, -sinα cosγ + cosα sinβ sinγ)
    • ylocal = (-cosα sinγ + sinα sinβ cosγ, cosβ cosγ, sinα sinγ + cosα sinβ cosγ)
    • zlocal = (sinα cosβ, -sinβ, cosα cosβ)

그림 10-4 3차원 회전 행렬

 

 10.2.3 3차원 모델링 행렬

  • 모델링 행렬(modeling matrix)은 크기, 회전, 이동에 대한 세 가지 아핀 변환 행렬의 곱으로 나타낸다.
    • 2차원 평면과 마찬가지로 트랜스폼 변환은 크기 → 회전 → 위치 순서로 이루어진다.

그림 10-4 3차원 모델링 행렬

 

10.3 공간 카메라

 10.3.1 3차원 공간의 카메라

  • 3차원 공간에서의 뷰 행렬(V)은 카메라 트랜스폼에서 이동 행렬 T의 역행렬회전 행렬 R의 역행렬로 계산한다.
    • 카메라 트랜스폼 t = (tx, ty, tz)이고 로컬 축은 각각 x = (xx, xy, xz), y = (yx, yy, yz), z = (zx, zy, zz)이다.
    • 이동 행렬 T의 역행렬은 덧셈의 역원인 반대수를 사용해 구한다.
    • 회전 행렬 R의 역행렬은 전치 행렬로 구한다.
    • V = R^(-1) · T^(-1)
    • 좌표계에 따라 y축으로 180도 회전할 경우, 뷰 행렬에 x축 기저와 z축 기저의 부호를 반전시킨다.

그림 10-5 3차원 뷰 행렬

 

10.4 오일러 각

  • 오일러 각의 장점(advantage)
    • 표준기저벡터를 회전축으로 사용하기 때문에 3차원 공간의 회전을 이해하기 쉽다.
    • 적은 용량(세 데이터)으로 3차원 공간의 회전을 표현할 수 있다.
  • 오일러 각의 단점(disadvantage)
    • 짐벌락(gimbal lock) 현상이 발생할 수 있다.

 

 10.4.1 짐벌락

  • 짐벌락(gimbal lock)은 오일러 각으로 3차원 공간을 회전할 때 특정한 상황에서 회전이 제한되는 현상을 말한다.
    • 오일러 각 방식은 3차원 공간의 회전을 세 번으로 나누어 진행하기 때문에 짐벌락 현상이 발생할 수 있다.
    • 로드리게스 회전 공식(11장)이나 사원수(16장)으로 짐벌락 현상을 방지한다.

그림 10-6 x축과 z축이 겹친 짐벌락 현상

 

 10.4.2 회전 보간

  • 회전 보간(rotational interpolation)은 경과된 시간에 따라 회전이 부드럽게 변화하도록 중간 회전 값을 계산하는 것을 말한다.
    • 중간 회전 값은 선형 보간식으로 구한다.
    • θ' = (1 - t) · θstart + t · θend

 

  • 3차원 공간에서 한 축만 사용하는 회전 보간
    • 한 축만 사용하는 회전 변환은 선형 보간 조건이 성립하므로 회전 보간할 수 있다.
    • 2차원 평면의 회전 보간과 같다.
  • 3차원 공간에서 두 축 이상을 사용하는 회전 보간 
    • 두 축 이상을 사용하는 회전 변환은 선형 보간 조건이 성립하지 않으므로 회전 보간할 수 없다.
    • 로드리게스 회전 공식이나 사원수로 회전 보간해야 한다.

댓글