これはMardini2024のDay18 APEX Scene Animateの動画を視聴してまとめたものです。
公式のサンプルファイル 今回はありません
Day17 Flip Solver | Day18 APEX Scene Animate | Day19 Joint Capture Biharmonic
APEX Scene Animateノードは、APEXアニメーションのコントロールを行うことができます
概要
- APEX Scene Animateノードを使用するために、Animateデスクトップに切り替えると便利です
- Electraジオメトリを利用して検証します
- Rig Treeタブではリグ(Base.rig)、スケルトン(Base.skel)、コントロールシェイプ(controlshapelibrary)、ベースシェイプ(Base.shp)を確認できます
- APEX Scene Animateノードに接続し、IKコントロールを使用してアニメーションをつけることができます
- Kボタンでキーフレームを設定し、ローカルスペースとワールドスペースを切り替えて複数のコントロールを一緒に移動することができます
- Selection Setsを作成し、上半身全体を一緒に動かすことができます
- Locatorをシーンに追加し、ピボットポイントやSelection Setsとして使用できます
- Constrainsを使用して2つのコントロールを結びつけることができます
- ダイナミックモーションツールを使用してジャンプアニメーションを作成できます
- APEX Scene Invokeノードを使用してアニメーションを出力します
- ラグドールフィジックスのドキュメントは少ないそうです
- SideFX Content LibraryからAPEXの使い方を学ぶことができます
APEX Scene Animate
Animateデスクトップへの切り替え
まずデスクトップモードをAnimateに切り替えます。
下のウィンドウを最小化し、パースペクティブだけになるようにシングルビューに切り替えます。
Electraジオメトリの設定
objネットワークでElectraジオメトリを追加します。
testgeometry_electra1ノードの中に潜り、Test Geometry Electraを見ていきます。
初期状態のOutputであるSkin SurfaceをAPEX Sceneに変更します。
これでAPEX Scene Animateノードと一緒に使用するための必要な設定が全て初期化されます。
NodeInfoを確認すると、Packed Geosが含まれていることを確認できます。
何が起こっているのかを理解するために、Rig Treeペインを追加します。
electra_charの中には、リグ(Base.rig)、スケルトン(Base.skel)、コントロールシェイプ(controlshapelibrary)、ベースシェイプ(Base.shp)があります。
これらは実際にアニメーションを作成するために使用するものです。
APEX Scene Animateノードの使用
APEX Scene AnimateをElectraノードの最初の出力に接続します。
ここからアニメーションを開始できます。
APEX Scene Animate作成時に左側の「Animate」状態は自動で有効になります。これが有効だと、コントロールハンドルがすべて表示されます。
コントロールハンドル
IKコントロール
手の上にIKコントロールがたくさんあります。
例えば、手をクリックして、重心を動かすことができます。
膝と肘用のポールは膝がどこを向いているのかを制御します。
上部には鎖骨ローテーターがあり、肩を制御します。
キーフレームの設定
アニメーションを行うために、キーフレームを設定します。移動させたら、Kキーを押してキーフレームを設定します。
しかし、キーフレーム化されるのは、事前に選択したものだけに限定されます。(今回は腰を選択してキーフレーム化しましたが、手に移動してみるとキーフレームが無く、それぞれ独立していることがわかります
これをうまく使用する方法は、すべてのコントロールをピン留めすることです。
ピン留め状態にすると、左側のチャンネルリストにすべてポップアップされます。
変更を加えてKを押すと、すべてがキーフレームされます。
腰を上に移動し、そこでキーフレームを設定します。(再びKを押します)
上記の画像のとおり、手がその場に残されているという問題があります。
(なぜなら、独自のIKに従うからです)
この状態を解消させるには、Shift+クリックして複数のハンドルを選択することです。
ローカル座標とワールド座標の切り替え
Shift+クリックして、腰・右手・左手の3つを選択します。
その3つをすべて上に移動しようとすると、あらぬ方向に移動してしまう問題が生じます。これは、それぞれがローカル座標で移動しているためです。
必要に応じて、右クリックからAlignmentMode切り替え(もしくはショートカットのM)でワールド座標にアライメント切り替えをすると、3つ一緒に上に移動できます。
動画ではフレーム1でしゃがんで、フレーム24で上に移動しています。
とはいえ、この結果はあなたが正確に望むものではないかもしれません。
Selection Sets
もっと自然にアニメーションを行う良い方法は、一緒に移動したい上半身のすべてを含めることです。
両手を選択し、胴体も選択します。(先程は腰なのでその一つ上の場所です)
そして、Selection Setsを右クリックして、Create Set from Selected(選択したものからセットを作成)します。
これによりset1が作成され、ダブルクリックでUpper_bodyに名前変更します。
Upper_bodyをクリックすると、それら3つを同時に選択できます。
作成したあとからSelection Setsに追加することもできます。
例えば、Upper_bodyに肘のポールを追加したい場合、Shift+クリックでこのポール両方を選択します。
そして、Upper_bodyを右クリックし、「Add Selection Sets」で追加します。
選択された2つのポールが追加され、5つになったことが確認できます。
これでUpper_bodyを選択するたびに、上半身を一括で移動させることができます。
Locator(ロケーター)の使用
次にLocatorというツールを見てみましょう。
ビューポートの上部で、Locatorに移動できます。
何も選択せずにHを押すと、シーンにLocatorが追加されます。
Locatorをピボットポイントとして使用できます。
また、Selection Setsとしても使用できます。
Locatorを両手の中心に移動しておきます。
そのうえで両手を選択し、加えてLocatorもShift+クリックで選択します。
先ほどと同様に右クリックからCreate Set from SelectedでSet1を作成し、Hand_pullに名前を変更します。
これでLocatorを選択するとHand_pullも選択されるため、両手を簡単に選択して移動できるようになります。毎回右手と左手を選択する手間が省けます。
Selection SetsとLocatorについての注意点は、それ自体がピボットを持っている点です。
Hand_pullまたはUpper_bodyを選択して、コントロールしているピボットを見ていきます。
そこで新しいペインに移動します。New Pane Tab Type > Animation > APEX Selection Sets を選びます。
Selection Sets[APEX]ペインのSelection Sets下に、Upper_bodyとHand_pullがあります。
このelectraとBaseを拡張すると、黄色のマーカーが出てきます。これがピボットを保持しています。以下の図でいうと、Baseの中にあるspine_mid、Locatorの中にあるLocator_0です。
一度Selection Setsを作ったあとでもピボットを変更することができます。
異なる場所にピボットを作りたい場合は、右クリックからMake Primary Controlを選択することで切り替えられます。
モードの切替
ビューモードに切り替えると、キャラクターがアニメーションを失います。
しかし、心配しないでください。アニメーションが消えたわけではありません。
ポーズモードに戻ると、再び表示されます。
これがAPEXの仕組みです。
すべてはこのsceneanimateノードの中に含まれており、作業が終了したら実際にアニメーションを呼び出して、アニメーションをロックする必要があります。
Constraintsの使用
次に見るのは、Constraintsです。
Constraintsは、任意の2つのコントロールを拘束した状態にするのに役立ちます。
まず両手を前に移動させ、
両手を選択した状態でHを押します。
そうすると、2つの間にConstraintsされた接続が作成されます。
それらの間を走る点線で確認できます。
そして、ポーズモードで右手か左手どちらかを動かすと、もう1つの手もConstraintsされているのがわかります。
この機能はキャラクターが何かを持っている場合に役立ちます。
次はConstraintsの簡単な解除方法についてです。
Selection SetsのAll_Controlsをクリックし、Ctrl+Hを押すと、すべてのConstraintsが削除されます。
これで、再び独立した状態で手が動かせるようになりました。
ダイナミックモーションの作成
次にダイナミックモーションを見ていきます。
ダイナミックモーションを表示するために、非常に基本的なジャンプアニメーションを作成します。(ジャンプ前、ジャンプ中、ジャンプ後の3つの状態を作成します。)
ダイナミックモーションツールに移動します。
ジャンプ前のフレームで重心(spine_mid)を選択し、Hを押します。
すると、黄色い新しい放物線運動を開始できます。
ここで気をつけるのが、ジャンプ後のフレーム(最後のフレーム)に移動して、最後にもう一度Hを押します。
そうすると、白色のカーブとカーブの天井となるGridが得られます。
これで、キャラクターはジャンプするときにそのカーブに沿って移動し、このカーブを調整してジャンプの高さを調整できます。
(ジャンプ時のカーブをスムーズにしてくれます)
アニメーションに満足したら、Ctrl+Gを押して、「Bake to Keys」でキーにベイクします。
これにより、間に多くのキーフレームが追加され、アニメーションが更新されます。
APEX Scene Invokeノードの使用
アニメーションができたら、Scene Invokeを使用できます。
sceneanimateノードをScene Invokeの最初の入力に接続します。
その後に、Output All Character Shapesボタンを押すことで、これでアニメーションが出力されます。
また、Nodeinfoを確認すると2つのPacedGeoの形式になっているのがわかります。
そこで、Unpack Folderノードを使用します。
このノードの上部にアスタリスクを追加します。
デフォルトが、(/*)なので、(/**)に変更します。
これにより、2レベルのアンパックが行われ、ここからさらに2つのUnpackを行ってジオメトリに戻ります。
ラグドールフィジックスの設定
ラグドールフィジックスの設定は少し手間がかかりますが、Configure Joint Limitsノードのヘルプファイルに参考情報があります。(もともとあまりドキュメントがないらしいです)
Electraモデルにラグドールフィジックスを適用する方法を学ぶことができます。
その他のジオメトリの使用
SideFX Content LibraryからダウンロードできるElectraリグやLuchador、Chickenなどのジオメトリを使用して、APEXの使い方を学ぶことができます。
特に以下のライブラリーがおすすめとのことです。
APEX PillowやKineFX/APEXワークフローも参考になります。
amaterasさんの「APEX解体新書」では、さらに詳しい解説(APEXの概念からグラフの読み書き、リグの組み方までの工程)が記事になっていますので、そちらもご参照ください。