본문 바로가기

전체 글339

21. Quaternion - 로드리게스 회전 로드리게스 회전이란? - 회전 축과 각도가 주어진 공간에서 벡터를 회전시키는 효율적인 알고리즘 - 벡터 v를 방향벡터 a를 중심으로 𝜽만큼 회전시켜서 벡터 v'를 구하는 방법에 대한 내용 - 벡터 v는 수직을 향하는 성분(v ㅗa)과 수평을 향하는 성분(v lla)으로 나눠질 수 있다. - ①에 해당하는 축의 길이는 vsinα가 된다. - ①에 해당하는 축을 𝜽만큼 회전시키면 ②가 되는데 각도만 바꾼 것이므로, 크기는 같다. - 따라서 ②의 크기도 vsinα가 된다. - ③에 해당하는 축은 v와 a의 내적의 결과로 얻을 수 있다. - 외적의 결과는 v * a * sinα로 구해지는데, - a는 단위벡터이므로 결과는 vsinα로 위의 ②와 동일한 크기임을 알 수 있다. 결과적으로 v'은 아래와 같은 요소들.. 2023. 1. 31.
20. Quaternion - 짐벌락 현상과 복소수에 대한 개념 오일러 방식의 문제? - x축을 90도로 놓고 y축을 회전시키면 z축이 돌아간다. 왜지? 축이 손실된 것 - 이 현상을 짐벌락 현상이라고 한다. 짐벌락 현상이란? - 각 축의 회전이 결합할 때 세 축 중 하나의 축이 먹통이 되는 현상 - 유니티는 회전을 적용하는 순서가 z - x - y 순으로 적용되는데, 항상 2번째 축에서 문제가 발생한다. - z축을 회전시키면 x축은 그 영향을 받아 원래 궤도가 아닌 다른 궤도로 움직인다. 이를 해결하기 위해서는? - 앞으로 배울 쿼터니언의 개념을 도입해야 한다! 복소수 개념 정리 복소수란? - a + bi 꼴의 수를 말하며 a는 실수부, bi는 허수부라고 칭한다. 이 수를 벡터와 같이 2차원 평면에 표현할 수 있는데 이 평면을 복소평면이라고 한다. 1) 복소수의 덧.. 2023. 1. 30.
19. Frustum Culling - 절두체컬링이라고 불리며 최적화기법 중 하나이다. - 위 사진처럼 카메라가 찍는 범위 안의 물체들만 그려주고, 나머지는 스킵하는 기법 - 레스터라이저 단계에서 시계방향, 반시계방향인지에 따라 한쪽 면을 그려주지 않는 것 이 기법은 어떤 점이 평면을 기준으로 안인지, 밖인지를 검사하는 수식을 통해 구현할 수 있다. - ax + by + cz + d = 0 이 식은 어떤 평면을 이루는 점을 나타낸다. - 이 수식을 만족하면 그 점은 그 평면 안에 있다는 뜻 - 이 수식에서 n(a, b, c)는 노멀벡터(평면과 수직인 벡터)이고, d는 원점에서 평면까지의 거리이다. 왜 n(a, b, c)가 노멀벡터인가? - 임의의 두 점 A(X, Y, Z), B(X', Y', Z')으로 이루어진 벡터 AB가 있다면, - A.. 2023. 1. 28.
18. SkyBox - 월드에서 하늘을 담당하는 큰 박스 - 위 사진처럼 6면에 큰 그림을 붙여서 큐브형태로 조립해서 사용하는게 일반적 - 이번 예제에서는 큐브형태는 아니고 구 모양으로 만듦 스카이 박스의 좌표 변환 - 로컬 좌표에서 스카이박스의 중심점은 (0, 0)이다(당연한 얘기) - 그런데 스카이박스는 말 그대로 배경의 역할을 하기 때문에 움직이거나 할 필요가 없음 - 그렇다고 가만히있어서 플레이어가 스카이박스의 끝에 닿는 일이 생기면 안되니까 - 뷰 좌표 (0, 0) 위치에 고정시키는 것은 어떨까 하는 아이디어 - 말 그대로 카메라를 따라다니는 것이다 - 그냥 (0, 0)에 있으면 되니까 World를 거쳐도, View에서 다시 (0, 0)이다. - 그럼 굳이 World를 거칠 필요가 있을까? 그냥 View 좌표계로 .. 2023. 1. 27.