0

3D 環境で NavGraph を手動で作成しました。私は、「グラフに乗った」ときにグラフを介して自分の道を見つけるための A* ルーチンを理解しています (そして以前に実装しました)。

私が興味を持っているのは、グラフに出入りするための最適な方法です。

例: ルーチンは次のようになります: ソースから目的地まで光線を放ちます。途中に何もない場合は、先に進んでそれを歩きます。

途中で何かがある場合は、グラフを使用する必要があるため、グラフに到達するには、グラフ上で最も近い可視ノードを見つける必要があります。(これを行うために、以前にソースからの距離に基づいてグラフをソートし、障害物がないものを見つけるまで、最も近いものから最も遠いものまで光線を発射しました。)

次に、標準の A* を実行します...

次に、グラフで取得したのと同じ方法 (上記の A* のエンドポイントを計算するために使用) を使用して、グラフを「終了」し、エンドポイントから最も近い navgraph ノードに光線を発射します。

したがって、これがすべて言われて完了するまでに、私のナビグラフが非常に密集していない限り、パスを計算するよりもグラフに出入りするのに多くの時間を費やしました...

より良い/より速い方法が必要ですか? (ある種の空間細分化のトリックはありますか?)

4

2 に答える 2

0

世界を空間的に分割することは非常に一般的です。四分木や八分木のようなものは 3D の世界では一般的ですが、グリッドを重ねたり、任意の領域を追跡したりすることもできます。 (N) 自分がどこにいるかを検索すると、何らかのツリーまたはハッシュ テーブルのようなものにたどり着く傾向があります。

于 2009-06-04T09:16:58.633 に答える
0

すべてのノードのQuadtreeを構築して、特定の位置から最も近いノードをすばやく見つけることができます。

于 2009-06-03T19:04:12.250 に答える