많은 작은 삼각형으로 만들어진 물체에서 충돌 감지를 어떻게 수행합니까?


13

더 작은 삼각형으로 모양을 만들 수 있습니다. 두 개의 작은 삼각형으로 사각형을 만들 수 있습니다. 많은 원은 많은 "피자 슬라이스"삼각형으로 만들 수 있습니다. 이것이 충돌 감지로 어떻게 해석됩니까?

꼭짓점을 사용하여 사각형 겹침을 계산하는 방법을 이해합니다. 중심, 반지름 및 거리를 사용하여 원 겹침을 계산하는 방법을 이해합니다.

그러나 작은 삼각형으로 만든 모양에서 충돌을 어떻게 감지합니까? 구체적인 것이 아니라 일반적인 개념 ....

답변:


26

그러나 작은 삼각형으로 만든 모양에서 충돌을 어떻게 감지합니까?

그렇게하지 않음으로써.

임의의 삼각형 수집 (또는 두 개의 임의 삼각형 수집 사이의)에 대한 충돌 탐지는 엄청나게 비쌉니다.

대신, 우리는 일반적으로 기본 물체에 근사한 (가난한) 매우 조잡하고 단순한 모양 (상자 또는 구와 같은)으로 시작하여 계층 적 방식으로 수집 감지를 수행합니다.

이를 통해 대부분의 잠재적 충돌을 "발생하지 않음"으로 신속하게 거부 할 수 있습니다. 이는 일반적인 경우입니다. 이러한 조악한 검사가 통과하는 경우 이는 실제 충돌 가능성을 나타내며 기본 모양의 더 자세한 근사치 (예 : 단단히 밀착 된 여러 개의 캡슐 모양으로 만든 것 또는 많은 것)에 대해 검사를 진행합니다 정렬 된 경계 상자).

기본적으로 충돌 감지는 조잡한 테스트로 시작하며 테스트가 통과함에 따라 점점 더 자세한 표현이 계속됩니다. Alexandre의 답변 에 대한 주석에서 Shiro가 제공 한이 이미지 는 복잡한 모델 (인간)이 일련의 단순한 모양으로 표현되는 방법을 보여줍니다.

히트 박스

실제로 개별 삼각형 ​​수준에서 충돌을 수행 해야하는 경우는 거의 없으며 , 일반적으로 조잡한 방법을 사용하여 테스트 할 잠재적 인 작은 삼각형 집합으로 드릴 다운했습니다. 이때 두 알고리즘이 겹치는 지 테스트하는 것처럼 특정 알고리즘을 사용하여 테스트를 수행합니다. 예를 들어 광선이 삼각형에 닿는 지 여부와 위치를 결정할 수 있습니다. .


감사. 예, 실제로 게임을하는 경우 기존 엔진을 사용하면됩니다. 그러나 사전 제작 된 충돌 감지 엔진에서 구현되는 기본 아이디어를 이해하고 싶습니다. 위의 다이어그램에서 사각형 수학을 사용하여 사람을 구성하는 수십 개의 사각형 중 하나라도 만지고 있는지 확인하십시오. 이것이 기본 아이디어입니까?
JackOfAll

그것들은 직사각형이 아닌 방향 바운딩 박스 (3D)입니다. 그러나 그렇습니다. 광선 (총알을 나타내는)이 플레이어와 충돌했는지 테스트하려고한다면 모든 상자가 아니라 전체 캐릭터를 나타내는 하나의 거대한 상자를 대상으로 테스트 한 후 해당 상자에 대해 광선을 테스트합니다. 렌더 메쉬의 삼각형).

아이디어는 위의 이미지에 표시된 방향 바운딩 박스와 같은 대략적인 문자 근사를 사용하고 먼저 덜 비싼 적중 테스트를 수행하는지 테스트하고 충돌이있는 경우 더 낮은 레벨로 드릴 다운하는 것입니다 필요한 경우 경계 상자에 포함 된 개별 삼각형을 테스트합니다. 일반적으로 여러 BV가 계층 적으로 사용될 수 있으며, 외부 BV는 정확도는 낮지 만 테스트하기 가장 빠르며 (구체, 경계 상자),보다 구체적인 것으로 드릴 다운 (k-DOP)하고 잠재적으로 더 드릴 다운 (삼각형) )
Kik

4

충돌 감지는 형상 (선, 평면, 구, 상자, 캡슐, 실린더와 같은 기본 요소)을 기반으로합니다.

평평하지 않은 지형과 같이 삼각형으로 만들어진 모양에 대해 충돌 감지를 수행해야하는 경우 메쉬를 형성하는 모든 삼각형에 대해 테스트해야합니다.

그 시점에 도달하면 미리 만들어진 충돌 감지 엔진을 사용하는 것이 좋습니다. 이러한 종류의 물건은 꽤 복잡하고 빠릅니다.


삼각형으로 구성된 도형에서 충돌 감지를 어떻게 수행합니까?
JackOfAll

@JackOfAll 그는 이미 자신의 답변에서 지오메트리 도형을 사용한다고 언급했다. i.stack.imgur.com/CAhxn.jpg
dimitris93

@JackOfAll 대답을 편집했습니다. 시로가 말했듯이, 당신의 환경 (몸, 의자, 자동차 등)에 더 복잡한 "아이템"이 있다면 게임 개발에서 그들은 보통 함께 묶여있는 더 단순한 프리미티브로 만들어집니다. 충돌의 감지는 기본 형태에서 이루어 지지만 물리 시뮬레이션은 전신에서 이루어집니다.
Vaillancourt

4
말 그대로 게임을 만들려고하는 것이 아니라 사전 제작 된 충돌 감지 엔진에 구현 된 기본 아이디어를 이해하고 싶습니다. 내가 실제로 게임을하고 있다면 분명히 바퀴를 재발 명하지 않을 것입니다.
JackOfAll
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.