アクターのエンベロープをシェイプ キーで修正する

 
 
 

群集シミュレーションでは、通常すべてのアクターが同じに見えるようにはしないものですが、そのバリエーションを付ける目的で多数の異なるアクターを読み込むことも望ましくありません。バリエーションを作成する方法の 1 つは、同じアクターを使用しつつ、シェイプ キーを使用して一部のアクター インスタンスに修正したジオメトリを適用するというものです。これらのシェイプはシミュレーションされないので、シミュレーションが計算された後で、アクターのエンベロープに適用できます。

ソース モデルのシェイプ キーを作成してから、アクターとしてそのモデルを群集シミュレーションに読み込めば、ICE ツリーが自動的に設定されるのでお勧めです。読み込んだ後、さらにシェイプを追加できますが、少し追加作業が必要になります。

下のイメージでは、各アクターのシェイプにランダム ウェイト値が適用されており、通常よりも少しぽっちゃりしたアクターや、たくましい体型のアクターが混じっています。

アクターに対してシェイプ キーを使用するには:

  1. オリジナル ソース モデルのエンベロープを何らかの形にデフォームし、1 つまたは複数の状態のシェイプ キーを格納します。「シェイプ アニメーション」を参照してください。

    ここでは、ソース モデルに対して、Fat と Strong の 2 つのシェイプが定義されます。

    既定では最高 5 つのシェイプを使用できますが、後からそれ以上追加できます(下記のセクションを参照)。

  2. 通常どおり、群集シミュレーションのアクターとしてモデルを読み込みます。「群集シミュレーションのアクターをロードする」を参照してください。

    [メッシュ プロキシ](Mesh Proxy)オブジェクトの[メッシュ プロキシの設定](Set Mesh Proxy)コンパウンドでは、既定で[シェイプ キーのコピー](Copy Shape Keys)オプションが有効になっているので、ソース モデルのシェイプ キーは自動的にコピーされ、このソース モデルからインスタンス化された群集内のアクター上で使用できます。

  3. シミュレーション ポイント クラウドの新しい ICE ツリーを作成し、それをポスト シミュレーション領域に置きます。任意で、この ICE ツリーに名前を付けます。

  4. [アクターのシェイプ キー ウェイトの設定](Set Actor Shape Key Weights)コンパウンドを取得し、この ICETree ノードにプラグインします。

    また、このコンパウンドを、[スケルトン シミュレーション](Skeleton Simulation) ICE ツリーの[移動の設定](Set Locomotion)または[スタジアム アニメーションの設定](Set Stadium Animation)コンパウンドの下にプラグインできますが、シミュレーションの 2 番目のフレームまでシェイプは評価されません。

  5. [アクターのシェイプ キー ウェイトの設定](Set Actor Shape Key Weights)コンパウンドで、ロードしたシェイプそれぞれに対応する[ウェイト](Weight)値を設定します。

    次のセクションで示すように、[メッシュ プロキシ](Mesh Proxy)オブジェクトの[シェイプ キーの取得](Get Shape Keys)コンパウンドでシェイプ キーが読み込まれる順番を確認できます。

    各アクター インスタンスが異なるウェイトをシェイプに使用するように、[ウェイト](Weight)値をランダマイズできます。

    このイメージでは、ランダムな確率値は、アクター インスタンスがシェイプ キーを使用するかどうかを定める条件として設定されます。アクター インスタンスがシェイプ キーを使用する場合、そのウェイトは、設定値の範囲(0~1)内でランダマイズされます。

    必ず、[ランダマイズ](Randomize)コンパウンドの[アニメート](Animated)オプションをオフにしてください。

アクターを読み込んだ後にシェイプを追加する

アクターを読み込んだ後に、そのアクターにシェイプを追加する場合、以下の手順に従います。

  1. オリジナル ソース モデルのメッシュ(エンベロープ)を選択し、[メッシュ プロキシの設定](Set Mesh Proxy) ICE ツリーを開きます。

  2. [メッシュ プロキシの設定](Set Mesh Proxy)コンパウンドを編集のために開きます。

  3. [シェイプ キーの取得](Get Shape Keys)コンパウンドを編集のために開きます。

  4. 追加するシェイプごとに、下に強調表示した 3 つのノードを持つ別のブランチを作成します。

  5. [Get Data]ノードで、使用するシェイプ キーの名前を指定します。必ずクラスター名、シェイプ キー名、および positions 属性(cls.Shape.Skinny.positions)に正しい構文を使用してください。

  6. [シェイプ キーの設定](Set Shape Key)ノードで、_CrowdFX_ShapeKey_n 値を、順番が次の番号(この場合は、2 番目のシェイプであり、値は 0 から始まるので 1 になります)に更新します。

6 つ以上のシェイプ キーを使用する

6 つ以上のシェイプ キーを使用する場合は、群集モデルにおける[スケルトン クラウド](Skeletons Cloud)オブジェクトの ICE ツリーのノードを編集することにより、何らかの作業を行う必要があります(「群集シミュレーションの構造」を参照)。

  1. 上記の「アクターを読み込んだ後にシェイプを追加する」セクションの手順に従って、1 つまたは複数のシェイプ キーを追加します。

  2. Explorer で、群集モデル内で[スケルトン クラウド](Skeletons Cloud)オブジェクトを選択し、その[アクター クラウドの作成](Create Actor Cloud) ICE ツリーを開きます。

  3. [アクター クラウドの作成](Create Actor Cloud)コンパウンドを編集のために開きます。

  4. [メッシュ プロキシ ポイント位置](Mesh Proxy Point Positions)コンパウンドを編集のために開きます。

  5. 追加したシェイプごとに、別の[シェイプ キー n の取得](Get Shape Key n)[ウェイトの取得](Get Weight)コンパウンドを作成し、[ブレンド](Blend)コンパウンドの下部にある次に使用できる[値](Value)および[ウェイト](Weight)ポートに、それらをプラグインします(下のイメージ参照)。

  6. [シェイプ キー n の取得](Get Shape Key n)[ウェイトの取得](Get Weight)コンパウンドの両方の内部の値を、順番が次の番号に更新します(この場合、6 番目のシェイプであり、値は 0 から始まるので 5 になります)。この値は、[メッシュ プロキシ](Mesh Proxy)オブジェクトで設定した[シェイプ キーの設定](Set Shape Key)ノードの値を参照します。

  7. シミュレーション ポイント クラウドで、[アクターのシェイプ キー ウェイトの設定](Set Actor Shape Key Weights)コンパウンドを編集のために開きます。

  8. 追加したシェイプごとに、[配列 + 整数で設定](Set in Array + Integer)ノードの別のブランチを作成し、シェイプ番号を次に使用できる値(この場合は 5)に設定します。下のイメージに示すように、次のノードをプラグインします。

    追加したシェイプごとにこれを行います。

  9. 追加したシェイプ キーごとに、このコンパウンドの新しい[ウェイト n](Weight n)入力ポートを公開します。ポート作成の詳細については、「コンパウンドを編集する」を参照してください。