2016-12-11 12 views
0

모든 정적 충돌 개체에 대해 쿼드 트리를 설정 했으므로 충돌 감지 및 레이 캐스팅에 모두 효과적입니다.정상 및 쿼드 트리 기반 충돌 감지를 혼합하는 방법은 무엇입니까?

그러나 비 정적 충돌 개체가 있기 때문에 레이크 캐스트 할 때 ray에 가능한 collidable 오브젝트

이것을 달성하는 최선의 방법은 무엇입니까? 나의 현재 아이디어가 있습니다 :

1) 후 레이 캐스트

2)이 기본적으로 몇 가지 플래그와 함께, 현재의 쿼드 트리에 비 정적 객체를 추가하기위한 것을 사용, 비 정적 개체를 추가, 쿼드 트리를 복제 쿼드 트리는 쿼드에서 허용되는 것보다 더 많은 아이들이 있더라도 쿼드 트리를 분리하지 못하게합니다. 그런 다음 쿼드 트리는 레이 캐스트가 완료되면 자체적으로 정리해야합니다.

3) 쿼트 트리를 사용하여 가장 가까운 정적 개체 충돌을 결정한 후 모든 비 정적 개체를 반복하고 광선이 충돌하는지 확인합니다 그 (것)들과, 그 때 충돌 점이 가까운 정체되는 목표 충돌 점보다는 가깝다는 것을 검사하십시오

이 아이디어의 모두는 조금 성가신 것처럼 보입니다, 그래서 나는 더 performant 일 수 있던 어떤 대안 아이디어든지 찾고있다

중요한 경우 Java를 사용하고 있습니다.

답변

0

1) 복제 네가 10 개 이상의 객체를 가지고 있다면 quadtree는 아마도 매우 비싸므로 그렇게하지 않을 것입니다.

2) 왜 정적이 아닌 개체의 목록을 유지하지 않는 것이 좋을까요? 트리에 모든 객체를 추가하기 만하면 (왜 분할이 문제인지를 알 수 없습니다) 계산이 트리에서 다시 계산됩니다.

) 3) 비 정적 오브젝트가 많은 경우 비용이 많이 들지만, 거의없는 경우 가장 저렴한 솔루션 일 수 있습니다.

좀 더 아이디어 :

4) 비 정적 객체에 대한 두 번째 쿼드 트리를 구축하고)) 5 (유사한 충돌 감지 해. 충돌 후 두 번째 트리를 버립니다.

5) 분할 노드가 실제로 문제가있는 경우 PH-Tree을 사용하는 것이 어떻습니까? 쿼드 트리와 비슷하지만 쿼드 트리보다 훨씬 더 정적으로 동작합니다. (추가로 하나의 빈 노드를 삭제하는 것을 제외하고는 삽입/삭제가 하나 이상의 노드를 수정하지 않습니다.)

6) 정적 객체는 '움직이는 객체 트리'를 사용할 수 있습니다 (단지 google을 위해, 일부 전용 구조가 있습니다). 개체가 너무 빠르지 않으면 PH-Tree가 다시 좋은 선택이 될 수 있으며 전용 이동/업데이트 방법이 있습니다.