多くのプロジェクトでは、ゲームの途中のある時点でロードする必要がある地形の塊は、比較的小さなものだけです。これらの塊、すなわち「セクタ」は、必要に応じて(主にプレイヤーのキャラクタの動きに応じて)メモリの内と外でスワップされます。セクタを使用するかどうかの決定、およびセクタを編成する方法は、通常、制作ワークフロー、ゲームプレイのデザイン、および物理またはレンダリングなどの、エンジン内のサブシステムの技術的な考慮事項によって決定されます。
NavData 生成フレームワークでは、標準的なプロダクション ワークフローとスムーズに連携でき、実行時に扱いやすいように設計された、複数のセクタを処理する非常に柔軟なシステムを提供します。
Gameware Navigation では、複数のセクタを使用することは必須ではありません。地形全体を 1 回で NavData 生成システムに渡して、地形全体を覆う単一の NavMesh を生成できます。ただし、次の点に注意してください。
単一セクタ地形用に生成された NavData は、3D 空間で 2 つの NavData のセットがオーバーラップしている場合でも、実行時に自動的に他の NavData とつなぎ合わせることはできません。
多くのプロジェクトでは、隣接するセクタ間に求められる境界はゲームプレイによって決まります。たとえば、プレイヤーのキャラクタが特定の境界を越えると、前のエリアの衝突用ワールドやテクスチャはストリーミングされなくなり、新しいエリアの衝突用ワールドやテクスチャがストリーミングされるようになります。セクタの境界は、同じ地形で並行して作業しているアーティストとレベル デザイナとの作業の区分によって設定される場合もあります。この場合、それぞれが作業する個別のメッシュまたはサブレベルは、実行時に、ゲームの途中でひとまとまりの塊としてストリーミングされます。
このような状況では、他の種類のデータに使用するセクタやサブレベルとほぼ同じ境界を NavData のセクタに合わせる必要性を感じることが十分にありえます。NavData 生成ツールではこれが透過的にサポートされています。セクタ間の分割が、地形メッシュのトライアングルを Gameware Navigation システムに渡す方法によって明示的に定義されるからです。
この方法で作成された隣接するセクタを実行時にメモリにロードすると、その NavData は、どこでオーバーラップしても自動的につなぎ合わされます。
NavData 生成ツールによって、セクタ化の処理は若干異なります。NavData 生成フレームワークの API は最も柔軟なアプローチですが、他の場合と同様に、プロダクション パイプラインのニーズに合った任意のツールを選択できます。
現在、Navigation Lab は各 .obj ファイルに対して 1 つのセクタを作成します。
ただし、複数の .obj ファイルで設定した <sector> 定義が含まれている .navgenproj ファイルをロードする場合、Navigation Lab は、そのすべての入力 .obj ファイルのすべてのトライアングルをマージします。
NavData 生成システムの API を直接使用する場合、地形のセクタ化を細かく制御できます。各セクタに GeneratorSectorConfig オブジェクトを 1 つ設定し、Generator に提供する GeneratorInputOutput 構造体にすべてのセクタを追加します。
Generator は、NavData を作成すると、自動的に互いに隣接しているセクタを検出し、オーバーラップのエリアを処理して、実行時の自動でつなぎ合わせるためのデータを準備します。隣接するセクタを実行時につなぎ合わせるには、共通の境界に沿ったトライアングルが互いに非常に近い位置にあるか、オーバーラップしている必要があります。「セクタのオーバーラップの処理」を参照してください。