群集シミュレーションでは、通常すべてのアクターが同じに見えるようにはしないものですが、そのバリエーションを付ける目的で多数の異なるアクターを読み込むことも望ましくありません。バリエーションを作成する方法の 1 つは、同じアクターを使用しつつ、シェイプ キーを使用して一部のアクター インスタンスに修正したジオメトリを適用するというものです。これらのシェイプはシミュレーションされないので、シミュレーションが計算された後で、アクターのエンベロープに適用できます。
ソース モデルのシェイプ キーを作成してから、アクターとしてそのモデルを群集シミュレーションに読み込めば、ICE ツリーが自動的に設定されるのでお勧めです。読み込んだ後、さらにシェイプを追加できますが、少し追加作業が必要になります。
下のイメージでは、各アクターのシェイプにランダム ウェイト値が適用されており、通常よりも少しぽっちゃりしたアクターや、たくましい体型のアクターが混じっています。
オリジナル ソース モデルのエンベロープを何らかの形にデフォームし、1 つまたは複数の状態のシェイプ キーを格納します。「シェイプ アニメーション」を参照してください。
通常どおり、群集シミュレーションのアクターとしてモデルを読み込みます。「群集シミュレーションのアクターをロードする」を参照してください。
[メッシュ プロキシ](Mesh Proxy)オブジェクトの[メッシュ プロキシの設定](Set Mesh Proxy)コンパウンドでは、既定で[シェイプ キーのコピー](Copy Shape Keys)オプションが有効になっているので、ソース モデルのシェイプ キーは自動的にコピーされ、このソース モデルからインスタンス化された群集内のアクター上で使用できます。
シミュレーション ポイント クラウドの新しい ICE ツリーを作成し、それをポスト シミュレーション領域に置きます。任意で、この ICE ツリーに名前を付けます。
[アクターのシェイプ キー ウェイトの設定](Set Actor Shape Key Weights)コンパウンドを取得し、この ICETree ノードにプラグインします。
また、このコンパウンドを、[スケルトン シミュレーション](Skeleton Simulation) ICE ツリーの[移動の設定](Set Locomotion)または[スタジアム アニメーションの設定](Set Stadium Animation)コンパウンドの下にプラグインできますが、シミュレーションの 2 番目のフレームまでシェイプは評価されません。
[アクターのシェイプ キー ウェイトの設定](Set Actor Shape Key Weights)コンパウンドで、ロードしたシェイプそれぞれに対応する[ウェイト](Weight)値を設定します。
次のセクションで示すように、[メッシュ プロキシ](Mesh Proxy)オブジェクトの[シェイプ キーの取得](Get Shape Keys)コンパウンドでシェイプ キーが読み込まれる順番を確認できます。
各アクター インスタンスが異なるウェイトをシェイプに使用するように、[ウェイト](Weight)値をランダマイズできます。
このイメージでは、ランダムな確率値は、アクター インスタンスがシェイプ キーを使用するかどうかを定める条件として設定されます。アクター インスタンスがシェイプ キーを使用する場合、そのウェイトは、設定値の範囲(0~1)内でランダマイズされます。
必ず、[ランダマイズ](Randomize)コンパウンドの[アニメート](Animated)オプションをオフにしてください。
アクターを読み込んだ後に、そのアクターにシェイプを追加する場合、以下の手順に従います。
オリジナル ソース モデルのメッシュ(エンベロープ)を選択し、[メッシュ プロキシの設定](Set Mesh Proxy) ICE ツリーを開きます。
[Get Data]ノードで、使用するシェイプ キーの名前を指定します。必ずクラスター名、シェイプ キー名、および positions 属性(cls.Shape.Skinny.positions)に正しい構文を使用してください。
[シェイプ キーの設定](Set Shape Key)ノードで、_CrowdFX_ShapeKey_n 値を、順番が次の番号(この場合は、2 番目のシェイプであり、値は 0 から始まるので 1 になります)に更新します。
6 つ以上のシェイプ キーを使用する場合は、群集モデルにおける[スケルトン クラウド](Skeletons Cloud)オブジェクトの ICE ツリーのノードを編集することにより、何らかの作業を行う必要があります(「群集シミュレーションの構造」を参照)。
上記の「アクターを読み込んだ後にシェイプを追加する」セクションの手順に従って、1 つまたは複数のシェイプ キーを追加します。
Explorer で、群集モデル内で[スケルトン クラウド](Skeletons Cloud)オブジェクトを選択し、その[アクター クラウドの作成](Create Actor Cloud) ICE ツリーを開きます。
[メッシュ プロキシ ポイント位置](Mesh Proxy Point Positions)コンパウンドを編集のために開きます。
追加したシェイプごとに、別の[シェイプ キー n の取得](Get Shape Key n)と[ウェイトの取得](Get Weight)コンパウンドを作成し、[ブレンド](Blend)コンパウンドの下部にある次に使用できる[値](Value)および[ウェイト](Weight)ポートに、それらをプラグインします(下のイメージ参照)。
[シェイプ キー n の取得](Get Shape Key n)と[ウェイトの取得](Get Weight)コンパウンドの両方の内部の値を、順番が次の番号に更新します(この場合、6 番目のシェイプであり、値は 0 から始まるので 5 になります)。この値は、[メッシュ プロキシ](Mesh Proxy)オブジェクトで設定した[シェイプ キーの設定](Set Shape Key)ノードの値を参照します。
シミュレーション ポイント クラウドで、[アクターのシェイプ キー ウェイトの設定](Set Actor Shape Key Weights)コンパウンドを編集のために開きます。
追加したシェイプごとに、[配列 + 整数で設定](Set in Array + Integer)ノードの別のブランチを作成し、シェイプ番号を次に使用できる値(この場合は 5)に設定します。下のイメージに示すように、次のノードをプラグインします。
追加したシェイプ キーごとに、このコンパウンドの新しい[ウェイト n](Weight n)入力ポートを公開します。ポート作成の詳細については、「コンパウンドを編集する」を参照してください。