高度なワークフロー: アニメーション レイヤでのコンストレインとエクスプレッションの使用
 
 
 

アニメーション レイヤをコンストレインやエクスプレッションと共に使用して、シーンのオブジェクトを操作することができます。最も簡単なワークフローでは、まず、アニメーションが設定されていないオブジェクトを操作するためのコンストレインを作成し、次に最上層にレイヤ化されたアニメーションを作成して、このコンストレインのエフェクトをオフセットします。

また、アニメーション レイヤにコンストレインやエクスプレッションを追加することもできますが、このワークフローはより複雑で、ある程度の制約があることがわかっています(詳細については、 アニメーション レイヤおよびコンストレインに対する既知の制限を参照してください)。

レイヤ アニメーションを設定したオブジェクトを制御するためにコンストレインまたはエクスプレッションを設定するには、操作するアトリビュートに対応するブレンド ノードをレイヤから探す必要があります。その後、このブレンド ノードの inputB アトリビュートを操作するためのコンストレイン、またはエクスプレッションを設定します。

次の例は、アニメーション レイヤでのコンストレインとエクスプレッションの作り方を説明しています。

アニメーション レイヤでコンストレインを作成するには

  1. 2 つのオブジェクトを使用して新規シーンを作成します。この例では、コーンと球体を含むシーンを説明しています。
  2. 球体を選択し、 をクリックして、レイヤを作成します(新規レイヤには、デフォルトで AnimLayer1 という名前がつけられます)。
  3. コンストレイン アニメーションの結果を後で見やすくするために、球体とコーン上に次のように基本アニメーションを作成します。
  4. このコーンを選択し、球体を選択してから、ポイント コンストレインを作成します(詳細については、「 ポイント コンストレインを作成する」を参照してください)。

    これにより、ハイパーグラフ(Hypergraph)に pairBlend ノードが作成されます。

    注:コンストレインを作成したときにすでにオブジェクトがアニメーションを持っていた場合、Maya により pairBlend ノードが作成されます。アニメーション レイヤを作成すると、ディペンデンシー グラフの pairBlend ノードの前にレイヤ ノードが作成されます。
  5. アニメーション レイヤ エディタ(Animation Layer Editor)で、レイヤ > パッケージをコンテナ内に(Layers > Package Into Containers)を選択します。
  6. 球体を選択し、ハイパーグラフ(Hypergraph)ウィンドウ( ウィンドウ > ハイパーグラフ: コネクション(Window > Hypergraph: Connections))を開いて、コネクションを確認します。

    ポイント コンストレインの出力(constraintTranslateX、constraintTranslateY、constraintTranslateZ)は pairBlend ノードにコネクトされ、このノードは球体にコネクトされます。たとえば、pairBlend1.outTranslateX は pSphere1.translateX にコネクトされます。

  7. をクリックし、選択した球体(AnimLayer2)のためにもう 1 つレイヤを作成します。
  8. レイヤ > パッケージをコンテナ内に(Layer > Package Into Containers)を選択します。
  9. ハイパーグラフ(Hypergraph)ウィンドウで、AnimLayer2 コンテナ、AnimLayer2_BlendNodes サブコンテナの順にダブルクリックして展開します。

    球体の各アトリビュートのブレンド ノードが表示されます。

  10. コンストレインの出力を球体のブレンド ノードに接続します。たとえば、constraintTranslateX を pSphere1_translateX_AnimLayer2.inputB にコネクトします。
  11. ペア ブレンド ノードを削除します。
  12. レイヤ ブレンド ノードの出力を球体にコネクトします。たとえば、pSphere1_translateX_AnimLayer2.output を pSphere1.translateX にコネクトします。
  13. アニメーション結果を再生します。

    球体は、左右(TranslateX 値で作成したオリジナルのアニメーションに基づく)、上下(ポイント コンストレインによってコーンに牽引される)に動きます。

次の例は、レイヤ化されたアニメーションを持つオブジェクトの translateY アトリビュートにエクスプレッションを追加する方法を表しています。

レイヤ化されたアニメーションを制御するエクスプレッションを作成するには

  1. 新規シーンを作成し、エクスプレッションを使ってアニメートしたいオブジェクトを追加します。この例では、球体のアニメートについて説明します。
  2. アニメーション レイヤ エディタ(Animation Layer Editor)で、をクリックし、空のレイヤを作成します。(新規レイヤには、デフォルトで AnimLayer1 という名前がつけられます)。

    次の手順では、球体の translateY アトリビュートを操作するために、AnimLayer1 にエクスプレッションを追加する方法について説明します。

  3. 以下の手順を実行して、エクスプレッションのコネクト先ブレンド ノードを見つけます。
  4. エクスプレッション エディタ(ウィンドウ > アニメーション エディタ > エクスプレッション エディタ(Window > Animation Editors > Expression Editor))を開き、 アトリビュート(Attributes)領域から inputB を選択します。
  5. エクスプレッション エディタ(Expression Editor)で、ブレンド ノードの inputB を制御するエクスプレッションを記述します(詳細については、「 アニメーションのエクスプレッションを作成する」を参照してください)。

    inputB アトリビュート用に記述したエクスプレッションにより、AnimLayer1 で球体の translateY アニメーションが制御されるようになります。

    たとえば、球体の translateY 値を制御する正弦関数を追加するには、次のように入力します。

    pSphere1.translateY = sin(time);

    このエクスプレッションにより、時間とともに変化する正弦波に従って、球体が上下に異動するようになります。

関連項目

アニメーション レイヤおよびコンストレインに対する既知の制限

コンストレインを持つアニメーション レイヤを使用する場合は、以下の既知の制限および回避方法に注意してください。