2009-06-03 4 views
0

3D 환경에서 수동으로 만든 NavGraph가 있습니다. 나는 일단 그래프에 올라간다면 그래프를 통해 자신의 길을 찾을 수있는 A * 루틴을 이해하고있다.NavGraph 들어가기/나가기 - 경로 찾기

내가 관심있어하는 점은 그래프를 켜고 끄는 가장 최적의 방법입니다.

예 : 루틴은 다음과 같습니다. 길에서 아무 것도없는 경우 원본에서 대상까지 광선을 쏘고 진행하면됩니다.

그래프를 사용하려면 그래프를 사용해야하므로 그래프에서 가장 가까운 노드를 찾아야합니다. (이 작업을 수행하기 위해 이전에 소스로부터의 거리를 기준으로 그래프를 정렬 한 다음 장애물이없는 것을 발견 할 때까지 벽장에서 발사 된 광선을 멀리 뽑았습니다.)

그런 다음 표준 A * ..

그런 다음 끝점에서 가장 가까운 네비게이션 노드까지 광선을 받도록 그래프에서 얻은 것과 동일한 방법 (위의 A *에 대한 끝점 계산에 사용)과 마찬가지로 그래프를 '끝내기'. 내 navgraph 매우 조밀하지 않는 한이 모든 밝혔다 및 완료 시간에 의해 그렇게

가, 내가 경로를 계산하는 것보다/오프 그래프에 점점 더 많은 시간을 보냈어요 ...

가에있다가 더 나은/빠른 방법이 될 수 있습니까? (어떤 종류의 공간 분할 속임수가 있습니까?)

답변

0

주어진 위치에서 가장 가까운 노드를 빠르게 찾기 위해 모든 노드의 Quadtree을 만들 수 있습니다.

+0

내가 왜 이런 생각을하지 않았는지 모르겠다. 일반적으로 quadtree를 무시한다고 생각합니다. 움직이는 장면에서 모든 프레임을 다시 계산해야하기 때문입니다. 그러나 네비게이션의 경우 정적 인 상태로 유지되므로 quad/oct-tree를 구축하고 저장할 수 있습니다. 감사합니다. –

0

세계의 공간 세분화가 매우 일반적입니다. 그리드를 오버레이하거나 임의의 영역을 추적 할 수 있지만 쿼드 트리 또는 옥트리 같은 것은 3D 세계에서 일반적입니다. 기본적으로 O를 필요로하지 않고 N 탐색기 노드에 대한 일종의 액세스를 제공하는 간단한 데이터 구조 문제입니다 (N) 검색을 사용하면 현재 위치를 찾을 수 있으며 선택 항목은 일종의 트리 또는 일종의 해시 테이블로 이동하는 경향이 있습니다.