728x90

게임수학 6

3D 충돌체크 모든 유형별 정리

3D 공간에서의 충돌 체크 유형과 개념 정리. 물체끼리의 충돌 유형들 Point in Sphere Point in AABB Point in OBB Point on Plane Closest Point on Plane Point on Line segment Point on Ray Closest Point on Ray Sphere to Sphere Sphere to AABB Sphere to OBB Sphere to Plane AABB to AABB AABB to OBB AABB to Plane OBB to OBB OBB to Plane Plane to Plane Point in Sphere P와 S의 중점 C간의 거리 D와 반지름 R길이 비교로 체크. 이 때, 연산 효율을 위해 반지름의 제곱과 비교해줄 수 ..

OBB 와 Point 충돌체크 (내적의 기하학적 의미 활용)

OBB(Oriented Bounding Box) 정의. 위치와 크기, 회전 행렬(orientation)을 갖는다. struct OBB3D { Point3D position; Vec3 size; Matrix orientation; } 한 점이 OBB 에 충돌하는지 체크는 내적 연산을 활용. OBB의 중점에서 testPoint 까지의 벡터 dir를 계산. OBB의 회전 좌표계의 각 축으로 dir을 투영(Projection) 시킨다.이 때 내적을 활용. 내적 결과값은 투영시킨 벡터의 길이와 다른 벡터(각 축 벡터)의 길이를 곱한 값인데, 각 축 벡터의 길이는 1이므로 거리(distance)의 의미만 남음. 이 거리(distance)와 OBB의 크기를 체크해서 point 가 obb 에 충돌했는지 체크할 수 있다..

3D 기본 도형의 핵심 개념 간단 정리

게임 개발에서 3D 공간을 다룰 때 등장하는 기본 도형들에 대한 개념의 핵심만 간단히 정리 3D 기본 도형들 Point : 정점 Line : 선분 (끝이 있는) Ray : 직선 (끝이 없는) Sphere : 구 AABB (Axis Aligned Bounding Box) : 축 정렬 충돌 박스 OBB (Oriented Bounding Box) : 방향/회전 충돌 박스 Plane : 평면 Triangle : 삼각형 Point 3개의 좌표값을 갖는 점. Line 2개의 Point로 구성 Ray 1개의 Point와 방향 벡터(노멀 벡터) Sphere 1개의 Point 중점과 반지름(Radius) AABB (Axis Aligned Bounding Box) 1개의 Point 중점과 Size 크기 OBB (Orien..

행렬(Matrix) 스터디 - 실습 및 SimpleMath for DirectXMath

DirectX 행렬식 계산 편의를 위해 DirectXTK 의 DirectXMath 랩핑 모듈이 필요. SimpleMath.h/.cpp/.iln 파일들. 아래에서 다운로드 받을 수 있음. https://github.com/microsoft/DirectXTK/blob/3b3fd6cfc962c7ffdd03c311a6f6d6364ce96b0a/Inc/SimpleMath.inl SimpleMath.h 를 보면 아래와 같이랩핑한 DirectX 하위 클래스들을 확인할 수 있음. 여기서 Vector 시리즈와 Matrix 가 앞에서 학습한 행렬 수식과 관련된 클래스들. Matrix 메소드를 보면 앞에서 다뤘던 역행렬, 전치, Translation, Scale, Rotation 행렬 생성 시리즈들을 모두 볼 수 있음. 해..

행렬(Matrix) 스터디 - 좌표계 변환, World 변환, View 변환, Projection 변환 행렬

좌표계 변환 행렬 A좌표계에서 B좌표계로 변환하는 행렬. 좌표계 A에서 좌표계 B로의 변환 행렬은 일반적으로 각 축의 방향 벡터와 원점의 이동을 나타냄. v = [x, y, z, 1] | u_x u_y u_z 0 | | v_x v_y v_z 0 | | w_x w_y w_z 0 | | Qx Qy Qz 1 | 역기서 u, v, w 는 A좌표계의 방향 단위 백터를 B좌표계 기준으로 표현한 것. Q요소는 대상 좌표계 B 의 원점에서 A좌표계 원점의 좌표. 로컬 좌표계의 좌표들을 월드 좌표계로 변환해야할 때, 계층 순서대로 부모의 좌표계 SRT 행렬들을 곱해주는 방식으로 활용 됨. World 변환 행렬 로컬(모델)좌표계의 SRT 를 부모의 SRT 변환 행렬을 World(Root)가 나올 때까지 순서대로 행렬 곱연..

행렬(Matrix) 스터디 - 개요, 기초, SRT(Scale, Rotation, Translation) 변환 행렬

행렬에 대한 스터디 노트 항등행렬 (Identity Matrix) 주어진 행렬과 곱했을 때 아무 변화도 주지 않는 정사각 행렬. 역행렬 Inverse Matrix) 곱했을 때 항등행렬이 되는 역할을 하는 행렬. 우측 상단에 -1 로 표기. 전치행렬 (Transpose Matrix) 원래 행렬의 행과 열을 바꾼 새로운 행렬. 우측 상단에 T 로 표기. (Transpose) 직교행렬 (Orthogonal Matrix) 행렬의 행끼리 또는 열끼리 서로 수직(직교)하고 크기가 1인 행렬. (직교행렬의 역행렬은 전치행렬과 같다) A 1x4 행렬과 B 4x4 행렬의 곱셈 C[1,1] = A[1,1]*B[1,1] + A[1,2]*B[2,1] + A[1,3]*B[3,1] + A[1,4]*B[4,1] C[1,2] = A..

728x90
반응형