Make Unreal REAL.
article thumbnail
삼중곱(Triple product)

이득우의 게임 수학 삼중곱은 벡터의 외적과 내적을 두 번 연속 사용하는 연산이다. 총 4개의 경우의 수가 있을 수 있다. 1. u·(v·w) 2. u·(v⨯w) 3. u⨯(v·w) 4. u⨯(v⨯w) 이 중에서 1번과 4번은 괄호 안의 결과가 스칼라가 되므로 두 번째 연산에서는 벡터 간의 연산이라고 볼 수 없다. 따라서, 2번과 4번만이 유효한 삼중곱이 된다. 이 중에서 최종 결과가 스칼라가 되는 2번은 특히 스칼라 삼중곱(Scalar triple product)이라고 한다. 외적을 통한 왼쪽/오론쯕 판별, 앞/뒷면 구분을 통한 백페이스 컬링에 사용된 공식이 모두 스칼라 삼중곱이다. 외적의 결과가 되는 법선 벡터의 크기는 두 벡터가 이루는 평행사변형의 넓이가 된다. 이때, 임의의 벡터 c를 a⨯b에 투영..

article thumbnail
로드리게스 회전 공식

이득우의 게임 수학 오일러 각 방식은 짐벌락 현상이 발생하는 데다, 회전 순서에 따라 결과가 바뀌기 때문에 회전 보간이 어렵다. 이 문제는 임의의 축에 대한 평면의 회전 방식인 축-각 회전(Axis-Angle rotation)을 사용하면 해결이 가능하다. 원점을 O(0, 0, 0, 1), 회전 평면의 중심을 O', 회전시킬 점을 P(x, y, z, 1), 회전한 점을 P'이라고 하자. 벡터 u = P - O = (x, y, z)가 된다. 벡터 u를 벡터 n에 투영(Projection)시킨 벡터를 v라고 할 때, 벡터 v = (u·nₑ)·nₑ 벡터 O'P = u - v가 된다. 벡터 O'P'을 가로 성분과 세로 성분으로 분리하면, 가로 성분은 cosθ·(u - v)가 된다. 벡터 O'P'의 세로 성분을 구..

article thumbnail
백페이스 컬링(Backface Culling)

이득우의 게임 수학 백페이스 컬링은 게임 등에서 최적화를 위해, 시선에 감지되지 않는 메시의 뒷면을 그리지 않는 기법이다. 인덱스 버퍼에는 삼각형 폴리곤을 구성하는 정점의 순서가 나열되어 있는데, 아래와 같다고 해보자. 시선의 입장에서, 좌측 폴리곤은 정점이 시계 방향으로 나열되어 있으므로 반대 방향을 향하게 되고, 우측 폴리곤은 반시계 방향으로 나열되어 있으므로 시선 방향을 보게 된다. 이때 카메라의 시선 방향과 메시가 바라보는 방향을 비교해 마주보면 그리고, 같은 방향을 바라보면 그리지 않는 것이 백페이스 컬링의 알고리즘이다. 삼각형을 이루는 세 정점 P₁, P₂, P₃로 두 개의 벡터 P₁P₂, P₁P₃를 만들고, 이 둘의 외적을 구하면 삼각형이 바라보는 면의 법선 벡터 n을 구할 수 있다. 카메라..

article thumbnail
외적(Cross product)

이득우의 게임 수학 벡터 A와 벡터 B의 외적은 A⨯B로 나타낸다. 외적은 신발끈 공식(사선 공식)과 유사하게 아래와 같이 계산하고, 외적의 결과는 두 벡터에 동시에 수직인 벡터가 된다. 두 벡터로 만들어지는 평면의 법선 벡터(Normal Vector)를 만드는 것이다. 사실 외적의 결과가 되는 법선 벡터 C의 크기는 C의 행렬식의 절댓값과 같다. |A⨯B| = |det(C)| 외적은 연산 순서에 의해 크기는 바뀌지 않지만, 결과의 방향이 바뀐다. A⨯B = -(B⨯A) B⨯A = -A⨯B = A⨯-B = -B⨯-A 외적은 교환법칙과 결합법칙이 성립하지 않지만, 덧셈에 대한 분배법칙은 성립한다. A⨯B ≠ B⨯A C⨯(A⨯B) ≠ (C⨯A)⨯B C⨯(A + B) = C⨯A + C⨯B 외적의 크기는 두 벡..

article thumbnail
오일러 각에서의 회전 보간

이득우의 게임 수학 중간 회전 값은 다음과 같은 선형 보간 식을 사용해 얻을 수 있다. 위 식을 통한 회전 보간(Rotational Interpolation)이 성립하기 위해서는, 두 각의 회전 변환을 곱한 결과가 두 각의 합의 회전 변환과 동일해야 한다. θ만큼의 Yaw(Y축) 회전을 R(θ)라고 할 때, R(α + β) = R(β)·R(α)가 성립해야 한다. 하나의 축만을 회전할 때는 문제가 없음을 확인했다. 이번에는 θ만큼의 Pitch(X축), Yaw(Y축) 회전을 R(θ)라고 할 때, R(α + β) = R(β)·R(α)가 성립하는지 확인해본다. 오일러 각 방식은 회전 순서에 따라 결과가 바뀌기 때문에, 두 개 이상의 축을 회전할 경우 R(α + β) ≠ R(β)·R(α)임을 확인했다. 따라서, ..

article thumbnail
짐벌 락(Gimbal Lock)

이득우의 게임 수학 3차원 트랜스폼의 회전을 담당하는 오일러 각 방식은 장단점이 명확하게 존재한다. 장점 굉장히 직관적이다. 설정할 값도 세 가지 뿐이고, 표준 기전 벡터를 회전축으로 사용하기 때문에 설계가 용이하다. 행렬을 사용하면 최소 9(3x3)개의 실수가 필요하지만, 오일러 각 방식은 3개의 데이터만 있어도 된다. 단점 짐벌 락 현상이 발생할 수 있다. 짐벌 락 오릴러 각 방식으로 회전을 다룰 때, 특정한 상황에서 한 축의 회전이 제한(소실)되는 현상이다. DirectX 짐벌락 현상 ( Gimbal Lock ) 짐벌락 현상 ( Gimbal Lock ) 짐벌( Gimbal ) - 짐벌이란 물체가 회전하도록 중심... blog.naver.com 아래는 짐벌 락에 대해 굉장히 쉽게 잘 설명되어 있는 영..

검색 태그