nainjoo2001의 등록된 링크

키자드에 등록된 총 2개의 포스트를 확인하실 수 있습니다.

Naver Blog

물리엔진 제작 도전 2 - Octree

서론 물리엔진에서 충돌을 실행하기 위해선, 모든(...) 물체 끼리 서로 검사를 해줘야 한다. 이지만, 다행히도 실제로 그렇게 하는 물리엔진은 없다. 그리고 없어야 한다. 우리는 충분히 가까운 물체끼리만 검사할 수 있는 방법을 찾아야 한다. 이전 글을 읽었다면 `충분히 가까운`을 보고 AABB를 떠올릴 것이다. 그렇다. AABB를 활용하면 물체 별 순회 횟수를 줄일 수 있다. 후보 1안) 물체별 추가로 더 큰 AABB를 적용한다. 껍질만 늘었다 아쉽게도 결국 서로 모든 물체끼리 검사를 해야된다는 것은 변하지 않는다. 게다가 AABB가 크든 작든 연산량은 동일하기에, 실제 충돌 시 더 많은 연산을 하게 된다. 2안) 격자(AABB)로 나누어 좌표에 따라 물체들을 위치시킨다. 꼭 1칸에 1개만 있을 필요는 없다. 1안에 비해서는 훨씬 낫다. 원하는 물체의 AABB와 겹치는 격자 안에 있는 물체끼리만 검사하면 된다. 하지만 치명적인 단점이 있다. 비어있는 격자도 '비어있음'을 알기 위해

Naver Blog

물리엔진 제작 도전 1 - AABB

서론 물리엔진의 근본은 충돌이다. 현실 물리에서 힘이 작용하고 운동량이 변하고 어쩌구는 수식을 통해 값만 반영해주면 손쉽게 적용할 수 있다. 하지만 문제는 바로 그걸 적용하는 시점과 그 값의 정도를 구하는 것 이다. 만약 물체의 속도값을 랜덤하게 바꿔버리면 우리는 귀신들린 움직임을 보게 될 것이다. 중력 등 기타 요소는 상수처럼 작용하거나 일련의 수식을 그냥 매 프레임 적용하면 되지만, 물리엔진을 만들기 어렵게 하는 동시에 그 존재 이유인 '충돌'은 검사하기 전까진 언제 어떻게 어떤 강도로 일어날지 알 수 없다. 아쉽게도 충돌 검사는 일반적인 상황에선 마법같은 간소화가 불가능하다. 기본적으로 은 깔고 들어가고 심하면 은 우습게 찍는다. 그러나 온몸 비틀기로 어떻게든 연산량을 줄일 뿐이다. AABB에 대하여 충돌을 다루기 위해선 먼저 충돌이 일어났는지 감지하는 것 부터 시작해야한다. 오늘은 이 충돌 감지 문제를 쉽게 줄여주는 여러가지 방법들 중에 AABB(Axis aligned bou

1