이전 게임에 대해 2D 기반 충돌 시스템을 이미 프로그래밍했습니다. 이것이 저의 첫 번째 충돌 시스템이었고 모든 물체와 모든 물체를 확인하여 물체 간의 충돌을 찾고있었습니다. 물체가 현재 셀 (들)의 다른 물체와의 충돌 만 보는 셀 그리드 시스템에 대해 이미 들었습니다. 충돌을 확인하는 것이 정말 좋은 방법입니까?
3D 세계에서 내 모든 항목을 반복하는 좋은 기술을 갖고 싶습니다.
답변
좋은 공간 분할 알고리즘이 필요합니다. 3D에서 일반적으로 사용되는 것은 octrees 입니다.
그 후에는 경계 구 사이의 충돌을 계산하기가 매우 쉽기 때문에 모델 등이 깔끔하게 맞는 경계 구로 둘러 쌀 수 있습니다. 두 개의 경계 구가 충돌하는 것을 알고 나면 반복적으로 경계 구를 더 작게 만들고 경계 구를 추가하여 오브젝트를 덮거나 두 개의 복잡한 오브젝트 간의 충돌을 계산하는 또 다른 스마트 알고리즘을 사용할 수 있습니다.
참조 이 이미지 :
답변
궁극적으로 답이 될 것 같습니다. 당신의 질문은 당신의 특정 응용 프로그램의 필요에 따라 달라질 것입니다. “모든 솔루션에 한가지 해결책이 없기 때문입니다. 웹에는 괜찮은 리소스가 많지만 당신은 많은 시간과 시간을 절약 할 수 있습니다.” Christer Ericson의 실시간 충돌 감지 를 선택하여 좌절감을 느낍니다. C ++ 코드 예제와 함께 다양한 기술과 알고리즘을 매우 자세히 설명합니다.
그렇게하면 그랜드 시스템을 구축하기 전에 아기 발걸음을 떼는 데 도움이되었습니다. 점이 평면에 있는지 확인하는 함수를 작성하면 n 점이 삼각형에있는 경우, 광선이 삼각형에있는 경우 등 다양한 볼록한 고체의 정적 테스트로 이동 : AABB 대 삼각형 등. 시간이지나면서 처음에는 뚫을 수없는 것처럼 보였던 것들이 덜 위협적입니다. 다음은 예제 코드와 함께 많은 테스트 목록입니다.
http://www.realtimerendering.com/intersections.html
그동안 모든 사람이 원하는대로 70-80 달러의 책을 구입할 수있는 것은 아니기 때문에 다음과 같은 용어를 살펴 보시기 바랍니다.
- 공간 분할, Octrees, Quadtrees, BSP 트리
- BIH 트리
- 바운딩 볼륨 및 바운딩 볼륨 계층
- 이산 및 연속 충돌 감지
- 축 정리 분리
- GJK 알고리즘
li>