Skip to content

spoke physics and navigation

Akihiko Shirai edited this page Oct 31, 2020 · 2 revisions

id: physics-and-navigation title: Floorplan要素(物理とナビゲーション)

FloorPlan要素

フロアプランは、どこまで、あなたが歩くことができる場所か、操作可能なオブジェクトがシーンと衝突するかを定義します。 ナビゲーションメッシュ(歩くことができる場所、フロアプランを選択している時の青のメッシュで表示される)とコリジョンメッシュ(オブジェクトと衝突するもの、トリメッシュやハイトフィールドを使用している時に赤色や黄色のメッシュで表示される)を作成します。

Description of the Floor Plan Panel's properties

ナビゲーションメッシュの生成

regenerate (再生成) をクリックしてシーンを公開するとき、Spokeは次のようにして、nav mesh (ナビメッシュ)を生成します。

まず、Spokeはシーン内のすべての歩行可能ジオメトリを一つの大きなメッシュに結合します。 そして、Spokeはメッシュのボクセル化を行います。 Minecraft の世界を見たことがあれば見覚えがあるかもしれませんが、メッシュは Minecraft の風景のようなものに変換されます。 ボクセルのサイズは、セルのサイズと幅によって決められています。

シーンが大きい場合は、たくさんのボクセルが必要になります。 大量のボクセル数によってクラッシュが発生する場合もあります。 そのため、Spokeには処理するボクセルの数を適切にするための自動セルサイズのチェックボックスがあります。 あなたはそれをチェックして良い結果を得ることができますが、通常、スポークはこれらの値のいくつかを微調整することによってより良い結果を得ることができます。 これらをチェックする事で良い結果を得る事はできますが、Spokeはこれらの値を微調整することでさらに良い結果を得ることができます。 特定のエリアを歩くことができるかどうかを決定するすべてのアルゴリズムは、これらのボクセルに対して計算されます。 したがって、解像度が高いほど実際のシーンと同じように見えます。 たとえば、1mの幅の出入り口があり、セルサイズが0.25mの場合、ボクセルの1つがドアの側面と交差しているため、ボクセル化されたデータ構造のドアの幅は0.75mのみになる場合があります。 フロアプランの計算における他のパラメータは、セルのサイズとセルの高さに依存します。 したがって、セルサイズを0.1mのような小さなものに減らして、再生成を拒否されたり、コンピュータに時間がかかりすぎたりする場合は増やしてみてください。

Cell size (セルサイズ)とcell height (セルの高さ)を調整したら、他のパラメータでさまざまな問題を修正できます。 もし移動できない場所がある場合は、agent radius (エージェントの半径) またはagent height (エージェント) の高さを小さくして、ボクセル化された通路にアバターが収まるようにすることができます。 あなたが登ることができない坂、階段、丘がある場合は、 maximum step height (最大ステップの高さ)とmaximum slope (最大の斜面) を調整してみてください。 これらのパラメータは、歩くことができるオブジェクトの高さと、パスの最大スロープを制御します。 小川の途中にいくつかの飛び石があるなど、小さいため歩けない場所が複数あるかもしれません。 minimum region area (最小領域)は、ナビメッシュから除外される前の領域の大きさを制御します。 ここでは agent radius (エージェントの半径)も重要になります。

メッシュがナブメッシュジェネレーターでの作業に適さない場合があります。 これらの場合は、Blenderでカスタムナブメッシュを作成することをお勧めします。 単純化されたメッシュで、Spokeシーンに別のモデルとして追加する事もできます。 歩行可能のものとしてマークします。 次に、その他のモデルを歩行不可能のものとしてマークします。 ナビゲーションメッシュを小さく修正するには、Box Colliderを使用して歩けるエリアを作成する事でできます。

コリジョンメッシュ生成

コリジョンの場合、Spokeにはコリジョンメッシュを生成する2つの方法があります。 まずはtrimesh (トリメッシュ) で、シーン内のすべての衝突可能なメッシュを組み合わせています。 トリメッシュが密度が高すぎると、コリジョンシステムでパフォーマンスの問題を引き起こす可能性があります。 このため、Spokeは更にハイツフィールドを持っています。

heightfield (ハイツフィールド) はシーンを 2D グリッドに分割します。 ハイツフィールドはグリッドの各セルの中心の高さを上から見る事によって構築されます。 それはあなたの環境の上に布を垂らしたようなものになります。 これは野外の地形では比較的うまく機能しますが、衝突可能な小さなオブジェクト、壁、オーバーハング(垂直を超えて傾斜している状態の壁)等が環境にあると機能しにくくなります。 高さフィールドは、複数階層を持つのシーンに対して正確なコリジョンメッシュを作成できません。 衝突可能のジオメトリの最上層の全てのみにコリジョンジオメトリが作成されるだけで終わる事でしょう。

ボックスコライダーは先ほどのいずれかの方法に加えて使用する事ができます。 複雑な形状をした目ッションを多く持つ時に役立つ単純なコライダーです。

まずはじめに

ユーザーガイド

Spoke 関連

クリエイター向け

開発者向け

Hubs Cloud

Hubs Cloud AWS

Hubs Cloud DigitalOcean

日本語追加ドキュメント

Clone this wiki locally