10장 3차원 공간: 입체 공간의 생성
10.1 3차원 공간의 설계
- 3차원 공간 좌표계는 두 가지로 구분한다.
- 오른손 좌표계(right-handed coordinate system)
- 왼손 좌표계(left-handed coordinate system)
- 3차원 공간 좌표계를 설명할 때 좌표계와 위아래 방향을 담당하는 축의 정보를 알려준다.
- 유니티(unity)는 y업 왼손 좌표계를 사용한다.
- 언리얼(unreal)은 z업 왼손 좌표계를 사용한다.
10.2 3차원 공간의 트랜스폼
■ 10.2.1 오일러 각
- 오일러 각(euler's angle)은 3차원 공간에서 물체가 놓인 방향을 세 개의 각을 사용해 표시하는 방법이다.
- 오일러 각은 표준기저벡터를 중심으로 회전하는 각의 크기를 3차원 벡터로 표현한다.
- (θx, θy, θz)
- 표준기저벡터를 축으로 하는 회전의 움직임은 방향에 따라 요(yaw), 롤(roll), 피치(pitch)로 나누어진다.
회전 | 방향 | 언리얼 축 | 유니티 축 |
요 | 위 | z | y |
롤 | 앞 | x | z |
피치 | 오른쪽 | y | x |
■ 10.2.2 회전 행렬
- 오일러 각은 표준기저벡터를 중심으로 세 번의 연속적인 회전을 통해 회전 변환 행렬(R)을 만든다.
- 오일러 각의 회전 순서에 따라 세 가지 회전 행렬을 곱해 회전 변환 행렬(R)을 생성한다
- x축 회전 행렬 Rx, y축 회전 행렬 Ry, z축 회전 행렬 Rz를 z → x → y 순으로 곱한다.
- 회전 변환 행렬 R = Ryaw · Rpitch · Rroll
- 회전 변환 행렬 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.2.3 3차원 모델링 행렬
- 모델링 행렬(modeling matrix)은 크기, 회전, 이동에 대한 세 가지 아핀 변환 행렬의 곱으로 나타낸다.
- 2차원 평면과 마찬가지로 트랜스폼 변환은 크기 → 회전 → 위치 순서로 이루어진다.
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.4 오일러 각
- 오일러 각의 장점(advantage)
- 표준기저벡터를 회전축으로 사용하기 때문에 3차원 공간의 회전을 이해하기 쉽다.
- 적은 용량(세 데이터)으로 3차원 공간의 회전을 표현할 수 있다.
- 오일러 각의 단점(disadvantage)
- 짐벌락(gimbal lock) 현상이 발생할 수 있다.
■ 10.4.1 짐벌락
- 짐벌락(gimbal lock)은 오일러 각으로 3차원 공간을 회전할 때 특정한 상황에서 회전이 제한되는 현상을 말한다.
- 오일러 각 방식은 3차원 공간의 회전을 세 번으로 나누어 진행하기 때문에 짐벌락 현상이 발생할 수 있다.
- 로드리게스 회전 공식(11장)이나 사원수(16장)으로 짐벌락 현상을 방지한다.
■ 10.4.2 회전 보간
- 회전 보간(rotational interpolation)은 경과된 시간에 따라 회전이 부드럽게 변화하도록 중간 회전 값을 계산하는 것을 말한다.
- 중간 회전 값은 선형 보간식으로 구한다.
- θ' = (1 - t) · θstart + t · θend
- 3차원 공간에서 한 축만 사용하는 회전 보간
- 한 축만 사용하는 회전 변환은 선형 보간 조건이 성립하므로 회전 보간할 수 있다.
- 2차원 평면의 회전 보간과 같다.
- 3차원 공간에서 두 축 이상을 사용하는 회전 보간
- 두 축 이상을 사용하는 회전 변환은 선형 보간 조건이 성립하지 않으므로 회전 보간할 수 없다.
- 로드리게스 회전 공식이나 사원수로 회전 보간해야 한다.
'Computer Science > 게임 수학' 카테고리의 다른 글
게임 수학 | 3부 3차원 콘텐츠 제작 | 12장 원근 투영 (0) | 2023.03.14 |
---|---|
게임 수학 | 3부 3차원 콘텐츠 제작 | 11장 외적 (0) | 2023.03.08 |
게임 수학 | 2부 콘텐츠 제작 기초 | 09장 게임 엔진 (0) | 2023.02.20 |
게임 수학 | 2부 콘텐츠 제작 기초 | 08장 삼각형 (0) | 2023.02.18 |
게임 수학 | 2부 콘텐츠 제작 기초 | 07장 내적 (0) | 2023.02.17 |
댓글