21
15

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

モーションキャプチャデータをBlenderでリターゲットするメモ

Last updated at Posted at 2022-04-22

更新履歴

2022.04.21 初稿

概要

モーションキャプチャのアニメーションデータを、Blender上で特定のキャラクターにリターゲットする方法を記載します。
Optitrackで撮影したデータを例に解説していますが、基本的にどのアニメーションデータでも同じ手順で対応可能です。

大まかな流れ

  1. アニメーションデータを用意する
  2. アニメーションデータをBlenderにインポートする
  3. リターゲット先のモデルデータをBlenderにインポートする
  4. アニメーションデータをリターゲット先のモデルデータにリターゲットする
  5. データを修正する
  6. データを加工する

使用したバージョン

Blender 3.1.2

有料アドオン

本記事で紹介する手順では、2つの有料アドオンを使用します。

手順

1. アニメーションデータを用意する

Optitrackからアニメーションデータをエクスポートします。
ファイルの拡張子は.bvh.fbxになるかと思います。
ただし.fbxの場合、BlenderはFBXのインポート/エクスポートが弱いため、有料のアドオンを使用することになります(後述)。

2. アニメーションデータをBlenderにインポートする

.bvh.fbxで手順が変わるためそれぞれ記載します。

2.1. BVHファイルの場合

Blender標準のインポート機能を使用します。

  1. Blenderの上部メニューから、[ファイル] > [インポート] > [Motion Capture (.bvh)]を選択します。
  2. 用意したアニメーションデータ(.bvh)を選択してインポートします。
    インポート時のオプションは必要に応じて設定してください。
    基本的にデフォルトで問題ないですが、Optitrack側のフレームレート設定とBlender側のフレームレート設定が異なる時などにここで設定します。
  3. アニメーションが正しく表示されれば完了です。

2.2. FBXファイルの場合

Blender標準のインポートでは読み込んだ後のボーン構造の都合が悪いので、有料アドオンを使用します。
予めこちらのアドオンをBlenderにインストールしておいてください。

  1. Blenderの上部メニューから、[ファイル] > [インポート] > [Better FBX Importer (.fbx/.dae/.obj/.dxf.3ds)]を選択します。
  2. 用意したアニメーションデータ(.fbx)を選択してインポートします。
    インポート時のオプションは必要に応じて設定してください。
  3. アニメーションが正しく表示されれば完了です。

003.gif

3. リターゲット先のモデルデータをBlenderにインポートする

ここではいくつかの例を紹介します。

3.1 VRoid等のVRM形式のモデルデータの場合

VRMファイル(.vrm)を使用します。
VRoid Studioからエクスポートしたデータや、VRoidHubからダウンロードしたデータ、Boothなどで購入したデータが挙げられます。

VRMファイルをBlenderにインポートするには、VRM_Addon_for_Blenderという無料のアドオンを使用します。
予めこちらのアドオンをGitHubから取得し、Blenderにインストールしておいてください。

  1. Blenderの上部メニューから、[ファイル] > [インポート] > [VRM (.vrm)]を選択します。
  2. 用意したモデルデータ(.vrm)を選択してインポートします。
  3. モデルが正しく表示されれば完了です。
    rt_001.png

3.2 FBX形式のモデルデータの場合

FBXファイル(.vrm)の場合、前述のFBXアニメーションデータをインポートする項目でも記述しましたが、
Blender標準のFBXインポート機能が貧弱なため、有料アドオンを使用します。

  1. Blenderの上部メニューから、[ファイル] > [インポート] > [Better FBX Importer (.fbx/.dae/.obj/.dxf.3ds)]を選択します。
  2. 用意したモデルデータ(.fbx)を選択してインポートします。
  3. モデルが正しく表示されれば完了です。

3.3 UE4マネキンデータの場合

UE4のマネキンデータは、UE4EditorからマネキンをFBX出力してからBlenderにインポートする方法と、Blender向けに公開されているアドオンを利用する方法があります。
ここではMr Mannequins Toolsという無料アドオンを利用する方法を紹介します。
予めこちらのアドオンをダウンロードしてBlenderにインストールしておいてください。

  1. オブジェクトモードの状態で、[追加] > [Mr Mannequins Templetes]を選択します。
  2. オプションが表示されるので、下図の赤枠の[Use Rigging]アイコンをオフに設定して[OK]を選択します。
    rt_002.png
  3. マネキンがインポートされれば完了です。
    rt_003.png

4. アニメーションデータをリターゲット先のモデルデータにリターゲットする

この時点で、リターゲット元のアニメーションデータと、リターゲット先のモデルデータが同じBlender上の存在していることを確認してください。
今回、リターゲットには有料アドオンのAuto-Rig Proを使用します。有料ですが機能が充実していてネット上に情報も多いのでオススメです。
予めこちらのアドオンをダウンロードしてBlenderにインストールしておいてください。

rt_007.png

  1. ビューポート右側のサイドバーから、[ARP]を選択してAuto-Rig Proを開きます。
  2. [Auto-Rig Pro]というセクションが開いているので閉じます。
  3. [Auto-Rig Pro: Remap]というセクションを開きます。

ここからはオブジェクトモードで作業します。

rt_008.png

  1. コピー元のアーマチュアを選択した状態で[Source Armature]のスポイトアイコンをクリックして、アーマチュアを選択します。
  2. コピー先のアーマチュアを選択した状態で[Target Armature]のスポイトアイコンをクリックして、アーマチュアを選択します。
  3. [Auto Scale]を選択してリグのスケールを自動で調整します。
  4. もし、モーションキャプチャーで撮影したアニメーションをその場から動かないアニメーションに変更したい場合は、[In Place]にチェックをいれます。

rt_009.png

  1. [Build Bones List]を選択します。
  2. ボーンリストが表示されます。[Target Bones]側はNoneと表示されますので、対応するボーンを一つずつ選択していきます。
  3. ボーンリストのうち、ルートとなるHipsのボーンを選択した状態で、[Set as Root]にチェックを入れます。
    (上図ではSkeleton_Hipsが該当します)

rt_010.png
ボーンリストの対応が完了したら、設定ファイルをエクスポートしておくことをオススメします。
そうすることで、次回から[Build Bones List]の後にインポートすると紐付け作業が省略できます。

rt_011.png
rt_012.png

  1. [Re-Target]をクリックしてリターゲットを実行します。
  2. オプションはひとまずそのままで良いかと思います。!
  3. アニメーションが正しくコピーされれば完了です。
    Blender 2022-04-22 12-20-06_1.gif

5. データを修正する

リターゲットは完了したものの、コピーしたアニメーションには問題があります。
モーションキャプチャーのソフトウェアから出力したアニメーションデータは大抵の場合、Rootボーンが存在せず、Hipsのボーンから始まります。
しかしキャラクターモデルは大抵の場合、Rootボーンがあるデータが多いです。
Rootボーンが無いデータをRootボーンがあるデータにリターゲットすると、Hipsの移動がRootボーンに打ち消されてしまい、腰が動かないモーションになってしまいます。
001.gif
上図では膝を曲げた際にVRoidのキャラクターの腰が下がっていないことがわかります。

この症状を改善するため、ボーンコンストレイントの機能を使って、リターゲット元のHipsの動きをリターゲット先のRootに適用します。

  1. ポーズモードに変更します。
  2. リターゲット先のRootボーンを選択します。
  3. [ボーンコンストレイントプロパティ] > [ボーンコンストレイントを追加] > [チャイルド]を選択します。
  4. [ターゲット]にコピー元のアーマチュアを選択し、ボーンにHipsを選択します。
  5. [回転][スケール]のXYZを外し、[移動]だけ有効にします。
  6. [逆補正を設定]を選択します。
    下図のようになっていればOKです。
    rt_013.png

これでリターゲット先のRootボーンにリターゲット元のHipsボーンの移動アニメーションが適用され、アニメーションが正しく再生されます。

002.gif

この状態でも問題ないのですが、コンストレイント設定が残り続けるのが嫌な場合、Rootボーンにベイクすることもできます。
ベイクすることで、コンストレイントによって動かしていた移動値をRootボーンに直接アニメーションキーとして焼き付け、コンストレイントを外してもアニメーションが残るようにできます。

  1. ポーズモードに変更します。
  2. リターゲット先のRootボーンを選択します。
  3. ビューポート左上の[ポーズ] > [アニメーション] > [アクションをベイク]を選択します。
  4. オプションを下図のように設定して[OK]を選択します。
    rt_014.png
  5. アウトライナー上でRootボーンに適用されていたコンストレイントが消え、先程同様にアニメーションしていれば完了です。

6. データを加工する

キーフレームを削減する

モーションキャプチャーで収録したアニメーションデータは、すべてのフレームにキーが打ってあります。
精度の低いキャプチャシステムの場合、毎フレーム僅かに座標がずれて記録され、常に震えているようなモーションになってしまうこともあります。
rt_015.jpg

これを改善するために、キーフレームの削減(リダクション)を行います。

  1. Simplify Curves+というアドオンを有効にします。
    rt_016.jpg
  2. [グラフエディター]ウィンドウを表示します。
  3. ポーズモードにして、ボーンをすべて選択状態にすると、グラフエディターにキーフレームが表示されます。
    rt_019.png
    見づらい場合はグラフエディター上で[A]キーを押すと画面内にすべてのキーが表示されるようにスケールされます。
  4. 削減したいキーの範囲をマウスで囲います。
  5. グラフエディターウィンドウのメニューから、[キー] > [キーフレームを掃除]を選択します。
  6. グラフエディター内にオプションが表示されるため、[しきい値]という数値を調整することで、キーフレームを削減する強度を変更することができます。
    rt_020.png
    キーフレームの削減は、やり過ぎると動きにメリハリが無くなってしまうためどこまで突き詰めれば完了とするかはさじ加減になります。
    rt_018.jpg
21
15
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
21
15

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?