この問題の解決策を見つけようとしています。3Dスペースの正方形の形をしたx、yのフロア座標にロックされた頂点のグリッドの形式でナビゲーションメッシュを構築しようとしています。しかし、私はそれを回避する方法を理解しようとして問題を抱えています。
リキャストライブラリを調べてみました。これはかなり堅牢な方法ですが、大きなマップとオープンスペースでは明らかに速度が低下します。また、高さマップを使用してワールドスペースの頂点とエッジを生成する方法もわかりません。
次に考えたのは、Unreal Engine 3が以前行っていた方法を実行することでした。
https://udn.epicgames.com/Three/NavigationMeshReference.html
レイキャストを使用してメッシュを生成することでした。レイキャストを停止する方法がわかりませんでした。
だから...私の次のオプションはボックスで、おそらくボックスキャストでした。2の累乗のサイズで細分割されたボリュームを作成します。ボックスをグリッドに合わせ、直角プリズムを下向きに光線として発射します。地面の一部であるジオメトリに着地し、長方形が交差していない場合は、正方形をそのままにします。そして、ボリュームの境界に達するまで下に進みます。エッジをリンクする必要があるかどうかを確認するには、頂点の2つのペアの間の勾配がウォーク可能な勾配内にあるかどうかを確認し、これがtrueの場合はそれらをマージします。
私の主な問題は...これは非常に最適ではないようです。それを考えずに、推定では、プロセスは多層レベルのO(N ^ 3)です。かなり厄介なことができます。
そして最後のビットは、これらの正方形の長方形のグループを自動的に作成するためのものです。これを行う方法は完全にはわかりません。Unrealの実装は、それらをスロープで分離します。ただし、グリッド形式を維持しようとしています。したがって、それは完全に必要なわけではありません。大きな長方形のタイルを作成してパス検索プロセスをタイルごとに分割することに問題は残っています。タイルは大きすぎても小さすぎてもいけません。
だから質問は...
このガードされたnavmeshを生成する効率的な方法は何でしょうか?そして、タイルを作成する良い方法は何でしょうか?