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


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.