コンテンツにスキップ
Nonlinear Animation (NLA)

Nonlinear Animation (NLA)

1. はじめに

Note: Blender 4.4からAction EditorにSlot機能が追加された。本記事はまだSlot機能に未対応。

Mixamoのキャラクタデータとモーションデータを利用して、BlenderのNLA(Nonlinear Animation)による編集方法を紹介する。下のYouTube Tutorialに沿って進める。

キーフレームのみのアニメーション作成では、異なるアニメーションをつなぐためには細かなキーの調整が必要になるが、NLAを使えばキーフレームデータ同士を自動的に補間するため、作業時間を大幅に削減することができる。

完成イメージ:


2. mixamoデータのDL

mixamo(https://www.mixamo.com/)から以下の6種のデータをダウンロードする。キャラクターデータに関しては、mixamoライブラリのキャラクターでも、自作キャラクターをアップロードしてもよい。

  • 攻撃される側:Fight Idle(Skin含む)、Sweep Fall、Kip Up
  • 攻撃する側:Fighting Idle(Skin含む)、Flying Kick、Step Backward

mixamoの使い方はこちらのページを参照。

2.1 Fight Idle

  • fight idle で検索
  • 攻撃される側の好きなキャラクター(The Boss)にfight idleを設定
  • Format: FBX、Skin: with skin、30fps、keyframe reduction: noneでDL

2.2 Sweep Fall

  • sweep fall で検索
  • Skin: without skinでDL

2.3 Kip Up

  • kip up で検索
  • Skin: without skinでDL

2.4 Fighting Idle

  • fighting idle で検索
  • 攻撃する側の好きなキャラクター(Michelle)にfighting idleを設定
  • Format: FBX、Skin: with skin、30fps、keyframe reduction: noneでDL

2.5 Flying Kick

  • flying kick で検索
  • Skin: without skinでDL

2.6 Step Backward

  • step backward で検索(3種ある、任意)
  • Skin: without skinでDL


3. Blenderの準備

  • Boxの削除
  • OutlinerでCameraとLightのCollectionを非表示


4. 攻撃される側の読み込み

4.1 Fight Idleの読み込み

Fileメニュー > Import > FBX (.fbx) から、Fight Idle.fbx を読み込む。

Viewport Shadingの設定(Solidのオプション)

  • Lighting: Flat
  • Color: Texture

4.2 キーフレームの確認

3D ViewportでArmatureを選択する。

もしくは、OutlinerでArmatureを選択する。

TimelineでKeyframeを確認する。

4.3 タイムラインの操作

時間インジケータを左右にドラッグ、もしくはOption+マウスホイールで操作。

再生/停止(Space)

Start Frame、End Frame(再生範囲)の設定

  • タイムラインの拡大/縮小:マウスホイール
  • タイムラインの横スライド:Cmd+マウスホイール、もしくはパネル下方のバー

Frame Rate 30の確認(Output Properties)

4.4 Dope SheetとAction Editorへの切り替え

Dope Sheet Editorへ切り替える。

次にAction Editorへ切り替える。

4.5 Fight Idleのアクション名の変更(アクションの登録)

Note: 本記事はSlot機能に未対応。新しいBlenderではActionとSlotを組み合わせて指定する必要がある。

FBXを読み込んだ時点で、自動的にアクション名が付与されている。

わかりやすくするために、アクション名称を BOSS IDLE へ変更してENTERキーで確定する。

念のため、Browse Actionをクリックして確認する。

(参考)ドープシート

(参考)アクションの削除方法

(参考)Fake User

4.6 Sweep Fallの読み込みとアクション名の変更

File > Import > FBXで、Sweep Fall.fbx を読み込む。

上図のように、3D ViewportでSweep Fall.fbxのArmature(Outliner上では Armature.001)が選択されている状態(オレンジ枠)で、そのArmatureのキーフレームが表示されていることを確認する。

アクションの名称を FALL へ変更してENTERキーで確定する。

Sweep FallのArmature(Outliner上では Armature.001)を選択して削除(fn+Backspaceまたは X)する。 Browse Actionアイコンをクリックすると、Armatureを削除してもアクションは残ったままであることがわかる。

4.7 Kip Upの読み込みとアクション名の変更

File > Import > FBXで、Kip Up.fbx を読み込む。

アクションの名称を KIP UP へ変更してENTERキーで確定する。

Kip UpのArmatureのみを選択して削除する。Browse Actionではこれまでの3つのアクションが残っている。

(参考)キーフレームが非表示になる状況(Push Down後 or Unlink Action)

Dope SheetのAction Editorで、キーフレームをActionとして登録後、Push DownやUnlink Action(×をクリック)した場合、Armatureを選択していてもキーフレームが表示されなくなる(下図)。Timelineでも同様の状態となる。Unlink Actionした状態は、もとのFBXの初期状態のモーションが再生できるが、モーションを編集することはできない状態となる(T-Poseでモーションがない状態と同じ意味)。

その場合、特定のActionを読み込み直すことでキーフレームが表示される。


5. Nonlinear Animation Editorへの切り替え

Armatureを選択する。

Dope SheetからNonlinear Animationへ切り替える。

下図はNLAスタックと呼ばれ、BOSS IDLEのアクショントラックが表示されている。この段階では、まだキーフレーム状態でストリップ化(キーフレームデータのコンテナ)されていない。

(参考)NLAの使い方


6. Action-Clip Stripへの変換

6.1 BOSS IDLE

下図のPush Down Actionボタンを押す。

キーフレームデータがAction-Clip Stripに変換される。

6.2 FALL

Add > Add Action(下図はBlender 3)をクリックする。 ※既存のNLAトラックを選択していれば新しいAction-Clip Stripが追加される。NLAトラックが選択されていない場合は、Track > Addでトラックを追加してから、Add > Actionを行う。

下図メニューで FALL を選択する。

FALLのAction-Clip Stripが追加される。トラック名(NlaTrack)はクリックして変更できるが、ここでは変更しない。

6.3 KIP UP

これまでの手順と同様にKIP UPのアクションストリップを追加する。


7. Action-Clip Stripの操作

7.1 Action-Clip Stripの移動

映像クリップの編集のように、Action-Clip Stripをドラッグして再生タイミングを調整することができる。

7.2 Blend In

KIP UPとFALLに関して、サイドバーのAction StripパネルのBlend Inを5フレーム(任意)に設定する。

(参考)Blendなしで下のトラックを表示する方法

  • Action StripパネルのExtrapolationのHoldを Nothing にすることで下トラックを表示できる。初期状態はトラックのIN/OUTの外はアニメーションの停止状態を維持する設定となっている。
  • Sidebar(サイドバー) — Blender Manual

8. Kip Upの調整

8.1 Kip Up サイド視点のズレ

下映像のようにFALLとKIP UPではキャラクターの位置(Hipボーン)にずれがあるため、背中がすべっているアニメーションとなっている。これを調整するためにはAction Stripのキーフレームを編集する必要がある。

8.2 Hipボーンの調整

Object Data PropertiesのViewport Displayの In Front にチェックを入れて、ボーンを前面表示にする。

3D ViewportをPose Modeに切り替える。

Armatureのルートにあたる mixamorig: Hips(下図)を選択する。選択したボーンは3D Viewport左上に表示される。

KIP UPストリップを選択した上でTABキーを押すと調整モード(下図)に切り替わる。

NLA EditorからGraph Editorに切り替える。

View > Frame Selected(Numpad .)もしくはFrame All(Home)で選択したキーフレーム全体を表示する。KIP UPレイヤーの左の▶をクリックして全てのチャンネルを開く。

Graph Editorの mixamorig:Hips の左にある目玉アイコンをクリックして全てのチャンネルを非表示にする。

その後、Z Locationのみ表示する。

Graph Editorの表示操作

  • ズーム:マウスホイール
  • 移動:マウスホイールボタンのドラッグ
  • キーフレームの選択:左クリック、左ドラッグで領域選択
  • 全てのキーフレームの選択:Aキー

時間インジケータを130フレーム付近(FALLの最後の位置)に移動する。

Hipボーンの位置をAnnotateツールで描画する。

時間インジケータを145フレーム付近(Kip Upの最初の位置、アクションストリップの編集位置によって異なる)に移動する。Annotateで描画した位置からズレていることがわかる。

Z Locationの全てのキーが選択されている状態で、Gキー、Yキーを連続で押す。Graph Editorのキーフレームを上下に動かして、Annotateで描画したラインに合わせてHipボーンを調整する。

下映像のように、ズレがなくなったのが確認できる。

8.3 Kip Up トップ視点のズレ

わかりづらいが、トップ視点から確認すると横に若干ズレるのが確認できる。

前回の方法と同様にしてズレを調整する。FALLの最終位置でAnnotateツールでHipボーンの位置に目印を描画する。Graph Editorでは、X Locationのキーフレームを選択した上で、Gキー、Yキーを押して調整する。

(参考)アノテーションツールの注意点

アノテーションツールは描画した時点でキーフレームが追加される。その後の操作でアノテーションを削除した場合でもキーフレームは残るので、その後にアノテーションを描画してもそのキーフレームが影響する。その場合はTimelineでannotationのキーフレームをすべて削除するか、以下の方法を行う。

Annotationを全てのフレームで表示する方法

方法① AnnotationツールのオプションでNote > Locked にする。

方法② Timeline > Summary > Scene > Annotations > Noteのチェックを外す(Dope Sheetのロックアイコンは編集不可の意味なので異なる)。


9. 攻撃する側の読み込み

9.1 Annotateの消去

Annotate Eraserに切り替えて、前回のAnnotateを消去する。

9.2 モード切り替え

  • Pose ModeからObject Modeへ切り替える。
  • Graph EditorからDope Sheetへ切り替える。

9.3 Fighting Idleの読み込み

File > Import > FBXで、Fighting Idle.fbx を読み込む。2つのキャラクターが重なった状態になっている。

攻撃側のArmatureを選択した上で、Y軸方向へ移動(G, Y)して、Z軸180度回転(R, Z, 180)する。

Dope Sheet/Action Editorに切り替える。

Actionの名称を MAIN IDLE に変更して、Push Downボタンを押す。

Action Editor上は何も表示されなくなる。Browse Actionで MAIN IDLE が登録されていることを確認できる。

9.4 Flying Kickの読み込み

File > Import > FBXで、Flying Kick.fbx を読み込む。Armatureの向きは変更する必要はない。

Action名称を FLYING KICK に変更して、Push Downボタンを押す。

Flying KickのArmatureは削除する。

9.5 Step Backwardの読み込み

File > Import > FBXで、Step Backward.fbx を読み込む。

Action名称を STEP BACK に変更して、Push Downボタンを押す。

Step BackwardのArmatureは削除する。


10. FLYING KICKの調整

Nonlinear Animation Editorに切り替える。

攻撃側のArmatureを選択する。

MAIN IDLEトラックを選択している状態で Add Action Strip をクリックする。 ※選択していないと新しいAction Stripを追加できない。

続いて表示されるメニューからFLYING KICKストリップを読み込む。

下図のようにFLYING KICKストリップを移動して、StripサイドバーからActive StripのBlend Inを5フレームにする。

MAIN IDLEストリップが長いので、サイドバーのAction Clipセクションの Repeat0.7 に変更する。攻撃される側(BOSS)の動きに応じて、攻撃する側のFLYING KICKのタイミングを調整する。

攻撃される側(BOSS)のFALLのAction Clipセクションの Playback Scale0.9 に変更して若干早くする。KIP UPストリップも必要に応じて移動する。

アクションが自然に見えるように、FALL、KIP UP、FLYING KICKのタイミングを調整する。


11. STEP BACKWARDのズレの調整

11.1 STEP BACKストリップの読み込み

FLYING KICKストリップを選択した上で Add Tracks Above Selected を行う。

新しいトラックが追加される。

Add Action Strip でSTEP BACKを読み込む。

STEP BACKストリップのBlend Inを5フレームに変更する。

11.2 STEP BACKのズレの調整

下映像のようにかなり位置がズレている。

STEP BACKを選択した上でTABキーを押して調整モードに切り替える。

攻撃側のArmatureを選択して、Object Data PropertiesのViewport Displayの In Front にチェックを入れる。

Pose Modeに切り替えて、Hipボーンを選択する。

Graph Editorに切り替えて、View > Frame Allで表示する。

全てのチャンネルを展開して、Z Locationのみ表示する。

Right Orthographic視点に変更する。Annotateで、前のアクション(100フレーム付近)のHip部分に線を引く。

Z Locationのキーを全て選択(Aキー)した上で、Gキー、YキーでGraph Editorの上方向へ移動する。かなり移動するので、Graph Editorをスケールしながら少しずつ移動する。

下映像は調整後の映像。


12. STEP BACKの繰り返し

Annotateを消去しておく。

Dope Sheet Editorへ切り替える。キーフレームが見えない場合はタイムラインを右側へ移動する。

Pose Modeのままで、3D ViewportでAキーを押して全てのボーンを選択する。

キーフレームをShift+Dでタイムライン右側方向に複製する。

Aキーまたは領域選択(下図)で全てのキーを選択する。

さらに、キーフレームをShift+Dでタイムライン右側方向に複製する。

下映像のように4回STEP BACKを繰り返したことになる。

Graph Editorに切り替える。

一旦何もないところをクリックして全てのキーフレームの選択を解除する。その後、Cキー(サークル選択)を押して2回目のキーフレームを選択する。

ESCを押してサークル選択を解除する(解除しないとキーフレームを移動できない)。Gキー、Yキーで下方向へ移動する。

(参考)Graph Editorのサークル選択

  • Cキーでサークル選択モード
  • ESCでサークル選択モードを解除
  • マウスホイールでサークルのサイズ変更

同様に2回繰り返す。

完成。


13. 攻撃する側とされる側のずれ(参考)

YouTubeのTutorialでも解説されていないが、TOP視点から確認すると攻撃する側とされる側では少しずれている。これまでの方法を参考に調整してみよう。


14. 映像レンダリング

  • カメラ構図の設定
  • エンドフレームの設定
  • Render Propertiesの設定
    • Render Engine: Workbench
    • Lighting: Flat
    • Color: Texture
  • Output Properties
    • Output: 保存場所
    • File Format: FFmpeg Video
    • Encoding Container: MPEG-4
  • Render Animation

課題

自由にキャラクターやアニメーションを変更して作成(2体以上利用)。


参考情報

メモ

  • Object ModeでArmatureを選択してPose Modeに変更
  • 腰骨(Hips)がArmatureのルートなのでGraph Editorで編集する
  • Z LocationとY軸拘束で移動
  • 参考サイトのメモ「Z 位置のチャネルのグラフは、時間の経過とともに値が急上昇しているため、このチャネルのキーフレームが3Dキャラクターの前進を表しているとわかります。(通常、Blenderアニメーションでは、これは Y 軸変換になりますが、FBX 形式では Z を Y として認識し、その逆も同様です)」

Bake Actionの方法

  • まず、全てのトラックとArmatureを選択
  • Edit > Bake Action
    • Only Selected Bones のチェックを外す
    • Visual Keying のチェックを入れる
    • Bake DataはPose
    • OKをクリックしてベイク完了
  • 参考: How to bake NLA