0

저는 간단한 3D 강체 시뮬레이터를 해왔고 객체 간의 충돌을 처리해야하는 시점에 왔습니다. 지금까지 DirectXTK의 SimpleMath와 함께 새로운 DirectXMath를 사용하는 것은 엄청난 도움이되었습니다.DirectXCollision - 교차로에 대한 추가 정보를 얻는 방법은 무엇입니까?

저는 BindingBox와 BoundingOrientedBox 클래스를 DirectXCollision 라이브러리에서 사용하고 있습니다. 두 개의 객체가 교차하지만 더 이상의 정보를 제공하지 않는지를 결정하는 데 유용합니다. 강체 응답을 올바르게 계산하려면 접촉점과 교차점을 검색 할 수 있어야합니다.

제 질문은 - DirectX 라이브러리를 사용하여 해당 정보를 검색 할 수있는 방법이 있습니까? 아니면 배우고 직접 구현해야합니까?

+2

나는 [Bullet Physics Library] (http://bulletphysics.org/wordpress/)와 같은 것을 탐구 할 것이다. [http://bulletphysics.org/Bullet/BulletFull/index.html] –

+0

저는 라이브러리 사용에 대해 생각해 보았습니다. 그러나 제 문제에 대해서는 무거운 해결책이라고 생각합니다. 나는 총알 좀 봐, 더 나은 것 중 하나 것 같다 – Valentin

답변

1

예 아니요.

DirectX 수학 라이브러리를 사용하면 plane-line, plane-plane, 삼각형 평면과 같은 매우 원시적 인 모양의 매우 원시적 인 모양의 교차점에 대한 교차로 세부 정보를 얻을 수 있습니다. 그러나 당신은 기본적인 ("참, 거짓"또는 "-1, 0, 1") 등 레이 박스, 박스 상자, 그래서

, 솔루션과 같은 더 복잡한 교차로에 대한 정보 :

  • 상자의 DirectX 수학 라이브러리 프리미티브를 기반으로 자신의 교차 함수를 롤아웃 할 수 있습니다. 휠을 (부분적으로) 재발 명하지만, 기존 계산 코드를 그대로 유지할 수 있습니다. 별로 코딩 할 필요는 없지만 알고리즘에 고글을 집중적으로 사용해야하며 마음에 MSDN ref을 알고 있어야합니다. 마지막으로, 그것은 정말로 추악 할 수 있습니다.
  • Bullet과 같은 다른 lib를 사용할 수 있습니다. 여기서 많은 교차로 유형을 사용할 수 있습니다. 그들은 이미 디버깅되었고 갈 준비가되어 있습니다. 그러나 깊이 통합 된 경우 DirectX 수학 코드를 더러운 배짱으로 찢을 필요가있을 것입니다.
  • 기존 인터페이스에 추상화 (어댑터)와 같은 것을 만들 수 있습니다. 현재 또는 미래의 원하는 구현을 신속하게 교환 할 수 있습니다. 그러나 그러한 추가 수준의 간접 지정은 초고속 수학을 지연시킬 수 있으므로 현명한 방법으로 수행해야합니다. 그것은 꽤 많은 코딩과 나중의 디버깅과 고통이지만, 그만한 가치가 있습니다.

어떻게 든 도움이 되길 바랍니다. 해피 코딩! ;)

+0

고맙다. 나는 교차로 탐지를 위해 Bullet을 마지막 경로로 연결하고 나중에 내 자신을 굴릴 것이라고 생각합니다. – Valentin