当たったらどうすんだよ

当たらなければどうということはない

AutoRigProの解説:その2 Smart編

はじめにおさらい

Blenderの有償アドオンAutoRigProを紹介・解説していく記事の第2段。
その1の記事は👇です!

https://kanianthi.hateblo.jp/entry/2020/09/12/214726

というわけで、その2です。

今回はヒト型キャラクタにAutoRigProを設定していきましょう。

Blenderのバージョンは記事を執筆時点で2.83または2.90を使用。
AutoRigProは2020年9月12日現在3.54.14が最新版です。

f:id:kanianthi:20200912234115p:plain

BlenderのLayout作業スペースでAutoRigProタブを選択したところ。一番上のパネルでRIG、スキン、その他と大きな機能の項目を選べる。

Smartの準備

この手の「一発リグセットアップ機能」は他のDCCにあるリグプラグインなどでも見かけます。あるいは…Adobeが買い取ったMixamoのセットアップも(MIxamoの場合リグではなくスケルトンを一発バインドするのですが)ご存じの方は多そうですね。

先に結論から言ってしまうと、AutoRigProのSmart機能「かなり使える」と言えます。もちろん、この後の微調整は必要ですが文字通り「かんたんな操作」でとりあえず欲しい位置にベーススケルトンを生成してくれるのは超便利です。

では、手順。

まず最初にキャラクタメッシュを用意します。
今回は某ゲームコンテスト用に用意したオリジナルキャラクターの「Nuts(ナッツ)」を使います。シンプルで四肢のバランスが伸び伸びしているため、ゲームエンジンに持って行った際に見映えのする動作が可能です。

f:id:kanianthi:20200912235434p:plain

キャラクタメッシュのトランスフォーム

☝はNutsのTRS(トランスフォーム)をプロパティパネルから確認したところです。
初心者の方はこういうところでハマりがちですが、必ずTRSはこのように「位置と回転はゼロ、スケールは1」になっていることを確認してください。

トランスフォームが入ったままだと正常にウエイトが入らなかったり、スキニングとは直接関係ないですがUV展開が正しくできなかったりなど様々な不具合の原因になるのでしっかり適用(ctrl+a)する癖をつけておきましょう。

また、このキャラクターの場合髪の毛メッシュ(Hair)だけは身体と別オブジェクトですが、たとえば頭部は胴体以下と別とか、腕だけ別とか、そういうパーツ分け(オブジェクトとして分離されている)をしていても大丈夫です。

Smart開始

それではあらためて、キャラクタのメッシュを選択します。パーツがオブジェクト分離されている場合はShiftですべてのパーツを選択しておきます。そのままGet Selected Objectsボタンをクリックします。

f:id:kanianthi:20200913105330p:plain

Add Chinまで指定したところ。

すると、TurnボタンとAdd NeckボタンがUIに出現するので首の付け根に◎を置きましょう。同様にして肩、骨盤と指定していき、最後にAdd Anklesで足首の位置を指定します。

f:id:kanianthi:20200913105600p:plain

Smart機能で足首まで位置の指定ができたところ

 

f:id:kanianthi:20200913105731p:plain

上から手の指を何本検出するかの指定。Voxel法による体の部位検出の設定、フェイシャルボーンを設定するか?の指定、ベーススケルトン作成ボタン

 

f:id:kanianthi:20200913110006p:plain

「Go!」した結果。自動的にReference Bonesが作成される。

f:id:kanianthi:20200913110220p:plain

Go!した結果2:ミトン形状の手や太い足首もかなりいい感じに検出してくれているのが分かる。

☝のスクショで示したように、AutoRigProはかなりイイ感じに骨格ボーンを生成してくれます。特に今回のような2本指でも平気で検出してくれるのはありがたいですね。

以上の操作でSmartを使った基本のスケルトン生成は完了です。

Edit Reference Bonesしよう!

続いてSmart後に自動的に入るEdit Reference Bonesでスケルトンの微調整を行います。ここで行う設定と調整によってリグの仕様がほぼ決まるので、うまくいかなければ何度でも行ったり来たりすることになります。

まずは、背骨の数を変更しましょう。

標準だと背骨は骨盤を入れて3本が生成されますが、UE4のHumanoidに設定を合わせると4本背骨が必要です。

f:id:kanianthi:20200913111338p:plain

背骨のチェーン(Limb)という。のどれかを選択してLimb Optionsから設定を行える。他の関節部位も同様。

☝のスクショで分かる通り、背骨のチェーンのどれかひとつの骨を選択しLimb Optionsから背骨の数を設定できます。ちなみにLimb(リム)というのは「一連の関節の部位」のことをそう言います。単なるボーンのチェーンと違い、LimbというときにはIKやFK、ツイストやその他のコンストレイントを含めた「リグとしての部位」を呼んでいることが多いように思います。

背骨の数を4つにできたら、続いて腕と足のツイストボーンの数を設定します。

f:id:kanianthi:20200913112510p:plain

腕のツイストボーンを2本に増やしたところ。標準だと1本(2分割)

腕と足はAutoRigProのデフォルトで2分割のツイストボーンは設定されています。しかし、後述しますがゲームエンジン出力用のキャラではデュアルクオータニオン(体積を維持オプション)が使えないため、手首のひねりで破綻しやすいことから腕はツイストを2本以上に増やしておくのが無難です。

なお、ちょっと不親切ですがLimb Optionsの設定は左右独立しているため、両腕について同じ設定を行う必要があります。これは脚も同様です。脚についてはツイストを増やさなくても(よほど激しい足のねじりポーズを取らない限り)大きな問題は出ないものと思います。

骨格の微調整

続いて各骨の位置や角度を調整します。

f:id:kanianthi:20200913113437p:plain

骨の微調整をするときは八面体とスティックなどを切り替えながら作業すると正確な位置に骨を置くことができる。

それでは骨格を微調整しましょう。
このとき、うっかり背骨や頭の骨をX0から動かさないように注意してください。

f:id:kanianthi:20200913114458p:plain

身体の正中線にある骨と鎖骨を調整しているところ

☝のように、正中線(体の中心を通る線)の骨から調整します。

骨盤の位置を若干下げ、肋骨を大きくしたら、残りの背骨をできるだけ等間隔にして側面から背骨の「S字湾曲」を形成します。

この時、実際の人体だと背骨は背中側を通るわけですが3Dモデルでそれをやりすぎると綺麗に曲がらなくなるので真ん中に寄せましょう。S字湾曲についても「立たせる」ことを意識しないと他からアニメーションをリターゲットする際に極端なポーズになりがちなのでやり過ぎ注意です。

f:id:kanianthi:20200913115337p:plain

☝鎖骨を調整しているところ。マニピュレータを使用。

鎖骨の調整では、ある程度人体に近づけて首の根元から伸びるようにするとうまくいくことが多いです。前後の位置も調整し、上腕に向かって素直に繋がる位置を探します。

Blenderでは慣れるとなんでもGで動かしたくなりますが、こうした作業ではマニピュレータが活躍すると思います。グローバル座標またはノーマル座標を使い分けると絶対座標とボーンのローカル軸に沿った編集を切り替えられるので便利です。

f:id:kanianthi:20200913115831p:plain

☝つま先の調整

つま先の骨はデフォルトの角度でも十分に使えますが、アニメーションをリターゲットすることを考えるとスクショのようにしておいたほうが無難と言えます。

また、足首の関節位置(くるぶし)はかなり低い位置に置いたほうが「説得力のある足首」になります。☝のスクショは足首を設定する前の状態です。

f:id:kanianthi:20200913120605p:plain

☝足首調整中。こうした調整はリグを生成して自動スキンを終えてから何度でも戻ってきて再調整する心づもりで作業するのが良い。

鬼門!四肢の位置とロール角設定

さて、これが難関です…。

f:id:kanianthi:20200913121011p:plain

AutoRigProのロール角度は腕と足の「チェーン角度」で決まる。

☝のスクショをご覧ください。

Blenderのボーンロール角度は編集モードからトランスフォームにある「ロール」で設定できるのが通常です。しかし、AutoRigProではこの設定を無視して「腕または足のつながっている角度」からロール軸を割り出す仕様なのです。

そのため、X脚やO脚では極端な位置にIKポールが設定されてしまうなどの問題が起きやすいです。また膝や肘をFKで回転させる際にも、モデルの設定とは違う角度で曲がることになりやすいため、慎重に作業する必要があります。

f:id:kanianthi:20200913121910p:plain

Show IK Directionsを使っているところ

股関節の位置はわりと体の側面に寄せることで綺麗に動かすことができますが、それをすると下肢がX脚状になってしまい膝の回転角度(ロール軸)がおかしくなってしまいます。そこでスクショにあるShow IK Directionsをチェックすると膝の向き(IKポールの角度)が表示されるようになるので、これを見ながら脚の角度を設定すると良いでしょう。

その結果、膝の関節位置が膝小僧の中心からズレることになり気持ちが悪いですが、本物の骨ではないので(ある程度は)大丈夫です。

f:id:kanianthi:20200913122555p:plain

おまけ:膝関節の位置を側面から

f:id:kanianthi:20200913122653p:plain

おまけ2:股関節(大腿骨の頭)の位置

f:id:kanianthi:20200913122904p:plain

同じようにして肘の関節位置も設定する。

キャラクタ初心者にとっては手探りが多くて大変ですが、何度でもやり直すつもりで作業すればひとつひとつの調整はさほど難しいものではありません。

むしろここで関節の位置をしっかり試行錯誤しないで、ウエイト調整にまい進するほうが「はるかに悲劇的」です。関節位置さえしっかり調整できていれば、ウエイト調整は基本の人体であれば30分もやれば十分な作業です。

AutoRigProでは「ワンボタンで自動ウエイトを入れたり解除したりできる」ため、うまくいくまで何度でもこの関節位置の調整を行いましょう。この時、必ず「Edit Reference Bonse」まで戻ることを忘れずに!

ついにリグ生成!

f:id:kanianthi:20200913123610p:plain

Match to Rigボタンの位置

各調整が終わったら…いよいよリグを生成します。

非常に簡単で、スクショのボタンをクリックするだけです。

f:id:kanianthi:20200913123954p:plain

リグを生成後に重要になる各UIに赤枠をつけた。

いとも簡単にリグが生成されました。このときアーマチュアのプロパティパネルから「ビューポート表示」の「最前面」にチェックを入れておくとキャラクタメッシュに埋もれたボーンをレントゲンのように表示できるので便利です。

また、AutoRigProに慣れたらセカンダリコントローラーを追加しても良いでしょう。
Twistコントローラーを追加するのがBest!と書いてありますが、通常はAdditiveまでで十分だと思います。また、ベンディボーンにAutoRigは対応していますが、これはBlenderの独自仕様であってFBXでエクスポートしたりゲームエンジンに持っていくことはできないので(ぼくのワークフローでは)使いません。

それと、これが最も大事なことなのですが、UE4やUnity対応キャラクタにしたいならば、必ずExportパネルからCheck Rig→Fix Rigを行ってください。

これがいったいなにをFix(修正)しているのかというと、ボーンのストレッチ(伸縮)機能をカットしています。ストレッチはボーンの「不均一スケーリング」で実現している機能なのですが、これを行うとFBXの仕様上骨の回転角度に影響を与えてしまうため、ゲームエンジンには持って行かないのが無難です。AutoRigProはこうした部分を自動化してくれているのも大変便利です。

また、繰り返しになりますがEdit Reference Bonesから、いつでも骨格の調整作業に戻れますので、ウエイトで悩むより関節位置を微調整するほうが「幸せになれる」ことを再度強調しておきますね。

スキニング

f:id:kanianthi:20200913125747p:plain

AutoRigProで独自スキンバインド(スキニング)を行う。

それではスキニング作業に入りましょう。
AutoRigProでも選択順序はBlender標準と同じで、まずスキニングしたい対象のメッシュを選択します。複数ある場合はShift選択です。次にリグを選択して☝のスクショにある「スキン」タブからBindボタンをクリックすれば完了です。

このときVoxelizeを使うと簡易ボクセル法によるAutoRig独自のウエイト設定が使えるようになります。このボクセルスキニングはパーツが分解されているキャラクタには特に有利です。ただし、指先などの細かい部分でうまくいかないことがありますので、そういうときはVoxelizeをオフにしてBlender標準のヒートマップウエイトを使う(特に設定することなく使えます)と良いでしょう。ちなみにヒートマップ法も十分に優れた自動ウエイトのアルゴリズムです。

なお、Specialsにある「体積を維持」はデュアルクオータニオンと言って非リニア変形を実現する機能で大変便利ですが、処理負荷が高いなどの理由でUE4をはじめとするゲームエンジンでは対応していません。ですのでこれもチェックを外しておきます。

f:id:kanianthi:20200913130639p:plain

バインドを行うと自動で頂点グループが生成されてウエイトが入る

f:id:kanianthi:20200913130854p:plain

☝キャラが動くようになった!

バインドを行うとポーズモードからキャラが動かせるようになっているのが分かります。好きなように動かしてみて、変形におかしな部分がないか確認しましょう。

もしもおかしい部分を見つけたら、ある程度の調整まではそのままリファレンスボーンを調整することで修正可能ですし、ウエイトを一度外したい場合にはUnbindボタンをクリックすることで「一発ですべての頂点グループを取り除くことができる」のでこれも激しく便利です。

f:id:kanianthi:20200913131404p:plain

変形ボーン(スケルトン)はボーンレイヤーの最後に格納されている。

骨の微調整だけではどうにもならない箇所については、最終的にウエイト調整を行うしかありません(モーフを使った補正は次回説明します)。

基本的にウエイト調整はこの変形用ボーンにしか行わないので注意してください。

最後に髪の毛オブジェクト

さて最後に、このキャラクタの髪の毛もバインドしておきましょう。
AutoRigProの自動バインドに任せても良いのですが、今回のように単純なキャラクタでは頭のボーンに単純バインドしてもらえるだけで良いので、すべてのボーンについて計算することは無駄と言えます。

f:id:kanianthi:20200913132008p:plain

Hairオブジェクトにhead.x頂点グループを作成した。

そこで☝のように頂点グループを名前「head.x」で作成します。
この名称はAutoRigProの命名規則で「.x」は身体の中心にある骨のことで、プレフィックスのない「head.x」は変形可能な頭のボーンの名前と一致しています。

ポリゴンの編集モードからaで頂点を全選択し「ウエイト1」でAssignすればウエイトペイントすることなくすべての頂点に最大値である1が入ったウエイトが入ります。

こうしたウエイト入れのことは、まったく変形しないウエイト調整であることから「リジッドバインド」と呼ばれています。ロボット関節では良く使う手法ですので知らなかった方は覚えておくと良いでしょう。

ここまでできたらオブジェクトモードに戻り、メッシュを選択してからShiftでリグを選択しctrl+pから出てくるペアレント設定で「アーマチュア変形」を選択すればHairがリグにバインドされます。

f:id:kanianthi:20200913132842p:plain

すでに頂点グループがある場合「アーマチュア変形」を設定するだけでメッシュがバインドされる。

f:id:kanianthi:20200913133116p:plain

☝いろいろできたー!の図

まとめ

以上の工程でAutoRigProのSmart機能を使ってヒト型キャラクターのリグを生成してスキニングし、動かせるようになるまでを一通り解説できました。

AutoRigProはこのほかにも便利な機能が満載されているので、解説記事はもう少し書くつもりですが「基本の基本」は網羅できたと思います。

それでは次回は、Remap機能を紹介したいと思います。