3D 충돌을 구현하는 가장 좋고 효율적인 방법


16

이미 이전 게임에 2D 기반 충돌 시스템을 프로그래밍했습니다. 내 첫 충돌 시스템이었고 추악했습니다. 모든 객체가있는 모든 객체를 확인하여 객체 간의 충돌을 찾고있었습니다. 객체가 현재 셀의 다른 객체와 충돌하는 것처럼 보이는 셀이있는 그리드 시스템에 대해 이미 들었습니다. 충돌을 확인하는 좋은 방법입니까?

3d 세계에서 모든 항목을 통과시키는 좋은 기술을 갖고 싶습니다.

답변:


11

3D에서 일반적으로 사용되는 좋은 공간 분할 알고리즘이 필요합니다 . octrees .

그런 다음 경계 영역 간의 충돌이 매우 쉽게 계산되므로 모델 등을 경계 영역으로 깔끔하게 맞출 수 있습니다. 두 개의 경계 구가 충돌하는 것을 알고 나면 경계 구를 반복적으로 작게 만들고 경계 구를 추가하여 객체를 덮거나 두 개의 복잡한 객체 사이의 충돌을 계산하는 또 다른 스마트 알고리즘을 사용할 수 있습니다.

이 이미지를보십시오 : 여러 경계 영역


12

궁극적으로 귀하의 질문에 대한 답변은 단일 솔루션에 모두 맞는 것이 아니기 때문에 특정 응용 프로그램의 요구에 달려 있다고 생각합니다. 괜찮은 자원의 수는 웹이 있지만, 당신은 크리스 에릭슨의 최대 선택하여 자신에게 시간과 좌절을 많이 절약 할 수 실시간 충돌 감지 예제, 훌륭한 세부 사항에서 기술과 알고리즘의 다양한 레이아웃, C ++ 코드.

그것은 거대한 시스템을 구축하려고 시도하기 전에 아기 발걸음을 내딛는 데 도움이되었습니다. 점이 평면에 있는지, 점이 삼각형에 있는지, 광선이 삼각형에 있는지 등을 판별하는 함수 작성. AABB 대 삼각형 등 다양한 볼록한 솔리드의 정적 테스트로 이동 처음에는 뚫을 수없는 것처럼 보이는 것들 (말장난을 용서)이 덜 어려워졌습니다. 다음은 예제 코드와 함께 많은 수의 테스트 목록입니다.

http://www.realtimerendering.com/intersections.html

그 동안 모든 사람이 자유로이 책을 위해 70-80 $를 나눌 수는 없다는 것을 알고 있으므로 다음과 같은 용어를 살펴보십시오.

  • 공간 분할, 옥트리, 쿼드 트리, BSP 트리
  • BIH 나무
  • 바운딩 볼륨 및 바운딩 볼륨 계층
  • 불연속 대 연속 충돌 감지
  • 축 정리 분리
  • GJK 알고리즘
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.