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

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

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

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

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

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

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

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

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

  1. アウトライナ(Outliner)から、ロボットの左肘のノードを選択します。
  2. チャネル ボックス(Channel Box)で肘の rotateX アトリビュートを選択します。
  3. アセット(Assets) > アトリビュートのパブリッシュ(Publish Attributes) > を選択し、 アトリビュートのパブリッシュ オプション(Publish Attribute 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_AST を選択します。
  2. [Shift]を押しながら、robot_AST を左クリックします。
  3. アトリビュート値の転送オプション(Transfer Attribute Values Options) を設定するには、編集(Edit) > アトリビュート値の転送(Transfer Attribute Values) > を選択します。
  4. 値(Values)をオンに設定します。
  5. 入力接続(In connections)ソースと共有(Share with source)に設定します。
  6. 適用して閉じる(Apply and Close)をクリックします。

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

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

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