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 에 충돌했는지 체크할 수 있다.
bool PointInOBB(const Point3D& point, const OBB3D& obb)
{
	Vec3 dir = point - obb.position;
	vector<Vec3> axis;
	axis.push_back(obb.orientation.Right());
	axis.push_back(obb.orientation.Up());
	axis.push_back(obb.orientation.Backward());
	vector<float> size;
	size.push_back(obb.size.x);
	size.push_back(obb.size.y);
	size.push_back(obb.size.z);
	for (int32 i = 0; i < 3; i++)
	{
		float distance = dir.Dot(axis[i]);
		if (distance > size[i])
			return false;
		if (distance < -size[i])
			return false;
	}
	return true;
}게임 개발에 필수적인 내용을 담는 명서들을 소개합니다.
<유니티 교과서 개정6판>(유니티 최신 버전) 구입 링크
https://link.coupang.com/a/be3P0t
유니티 교과서 개정6판
COUPANG
www.coupang.com
<리얼-타임 렌더링(REAL-TIME RENDERING) 4/e> 구입 링크 
https://link.coupang.com/a/8VWas
리얼-타임 렌더링 4/e
COUPANG
www.coupang.com
<이득우의 게임 수학:39가지 예제로 배운다! 메타버스를 구성하는 게임 수학의 모든 것> 구입 링크 
https://link.coupang.com/a/9BqLd
이득우의 게임 수학:39가지 예제로 배운다! 메타버스를 구성하는 게임 수학의 모든 것
COUPANG
www.coupang.com
유니티 에셋 스토어 링크 
https://assetstore.unity.com?aid=1011lvz7h
에셋스토어
여러분의 작업에 필요한 베스트 에셋을 찾아보세요. 유니티 에셋스토어가 2D, 3D 모델, SDK, 템플릿, 툴 등 여러분의 콘텐츠 제작에 날개를 달아줄 다양한 에셋을 제공합니다.
assetstore.unity.com
(링크를 통해 도서/에셋 구입시 일정액의 수수료를 지급받습니다.)
'게임 개발 자료' 카테고리의 다른 글
| 포인트 앤 클릭 퍼즐 디자인 (Point & Click Puzzle Design) GMTK 영상 메모 (0) | 2024.02.08 | 
|---|---|
| 스타 엔진(Star Engine) 알아보고 테크 데모 영상 훑어보기 (0) | 2024.02.05 | 
| 3D 충돌체크 모든 유형별 정리 (2) | 2024.01.26 | 
| 3D 기본 도형의 핵심 개념 간단 정리 (0) | 2024.01.16 | 
| 방탈출 게임(Escape Room) 관련 자료 (0) | 2024.01.15 | 
| [Shader] Curved vertex shader (0) | 2024.01.06 | 
| [Blender] <나의 첫 블렌더> 책 블렌더 기본 조작 스터디 노트 (1) | 2023.11.17 |