티스토리 뷰
🟩 오늘의 목표
- 게임 수학의 기초인 벡터, 행렬, 좌표계, 사원수의 개념과 물리적 의미를 배운다.
- 공간 변환의 원리인 좌표계와 행렬 연산의 순서가 게임에 미치는 영향을 배운다.
- 삼각함수와 보간법을 활용해 오브젝트의 부드러운 움직임을 구현하는 원리를 배운다.
- 오일러 회전의 한계인 짐벌락 현상을 이해하고 사원수를 사용하는 이유를 배운다.
🟧 1. 벡터(Vector)의 기본과 연산
🟦 벡터의 정의와 거리 계산
벡터는 방향(Direction)과 크기(Magnitude)를 함께 가지는 물리량이며, 수학적으로 점 A에서 점 B로 향하는 차이인 $\vec{v} = \vec{B} - \vec{A}$로 표현됨을 배웠다. 플레이어가 (100, 0, 0)에 있고 타겟이 (300, 400, 0)일 때, 벡터는 (200, 400, 0)이 되며 거리는 약 447cm임을 확인했다. Normalize()를 통해 크기를 1로 만든 단위 벡터(0.447, 0.894, 0)를 추출하여 방향을 설정하는 법을 배웠다.
🟦 내적(Dot Product)과 외적(Cross Product)
내적(Dot Product)은 두 벡터의 유사도($\cos\theta$)를 구하는 연산으로, 결과가 1이면 같은 방향, 0이면 직각, -1이면 반대 방향임을 이용하여 시야 판정이나 조명 계산에 활용됨을 배웠다. 외적(Cross Product)은 두 벡터 평면에 수직인 법선 벡터를 구하는 연산으로, 시야 판정이나 좌우 판단, 넉백 등 새로운 방향 설정이 필요할 때 응용할 수 있음을 배웠다.
🟧 2. 행렬(Matrix)과 좌표계의 변환
🟦 변환 도구로서의 행렬
행렬(Matrix)은 벡터를 변환(Transformation)하는 도구이며, 이동(Translation), 회전(Rotation), 스케일(Scale) 등의 변환은 행렬 곱셈으로 표현됨을 배웠다. 여러 변환을 결합할 때는 스케일(S) $\cdot$ 회전(R) $\cdot$ 이동(T) 순서로 곱해야 하며, 교환법칙이 성립하지 않아 순서가 매우 중요하다는 점을 배웠다.
🟦 좌표계와 동차 좌표
자기 자신 기준인 로컬(Local) 공간, 전역 공간인 월드(World) 공간, 카메라 기준인 뷰(View) 공간 간의 변환 과정을 이해했다. 점과 벡터를 구분하기 위해 4번째 성분인 $w$를 추가한 동차 좌표(Homogeneous Coordinates)를 사용하며, $w=1$이면 평행 이동의 영향을 받는 점으로, $w=0$이면 회전과 스케일의 영향만 받는 벡터로 기능함을 배웠다.
🟧 3. 삼각함수(Trigonometry)와 파형 애니메이션
🟦 삼각함수를 활용한 움직임 제어
삼각함수는 각도(Angle)와 비율(Ratio)을 다루는 함수로, 2D 회전 행렬의 기본 형태를 통해 벡터를 회전시키는 원리를 배웠다. 사인(Sin) 노드에 각도를 입력하여 출력되는 -1에서 1 사이의 값을 Z축 위치에 더해 오브젝트가 부드럽게 위아래로 흔들리는 효과를 만드는 법을 배웠다.
🟦 원운동과 파형 기반 애니메이션
$X = \cos(Angle) \cdot Radius$와 $Y = \sin(Angle) \cdot Radius$ 공식을 사용하여 캐릭터가 원형 궤도로 움직이게 하는 법을 배웠다. 감쇠 진동이나 복합 파형을 조합하여 더욱 다양한 애니메이션 효과를 낼 수 있음을 이해했다.
🟧 4. 사원수(Quaternion)와 보간(Interpolation)
🟦 사원수와 짐벌락 해결
세 축을 순차적으로 돌리는 오일러(Euler) 회전은 특정 각도에서 축이 겹쳐 회전 자유도가 사라지는 짐벌락(Gimbal Lock) 현상이 발생할 수 있음을 배웠다. 이를 해결하기 위해 회전을 하나의 축(axis)과 하나의 각도(angle)로 표현하는 사원수를 사용하며, 언리얼 엔진 내부의 모든 회전 계산은 사원수(FQuat)로 처리됨을 배웠다.
🟦 보간(Interpolation)의 활용
두 값 사이의 중간 값을 계산하는 과정인 선형 보간(Lerp)을 활용하여 시간에 따라 자연스러운 이동이나 회전 변화를 만드는 핵심 원리를 배웠다.
🟧 5. 물리 기초 및 포물선 운동
🟦 운동학(Kinematics)과 역학(Dynamics)
힘을 고려하지 않고 물체의 움직임만 다루는 운동학(Kinematics)과, 뉴턴 제2법칙($F = m \cdot a$)에 따라 힘에 의해 물체가 움직이는 역학(Dynamics)의 법칙을 이해했다. 폭발 효과(AddRadialImpulse)나 점프 시 힘을 전달하는 방식을 배웠다.
🟦 포물선 운동
중력($g$)과 시간($t$)을 고려하여 점프 시의 높이 값을 계산하는 포물선 운동 공식을 배우고 이를 코드로 구현하는 법을 익혔다.
🟫 오늘 느낀 점
TA 수업을 통해 게임 속 모든 움직임 이면에 정교한 수학적 약속이 있다는 것을 배웠다. 수식이 낯설고 어렵게 느껴졌지만, 벡터의 방향성이나 행렬의 변환 순서 같은 핵심 개념이 이슈 해결의 중요한 실마리가 된다는 것을 깨달았다. 이해가 되지 않는 부분이 많았지만, 나중에 게임 수학 영상 자료를 찾아보며 차근차근 원리를 깨우쳐 나가야겠다고 생각했다.
튜터님 추천 학습 자료:
- 서적: 이득우의 게임 수학
- 유튜브: 게임 수학 기초 강의
- 유튜브: [Unite Seoul 2019] 이득우 - 수식없이 게임 수학 이해하기
'내일배움캠프 Unreal_7기 > 본캠프' 카테고리의 다른 글
| TIL - 39일차 (0) | 2026.01.22 |
|---|---|
| TIL - 38일차 (1) | 2026.01.21 |
| TIL - 36일차 (1) | 2026.01.19 |
| TIL - 35일차 (1) | 2026.01.16 |
| TIL - 34일차 (0) | 2026.01.15 |

