概要
Blender の有名アドオンである Auto-Rig Pro についての備忘録。
Blender バージョンは 4.1 系を使用。
はじめに
今回は アニメ調のSD素体モデル を Auto-Rig Pro を使ってリギングし、ゲームエンジン (UE5) 向けに FBX としてエクスポートするまでの基本の流れを記事として残してみた。
- 左右対称なヒューマノイドモデル (要は人型) を扱う
- UE5で使用することを想定しているが、ボーン構造は UE4マネキン準拠
- フェイシャルやシェイプキーは扱わない
- カスタムボーンはまだ追加しない
あれこれ試行錯誤しつつ残した学習メモなので間違ってる内容もあるかも。
今回使うモデル。仮テクスチャで色分けした程度。9000 ポリゴンぐらい。
- 目は別オブジェクト、マテリアル&テクスチャは頭と体で分けてある
- ミラーモディファイアで左右対称化している
公式マニュアル
アドオンの機能
大きく分けると下記の2つ
- モデルのメッシュ形状に合わせた 高機能なリグを自動生成
- 各種 ゲームエンジン 向けの エクスポート機能 (Unity / Unreal Engine / Godot)
特に人体モデルにリグを入れてポーズつけて確認までの流れが簡単に出来る
リグについての補足
生成されるリグは、FBX形式にエクスポートした時点でコンストレイントやIK設定などの情報は引き継がれない (多分)。そのためゲームエンジンや外部アニメーションツール側でFBXファイルをインポートしても、これらの設定をそのまま使用することは出来ない。これはARPで生成したリグに限らず標準でも同じで、インポートした後にツール側で再設定する必要がある。
導入
BlenderMarket でアドオンを購入する。
個人なら一番上の Full を購入すれば良い。Lite には必須機能が入っていない。
結構良い値段するがアップデートはずっと無料。
BlenderMarket は購入したアドオンを管理しているわけではなく、購入履歴が残るだけなので入手済でも多重購入出来てしまう。
既に購入済でないか気を付けること。(過去のセールの時とか)
購入したら auto_rig_pro_xxxxx.zip をダウンロード。
いくつか並んでいるが基本的にはこれ一つで良い。
ダウンロードした zip は解凍しないこと。
ダウンロードが完了したら Blender を起動し、編集 > プリファレンス > アドオン > インストール ボタンから先ほどの zip を選択。通常のアドオン追加時の流れと同じ。
前準備
モデルを配置する
- シーンの中心 (0,0,0) に配置する
- 正面(-Y方向)を向かせる
トランスフォームを適用しておく
- オブジェクトモードでオブジェクトを選択して Ctrl + A , 全トランスフォーム
ポーズについて
- 指の自動検出用に手のひらが地面に向いている必要がある。これは後述の Smart 機能の為
- デフォルトのポーズは T と A どちらでも良い(後で変えられる)
リギング
ARPの機能でモデルにリグを追加する。
まずはじめに、ARPのリグ設定済 Armature をシーンに追加する。
Armature の追加について
Armature の追加方法として、いくつかのプリセットから選択して追加するか、もしくは Auto-Rig Pro: Smart 機能を用いて自動生成するか、の2つの方法がある。
- プリセットの場合はボーンの位置やサイズを手動でモデルに合わせる必要があり、
- Smart の場合はその工程を自動化出来るが、利用出来るのはヒューマノイドのみ
今回はヒューマノイドなので、この Smart 機能を使用してモデルの形状に合わせてArmatureを自動生成する。
Auto-Rig Pro: Smart
Smart とは Armature をモデルの形状に合わせて自動生成する為の便利機能。
前述の通りヒューマノイド限定。
Smart を開始する
Smart はモデル上の主な人体パーツの位置を示す為の マーカー をいくつか配置することで完了する。まずはマーカー設置前の段階として下記の手順を行う。
- オブジェクトモードにして人体オブジェクトを選択
- サイドバー (表示されてなければ N キー)の ARP を選択
- Auto-Rig Pro: Smart セクション > Get Selected Objects
- Full Body > OK
選択するオブジェクトは人体形状の検出用なので必要なものだけ選択すれば良い。
マーカーを配置する
次に体の各部位を示す 6つのマーカー を順次配置していく。
Armature は このマーカーを基準にしてメッシュ形状から自動配置 される。
マーカー配置の流れ
メニューは最初のマーカー追加ボタンである Add Neck (首) が表示されている状態。
Add Neck を押すと 3D Viewport 上に丸いマーカーが表示されるので、カーソルを動かして大体の首の位置まで移動させてから左クリックで配置確定する。
ボタン押下と同時にボタンは次の Add Chin(あご)に変化するが、マーカー配置前にクリックしてはいけない。必ずマーカー配置後に次のボタンを押すこと。
- まちがえても Ctrl + Z で元に戻せる
- 一度置いたマーカーは選択して G キーで移動出来る
- カメラは自動で正面図に切り替わっているが正面図のまま配置で良い
- マーカーは割と適当に配置しても OK
残りのマーカーも順次設置していく。Ankles まで配置出来たら次の作業へ。
Neck (首) → Chin (あご) → Shoulders (肩) → Wrists (手首) → Spine Root (股の上あたり)
→ Ankles (足首)
※マーカー設置の流れを理解する為の動画を用意してみた。そんな難しくはない。
マーカー追加以外の2つの便利ボタンについても解説しておく。
Restore Last Session ボタン
以前マーカーを設置したことがあるのであれば、同じ配置で復元してくれる。
マーカー配置後の手順からやり直したい時に便利。
Cancel and Delete Markers ボタン
現在実行中の Smart 機能をキャンセルし、配置途中のマーカーがあれば削除する。
なんかよくわかんなくなったら押す。
Turn と ミラーは触らずにそのままで良い
確定して Armature を生成する
最後のマーカーをセットした時点で Auto-Rig Pro: Smart セクション内の項目が下記の様に変化する。ここでは 人体ボーン構造の初期設定 (指や背骨の数等) と、Go! ボタンによる確定を行うことが出来る。今回触るのは赤枠で囲った2か所のみ。
Skelton Settings Presets
初期設定のプリセットは Skelton Settings Presets のドロップダウンから選択する事が出来るが、大体の項目は次のリファレンスボーン編集工程でも変更可能だと思う。
今回は UE4 Mannequin を選択する。
何故 UE5 で使うのに UE4 Mannequin にしたのかというと、UE5 Mannequin は無茶苦茶ボーン数が多くて自分の用途には過剰すぎるから。(背骨が6、首が2もある)
ARP Default と UE4 Mannequin の違いは背骨の数が3か4かの差ぐらい。
あとは背骨の曲がり具合。(Unity Humanoid なら ARP Default で良さそう)
Go! で確定
プリセットを選んだら他は触らずに Go! ボタンを押して Armature を生成する。
これで Smart 機能での作業は終了。
リファレンスボーン編集
Smart による Armature 生成直後の画面はリファレンスボーン編集状態となっている。
(一番上の Auto-Rig Pro セクションが閉じていたら開いておく)
ARPの Armature の中には リファレンスボーン と呼ばれる ガイド用のボーン構造 が含まれており、リグはこのリファレンスボーンの配置や設定を元に自動生成される。
リファレンスボーンにはボーンの分割数指定、コントローラーの追加など様々な設定を追加で加えることが出来るが、まず必要なのはそれぞれのボーンの配置調整。
ボーンの配置はモデルの形状や関節部分のトポロジー、最終的なモデルの用途によっても変わってくるので、この工程はメッシュ側の修正もしつつ何度も調整が必要になるが、ひとまずポーズが取れるようになるまでの全体の流れを解説する為に、おおまかな修正だけを行い先へ進む。
参考:
ボーンの位置合わせ
今回はおおむね良い感じで配置されているが、横から見ると頭から背骨にかけてちょっとズレているのでそこだけ直しておく。
修正方法は通常のボーン編集と同じで、各ボーンの部位を選択して G 等で動かしたり伸ばしたりするだけ。
左右対称のボーンを修正する場合の注意点
左右対称のボーンを調整する場合には、X ミラーのチェックが付いているのを確認すること。忘れて動かした後は、編集した片側のボーンだけを選択して RClick > 対象化 でも反映される。
肘と膝の曲がる方向について
IK で肘と膝の関節が曲がる方向はボーンの角度から自動算出される。
この方向については Show IK Directions を有効にしてボーンを選択すると、緑色のライン表示で確認することが出来る。(腕であれば上腕か前腕どちらかのボーンを選択)
デフォルトの配置では角度がついているが、角度調整したい場合はこの緑のラインを見ながら調整する。少し調整するだけで結構ラインが動いてしまうので、G でボーンを移動する場合は Shift を押しながら少しずつ動かすとやりやすい。
自動算出の為に関節部分にはわずかに角度がついている必要がある。
角度を付けずまっすぐにした場合、たとえ緑のラインが肘方向に向いていたとしても IK が正しく機能せず、腕が曲がらない場合がある。(Blender の IK の制限っぽい?)
余談:手首のねじれ対策
今回作ったモデルだと腕の関節が肘に寄ったまま手首を回転させると前腕が歪んでしまうので、この記事の後から出来る限りまっすぐにした。
ほかにもツイストボーン数を 3 に増やしたり、前腕のメッシュをプロポーショナル編集であらかじめ 90 度捻ったりとかで対策。
Limb Options
ボーンを選択してから Limb Options を押すと、各部位に対するオプション設定メニューが表示される。Smart で設定されていた背骨の数などもここから変更することが出来る。
- ある程度の部位毎なので、例えば上腕と前腕はどちらかに設定したら同じになる
- ここでの設定はミラーされないので左右対称の部位にも同じ設定をする必要がある
今回はデフォルトのままにするので触らないが、マニュアルのここら辺に細かく記載されているので詳しく知りたい場合は読んでみると良い。
※先ほどの肘と膝に関する話の中で少し説明した通り、この記事の後で腕の Twist Bones のみ 3 に増やしている。(Unity Humanoid の場合は 1 という制限があるらしい)
その他
方向を維持したままボーンの長さを調整したい時は、ボーンの Tail を選択してマニピュレーターで軸を引っ張る方が楽かもしれない。座標系はノーマルにする。
Match to Rig でリグへ反映する
現状こんな感じ。ほぼ Smart で生成されたままの状態。
調整がおわったら Match to Rig ボタンを押すとリグに反映される。
これでリギング作業は一旦終了。
画面はポーズモードでリグの各種コントローラーが表示されている状態になるはず。
問題なければ次のスキニングへ進む。
補足:Armature の削除について
Armature を選択し、Rig タブの一番上にある delete_arp ボタンを押すと削除出来る。
スキニング
リグが生成されてポーズモードになっているが、この時点ではまだスキニング前なのでポーズを付けることは出来ない。ARP のスキンタブにて バインド を行うことでスキニングが完了する。(ARP のバインドとはメッシュとボーンの紐づけ + 自動ウェイト付けのこと)
Auto-Rig Pro メニューの スキン タブに切り替える。
Binding Settings
このセクションでは 自動ウェイトエンジンの選択 および 自動ウェイト改善用のオプション を設定する事が出来る。今回は画像通りの設定で問題は無いと思う。
エンジンの簡単な詳細について
エンジン選択はどれだけ自動ウェイトでショートカット出来るか?だけなので、ウェイトに問題がある場合は自分で修正するでも良いと思う。
Heat Maps
デフォルト。Blender 標準の自動ウェイトと何が違うのかは良く分かってない。つながってないメッシュには弱くて不要なウェイトが飛んだりする弱点はあるが、性能が悪いわけではない。
Voxelized
服や装飾等、複雑なメッシュを含む場合はこちらを選ぶと良いかも…?らしい。
試したことがないので良く分かってない。
Voxel Heat Diffuse Skinning (addon)
addon と書いてある通り、こちらは有料の別アドオン。Voxelized の上位版。
(インストールすると選択出来るようになるが、ARP 専用という訳ではなく作者も別)
つながってないメッシュも綺麗にウェイト付けされるので服や装飾ありのメッシュに強い。
全体的に見て Heat Maps より良い結果になるかどうかはわからない。
特に指などの小さいパーツに対しては精度が落ちるので、結果に問題がある箇所は少し下のバインドセクションにある Selected Vertices Only を選んで、選択中の頂点 のみ Heat Maps で上書きするのが良い。
バインド
こちらも設定は画像の通り。
注意点として 体積を維持 のチェックは必ず外すこと(デフォルト ON)
この機能はゲームエンジン側で対応していない。
設定を確認したら下記の操作でバインドする。
- オブジェクトモードにする
- Shift を押しながらバインドするオブジェクト(複数可)、Armature の順に選択する
- Bind ボタンを押す
バインドが終わっても何の表示も出ないがこれでバインド完了。
バインドが終わればポーズが付けられる状態になっている。
問題なければ次のポーズ確認に進む。
バインド挙動の詳細
- オブジェクトのモディファイアーに rig という名前の Armature が追加される
- オブジェクトが Armature のコレクション配下にリンク複製される
- オブジェクトに各ボーンのウェイト用頂点グループが作成される
- 自動ウェイトペイントされる
補足:Unbind について
Bind ボタンの横にある Unbind ボタンは、バインド済のオブジェクトを選択してから押すと追加された Armature モディファイアーと頂点グループを削除してくれる。
ARP を削除する場合は、Unbind してから delete_arp ボタンを押すと完全削除出来る。
頂点グループの扱いについてだけ注意。
ポーズ確認
ポーズを変更してみる
ポーズモードに入り、コントローラーを何か一つ選択してから移動(G)や回転(R) すると、メッシュが連動して変形するようになっているはず。
足のコントローラーを移動で動かしてみるとこんな感じ。
移動 / 回転 のどれを行うべきかはコントローラーによって違う。
スケール(S) で動くような仕組みが入っているコントローラーも一部ある。
- 手のひら等の回転にはトラックボールモード(R, R)も便利
- 背骨などは複数選択、ピボットをそれぞれの原点にしてまとめて回転すると楽
ポーズは初期状態に戻せるので色々触って確かめてみるのが一番早い。
これまでの Edit Reference Bone > Match to Rig > Bind の流れは何度も繰り返し行うことが出来るので、何かしら問題があれば前の工程に戻って修正する。
ポーズをリセットする
ツール内にある Reset All Pose ボタンでポーズを初期状態に戻せる。
標準のやり方であれば A で全選択(またはリセットしたいコントローラーを選択)して、RClick > ユーザーのトランスフォームをクリアなどもある。
IK と FK を切り替える
IK と FK の切り替えも ARP のメニューではなく、ツール メニューにある。
例えば腕の IK / FK を切り替える場合、腕のコントローラーのどれかを選択してから Snap IK-FK を押すと切り替えが出来る。
初期ポーズを変更する
ポーズを変更してから Auto Rig-Pro リグ タブ内の Pose Tools セクションにあるレストポーズとして適用ボタンを押すと、初期ポーズを変更することが出来る。
このボタンを押してから Match to Rig を押す必要があるので注意。
あとなぜか FK モードに切り替わる場合があるので必要なら自分で IK に戻す。
ウェイトペイント
自動ウェイトで問題が出た箇所は手動でペイントして修正する必要がある。
細かい手動ウェイト調整は最後に行う。
再バインドすると手動で付けたウェイトは上書きされてしまうので、メッシュの編集、リファレンスボーンの編集で改善できる箇所があるのであれば、出来る限りそちらを先に行ってからの方が良い。特にリファレンスボーンの配置調整は重要。
ウェイトペイントはコントローラーではなく変形ボーンに対して行う。
現在はコントローラーのみが表示され、変形ボーンは非表示となっている状態なので表示を切り替える必要がある。
- オブジェクトモードに戻る
- Armature を選択して Armature のプロパティを開く
- ボーンコレクションの Deform (変形ボーン) の目玉アイコンのチェックを付ける
ビューポート表示の最前面にもチェックを入れる
試しに変形ボーンのみを表示してみた状態がこちら。
ウェイトペイント方法に関しては標準と同じ。
※ポーズモードで変形ボーンを動かしてもメッシュ変形しないっぽい?IK / FK のコントローラーでのみ動くように制限されてそう。
今回発生した問題を修正してみる
耳や目のあたりに意図しないウェイトが飛んでしまっているのでこれを直す。
本体とメッシュが繋がっていないので誤検知されてしまっている。
※Heat Maps はこういう刺しているだけの繋がってないメッシュに弱い
バインドエンジンを Voxel Heat Diffuse Skinning にすると問題解消するが、ここ以外は Heat Maps の方が良さげな結果だったのでウェイトペイントで直すことにする。
ここは head.x に 100% 追従するので簡単。
事前準備
ウェイトを見やすくする
ウェイトペイントオーバーレイでウェイト0 の項目をアクティブにしておく
これをするとウェイトが載っていない箇所が黒色になるのでわかりやすい
ボーン選択を有効にする
ペイント中に Alt + LClick でボーンが選択できるようになる
自動正規化を有効にする
ブラシ設定する
今回は ウェイト 1.0 / 強さ 1.0 で良い
ミラーモディファイアを使ってる場合
オブジェクトのモディファイアーの順番に気を付ける。ミラーとかは上にしてアーマチュアは最後。
ペイント
- オブジェクトモードにする
- Shift を押しながら アーマチュア > オブジェクトの順に選択
- ウェイトペイントモードにする
- Alt + LClick でボーンを選択する(今回は head.x を選択)
頭部の赤くなっていない箇所を塗りつぶしていく。
ウェイトペイントは頂点に対して行うので面じゃなくて頂点を塗る気持ちで。
F > カーソルを動かすとブラシサイズを変更することも出来る。
耳は頭にめり込ませているので内側も塗る。
ブラシ:前面のみのチェックを外し、減衰:透過 にするとメッシュを貫通させて塗ることが出来るが、間違えて関係ない頂点に塗ってしまわないよう注意。
頭部全体を塗り終わったら修正完了。
※ 逆に head.x 以外のボーンの頭部メッシュへの影響を 0 で消していく、でも良かったかもしれない。
エクスポート
Unreal Engine 向けに FBX 形式でエクスポートする。
マニュアルはここを参照
ここからアニメーションとゲームエンジン側での扱いによって分かれてくるのだけど、書いてる人にあまり知識がないので正しく理解できていない項目が多い。
スケールを合わせる
出力前に寸法を調整しておく。用途によるとは思うが実寸サイズにしておけばよさげ。
メッシュと Armature の両方を合わせて調整しておく。
この記事のモデルはモデリング時に調整済。
あと、モデルのスケールが小さすぎるとリターゲット時に問題が起こる可能性があるらしい。
Armature を選択する
エクスポート ファイルビューを開く
ファイル > エクスポート > Auto-Rig Pro FBX (.fbx)
※ サイドバーの ARP > Auto-Rig Pro: Export セクションからも可能
リグのタイプ選択とチェック&修正
エクスポートするリグのタイプを Unreal Engine / Humanoid にする。
続けて2つのボタンを押しておく
Check Rig
エラー確認のみ。問題なければOK
Fix Rig
下記の変更を適用する
- 腕と脚のストレッチを無効にする
- 体積を維持 を無効にする
腕と脚のストレッチ無効化については良く分からない…。ツール でいじることが出来るこれだと思うけど詳しくないので理由は不明。ゲームエンジンで問題があるのでいじっちゃいけない機能なのかもしれない。
体積を維持についてはバインド設定ですでに無効にしているはず。
有効化した場合は Blender 上では手首の捻じれ問題が解決するのだけど、ゲームエンジン側で使えない機能なので最初から無効化してポーズチェックした方が良い。
Rig タブ
各種詳細設定は画像の通り。
アニメーション タブ
今回アニメーションは入れていないのであまり触らない。
その他 タブ
-
スムーズ : 法線にするとUnreal Engine側で警告が出る(無害らしいけど)
分割法線について良く分かってないのでとりあえず面にした。 -
Apply Subsurf Modifiers : 今回のモデルはそもそも Subsurf 適用済なので意味ないけど、ローモデルとして出力したい時は無効にするのかな…?
-
三角面化 : FBX 化するときに三角面にするか、ゲームエンジン側で三角面化するかどうかの違いだと思う
エクスポート実行
最後にファイルの出力先を選んでエクスポート実行。
おわり。