例: 不一致の階層でアニメーションを複製する
 
 
 

コンテナを使用すると、コンポーネントの異なるタイプと構成から成るモデル間でアトリビュートを転送できます。上の例では、スケルトンのウォーク サイクルが、まったくジョイントを持たないロボット モデルに転送されます。

スケルトンとロボットの両方のコンポーネントは、それぞれ固有のコンテナに存在します。

次の例では、先の例と違ってロボットのピボット ポイントがスケルトンのジョイントと正確に一致しません。たとえば、ロボットの肘が 3 つのパーツから構成され、各パーツは 1 方向にのみ回転します。一方、スケルトンの肘は 3 方向すべてに回転するシングル ジョイントです。

ロボットがスケルトンを正しく模倣するには、コンテナの肘の回転軸として、それぞれの肘に回転をパブリッシュする必要があります。

ただし、軸ごとに回転をパブリッシュするだけでは正しい結果は得られません。これは、各肘の軸が対応するパーソン A の肘ジョイントの軸と一致していないからです。

たとえば、ロボットの elbow1 の X 軸は、実際にはスケルトンの肘の Y 軸をマップします。

この問題を解決するには、アトリビュートをパブリッシュするときにアトリビュート名を変更する必要があります。elbow1 の rotateX をコンテナの rotateY としてパブリッシュすることで、ロボットの肘の動きをスケルトンの肘の動きと確実に合わせます。

3 つの肘パーツを 1 つの肘としてパブリッシュするには

  1. アウトライナ(Outliner)から、ロボットの左肘のノードを選択します。
  2. チャンネル ボックスで肘の rotateX アトリビュートを選択します。
  3. アセット > コンテナにパブリッシュ(Assets > Publish to Container) を選択します。

    コンテナにパブリッシュ オプション(Publish to Container Options)ウィンドウが表示されます。

  4. パブリッシュ(Publish)チャンネル ボックスで選択されたアトリビュート(Selected channel box attributes)に設定します。
  5. アトリビュート名(Attribute name)カスタム名(Custom name)に設定します。
  6. カスタム文字列(Custom string)を lelbow.rotateY に設定します。

上記手順を繰り返し、elbow2 の rotateY をコンテナの rotateZ に、elbow3 の rotateZ をコンテナの rotateX にマッピングします。

一旦これらのアトリビュートをパブリッシュすると、スケルトンのコンテナからロボットのコンテナに値を転送できます。

ウォーク サイクルを別のキャラクタに移動するには

  1. アウトライナ(Outliner)から、PersonA_CNT を選択します。
  2. キーを押しながら robot_CNT を します。
  3. 編集 > アトリビュート値の転送(Edit > Transfer Attribute Values) を選択します。

    アトリビュート値の転送オプション(Transfer Attribute Values Options) ウィンドウが表示されます。

    値(Values)をオンに設定します。
  4. 入力コネクション(In connections)ソースと共有(Share with source)に設定します。
  5. 適用して閉じる(Apply and Close)をクリックします。

    ロボットはパーソン A に合わせて位置を変更します。

  6. アニメーションを再生して、パーソン A のウォーク サイクルがロボットに複製されていることを確認します。

ウォーク サイクルはスケルトンからロボットに複製することができます。これは、2 つのオブジェクトが内部コンポーネントに関係なくコンテナ レベルで同じに表示されるからです。