ソース モデルをアクターとして割り当てると、そのエンベロープ メッシュが、群衆シミュレーションで各パーティクルにインスタンス化されるジオメトリとして識別されます。
これはどのようにして発生するのでしょうか。下に示すように、2 つのオブジェクトが関係します。
CrowdFX はオリジナルのモデルのポリゴン メッシュのコピーを作成し、それをMesh Proxy ポリゴン メッシュと呼びます。このオブジェクトは、既定で非表示ですが、OpenGL 表示モードで群衆シミュレーションを表示すると、表示できます(下を参照)。
Mesh Proxy オブジェクトは、モデリング領域の Set Mesh Proxy ICE ツリーの[Set Mesh Proxy]コンパウンドのオリジナルのメッシュのベース ポーズ(T-ポーズなど)のコピー、エンベロープ ウェイト、シェイプ キー、マテリアル、テクスチャです。
[シェイプ インスタンスのスキニング](Shape Instance Skinning)コンパウンドに、OpenGL 表示モードでメッシュ プロキシの表示に使用されるエンベロープ スキニングが設定されます。この表示モードは、メッシュ プロキシのマテリアルにある GLSL_Actor_Envelope シェーダが有効な場合、それを使用します。
CrowdFX は Actor Copies ポリゴン メッシュも作成します。これは、群衆シミュレーションにおいてアクター プロキシの全インスタンスのエンベロープ ジオメトリを格納する単一オブジェクトです。Actor Copies メッシュは、3D ビューにおいてアクターのエンベロープを表すものとして表示される通常のオブジェクトですが、次に説明するとおり、その表示をオーバーライドすることによって、シミュレートされるポイント クラウドのパーティクル シェイプとしてメッシュ プロキシ メッシュを使用することもできます。
Actor Copies メッシュには、次の 2 つの ICE ツリーが含まれます。
[Modeling](モデリング)領域の Duplicate Actor Geometry ICE ツリーは、Mesh Proxy オブジェクトからトポロジ データを取得し、群衆シミュレーションで、アクターのメッシュのパーティクル単位のインスタンスを作成するために、それを複製します。各アクター インスタンスのマテリアルとテクスチャ プロジェクションもここで設定します。パーティクル データの数は、スケルトン クラウドから取得されます。
[シミュレーション後](Post-Simulation)領域の Crowd Skinning ICE ツリーは、スケルトン クラウドからのグローバル変換およびポイント位置に基づいて、各アクター インスタンスのエンベロープ デフォーメーションを計算します。基本的に、シミュレーションでアクタをアニメートする方法とシーン内のそれらの場所を調べて、それに従ってエンベロープを変形します。
リアルタイム シェーダを使用して OpenGL で群衆を表示する
最初のフレームでの Actor Copies メッシュの生成を待たずに群衆シミュレーションをプレビューする必要がある場合、OpenGL 表示モードでアクターを表示する方法があります。
これを実行するには、Mesh Proxy オブジェクトのマテリアルに定義されている GLSL Actor Envelope リアルタイム シェーダ コンパウンドを有効にします。このシェーダは、OpenGL 表示モードでのプレビュー時に Actor Copies メッシュではなく Mesh Proxy メッシュを、各アクター インスタンスのエンベロープとして使用します。このシェーダは、Mesh Proxy オブジェクトからのデータを使用して、シミュレーション時に各アクター インスタンスに使用するエンベロープのデフォーメーション、マテリアル、テクスチャを決定します。
このシェーダを使用して、OpenGL 表示モードでインスタンス化されたアクタのエンベロープを表示するには
ビューポートまたは[オブジェクト](Object)ビューで、[リアルタイム シェーダ](Realtime Shaders) [OpenGL]表示モードに切り替えます。
シミュレーション ポイント クラウドを選択し、[シミュレーション後](Post-Simulation)領域でその シェイプ インスタンスのスキニング ICE ツリーを開きます。
[シェイプ インスタンス ボーンの設定](Set Shape Instance Bones) コンパウンドで、[有効](Enable)オプションを選択します。これにより、Actor Copies メッシュのビューポート表示を一時的にオーバーライドするため、GLSL Actor Envelope シェーダによるシェーディングとして、このビューに Mesh Proxy オブジェクトのみが表示されます。
OpenGL 以外の表示では、Mesh Proxy はインスタンス化されますが、GLSL アクター エンベロープ シェーダがサポートされていないため、正しいデフォーメーション、マテリアル、テクスチャが適用されません。