2023/10/27 2
-
Direct3D상에서의 ObjectColiision을 구현해보자. 충돌처리는 A객체와 B객채가 존재할 때, A객체와 B객체의 vertices가 겹치는 경우가 생길 경우, 충돌했다고 판정한다. 각 vertice를 검사할 수 없음으로. 최외각선 또는 지름을 기준으로 측정하게 된다. 우선 3차원상의 충돌처리를 구현 하기전, 2차원상의 충돌처리를 확인하고 3차원을 살펴보자. 원의 충돌처리 원은 충돌처리 상 가장 연산이 조금 들어가는 방법이다. 빨간색 이 A원, 초록색이 B원 이라고 할때, A->B의 스칼라값 > A반지름 + B반지름 위 항목이 true면 충돌하지 않음, false이면 충돌한다 라고 이해하면 된다. 같을경우 충돌로 처리하든 아니든 은 취향이다. 2차원상에서의 충돌처리가 이렇다면, 3차원상에서는 어..
-
DirectX에서 사용되는 3D그래픽을 2D화면에 투영하기 위한 변환행렬이다. Proejction행렬은 카메라의 시점, 시야각, 화면의 종횡비를 고려하여 3D좌표를 화면좌표로 변환하는데 사용되는데, 이러한 행렬은 원근투영, 직교투영의 두가지 유형으로 나뉜다. 원근 투영 (Perspective Projection) 3D공간의 객체를 화면에 투영할 때 원근감을 반영하는 투영방식이다. 멀리있는 객체가 작게 나타나고 가까이있는 객체가 크게 나타나는 효과를 가진다. 화면에서의 시야각(Fov)와 종횡비를 고려한다. 가까운 객체와 멀리 있는 객체는 깊이(Depth)를 고려하여 원근효과를 적용한다. DirectX에서는 D3DXatrixPerspectiveForLH 함수를 사용하여 행렬을 생성한다. D3DXatrixPe..