げーむ開発徒然日記~怠惰のために勤勉~

Unreal Engineや3DCG制作について学んだことを記事にしていきます

CC3キャラクターの表情シェイプキーとフェイスリグを残し、Blender Auto-Rig Proのボディリグに統合する

 今回の記事はタイトル通りです。

 今回ご紹介させていただく方法は、Reallusion公式のチュートリアル動画やAuto-Rig ProとUE4との連携についての先人様のブログをいくつか参考にまとめたものです。

 こちらの方法を使うことによって、下記メリットが得られると考えられます。

・CC3キャラクターをBlenderにインポートしてもリギングされていないためすぐにアニメーション作成に取り掛かれないが、Auto-Rig Proの自動リグ生成によってこれを解消できる。iCloneなどよりBlenderでのアニメーション制作のほうが慣れている場合は特に推奨。

・フェイシャルリグはAuto-Rig Proの生成機能を使わず、CC3の表情シェイプキーとフェイシャルリグを統合させるため、Reallusionの強力なLive Faceアプリなどは引き続き使える(はず)。

・Auto-Rig ProはUE4やUnityなどのゲームエンジン向けのエクスポートに対応しており、これによってUE4やUnity標準スケルトンとほぼ同様の命名に自動変換してくれるので地味に嬉しい。

 ゲームエンジン側で自動でマテリアルなどを設定してくれるプラグイン(Auto-Setupプラグイン)はあるが、これを使っても標準スケルトンに沿った命名はなされない。ただしマテリアル設定に関してはAuto-Setupプラグインを使うのがよいと思われます。今回の手順はあくまでもスケルトンの入れ替えと、アニメーション作成などのためのみです。

・CC3で作成したヒト型キャラクターやそれ以外のソフト(Blenderなど)で作成したヒト型キャラクターを、Auto-Rig Proで作成したアーマチュアに統一することでリターゲティングが不要になったり簡単になる場合が多い。

CC3でのキャラクター作成~Blenderでのインポートと準備

CC3からエクスポートし、Blenderでインポートする

 ここは特に難しいことはしません。以下の設定でCC3からFBXエクスポートします。

f:id:raksul_01:20211218142514p:plain

 エクスポートされたFBXをBlenderにインポートします。

インポート時の設定はデフォルトのままでOKです。

f:id:raksul_01:20211218142837p:plain

Auto-Rig Proのための事前準備

 テンキーの1を押して正面から見ると、おそらく足がZ=0の面に設置していないことになっているので、アーマチュアを選択した状態で、足がZ=0にくるようにします

(X軸を示す赤色の線に合わせる)。

f:id:raksul_01:20211218143046p:plain

 その後、Aキーでアーマチュアとすべてのメッシュを選択した状態でCtrl+A→「適用:全トランスフォーム」をします。

 また、このままだとメッシュ内部に骨があって見えづらいので、以下のように「最前面」にチェックを入れます。

f:id:raksul_01:20211218143619p:plain

 次に、後で誤って操作しないようにするために各パーツのメッシュ(身体、服、靴、眼球、口、舌、髪の毛などすべて)それぞれに対して、頂点グループをすべてロックします。ちなみに、左クリックした状態でドラッグすると一気にロックできます。あるいは、下向きの「>」を押すと「すべてロック」というボタンがあります。

f:id:raksul_01:20211218144950p:plain

Auto-Rig Proによるアーマチュア・リグ生成とスキニング

アーマチュアの自動生成と修正

 キャラクターのメッシュをすべて選択した状態で、Auto-Rig ProのメニューからGet Selected Objectsを押します。

f:id:raksul_01:20211219114651p:plain

 すると、元のアーマチュアが非表示になりますが、後の作業のためにアーマチュアを再度表示します。

f:id:raksul_01:20211219115401p:plain

 ここからはAuto-Rig ProのSmart機能を使って、アーマチュアを生成します。Smart機能を使う際、首、アゴ、肩、手首、背骨のルート、足首のアタリをつけていくことになります。

 先ほどAuto-Rig Pro:Smart内のGet Selected Objectsボタンを押した後、メニュー内がAdd Neckなどのボタンに変わっていると思うので、そちらを押すとアタリをつけるためのマーカーが追加されるので、再表示した元のCC3アーマチュアをもとにアタリをつけていきます

f:id:raksul_01:20211219121522p:plain

 配置し終えたらGoボタンを押します。Auto-Rig Proのバージョンによってはこのとき、フェイシャルリグを生成するか聞かれますが今回はCC3のフェイシャルリグを統合することが目的なので生成しないようにします。

f:id:raksul_01:20211219121803p:plain

 すると、アーマチュアが自動生成されますが、元のCC3アーマチュアに対してずれているので各ボーンの位置を修正していきます。なお、手足などは左右対称に位置が移動されるので、片側のみでOKです。

f:id:raksul_01:20211219125709p:plain

足の3か所(leg_ref.l, foot_ref.l, toes_ref.l)

f:id:raksul_01:20211219130225p:plain

ひざ(thigh_ref.l)

重要!!必ずしもCC3アーマチュアの位置に合わせる必要はなく、間違った方向にまがらないようにすること。ひざはCC3アーマチュアよりもすこし前に出すような感じにするとよい。

f:id:raksul_01:20211219130457p:plain

腕(shoulder_ref.l, arm_ref.l)※正面視でも調整すること。

 ここもひじ関節に注意。画像よりも後ろ(画像上方向)にずらすとよいかもしれません。ボーン位置が適切でないと後で問題が発生しますが、後述するように修正することもできます。

 他のボーンと同様に、指のボーン位置も合わせた方がよいです。

UE4オプション)UE4標準スケルトンに合わせる

 UE4に持っていく場合は、標準スケルトンの仕様上、背骨の数を4つにしたほうがよいです。これをするにはいずれかの背骨(spine)を選択した状態で、Auto-Rig ProのメニューからLimb Optionsボタンを押して数を4にします。これはGoボタンでアーマチュアを生成する際にも設定できるのでそこで4つに設定していれば変更する必要はありません。

 さらに、ツイストボーンも追加した方がよいそうです。これをするには、腕のボーンを選択した状態で、Limb Optionsボタンを押してTwist Bonesを2~4にします。脚に関してはよっぽど左右のねじれが激しくなければ増やさなくてもよいそう。

(備考)Secondary Controllersについて

 なん氏によるブログ記事(AutoRigProの解説:その2 Smart編 - 当たったらどうすんだよ)より、Limb Optionsのほかにもセカンダリコントローラ設定ができますが、TwistコントローラはBlender独自仕様であり、ゲームエンジンにそのままエクスポートはできないためAdditiveのままでもよいそう。

リグの自動生成

 ここまでできたら、Auto-Rig Proのアーマチュアを選択した状態で、Match to Rigボタンを押します。するとリグがアーマチュアに従って自動で生成されます。

f:id:raksul_01:20211219131307p:plain

リグが上手く生成されない場合

 生成されたリグを見ると、脚は真っすぐですが、上腕や下腕のリグはねじれているように見えます。このようなときは肘関節のボーン位置などが原因のことが多いので、 Match to Rigボタンの上のほうにあるEdit Reference Bonesボタンを押してボーンを再度位置修正し、Match to Rigボタンを押してリグを再生成、という工程を繰り返します。

f:id:raksul_01:20211219133209p:plain

f:id:raksul_01:20211219132759p:plain

上は修正前(リグのねじれが激しい)、下は修正後。

自動スキニングする

  所望のリグが生成されたら、オブジェクトモードで最初にアウトライナーからメッシュをすべて選択し、最後にリグをShiftを押しながら3Dビュー上で選択した状態で、スキンメニューにあるBindボタンを押してしばらく待ちます。すると、Auto-Rig Proのリグに従ってメッシュが自動でスキニングされます。なお、Mesh Binding設定にてスキニングのメソッドをHeat MapかVoxelizedから選択することも可能です。

 ゲームエンジンに持っていく場合は「体積を維持」のチェックは外す方がよい。

f:id:raksul_01:20211219141459p:plain

 リグを動かしてみるとAuto-Rig Proのリグに従ってスキニングされていることが確認できますが、CC3のフェイシャルリグは動作しなくなっています。なので、これらを統合する作業に入ります。

Auto-Rig ProのリグとCC3のフェイシャルリグの統合

 まずはCC3のアーマチュアから不要なボーンを削除します。オブジェクトモードでCC3のアーマチュアを選択し、編集モードに切り替えます。

 サークル選択などを使って顔以外のボーンを選択して、Xキー→ボーンを削除します(胸にあるボーンも忘れずに削除)。

f:id:raksul_01:20211219142221p:plain

 オブジェクトモードに戻り、CC3の残ったアーマチュア(フェイシャルリグ)を選択し、Shiftを押しながらAuto-Rig Proのリグを選択し、Ctrl+Jでリグを統合します。統合後、フェイシャルリグがメッシュの内部に隠れますが問題ありません。

 次に、Auto-Rig Proの頭部のリグにCC3のフェイシャルリグが追従するようにします。ワイヤーフレーム表示に切り替えてCC_Base_Headボーン(CC_Base_Facialに隠れてます)を選択し、ボーン設定からc_head.xをペアレントに設定します。

ウェイト修正する

 今回は、髪の毛や服などすべて自動スキニングしたため高確率で修正が必要になります。そもそも髪の毛や服を自動スキニングしない方法もありますが、今回はすべて自動スキニングしたものとして修正の仕方の例を挙げておきます。

 前提として知っておくことは、Auto-Rig Proの命名規則として、プレフィックスのないものは基本、できあがりのスケルトンのボーンとなるもの、"c_"のつくものはコントローラです。なので、ウェイトはプレフィックスのないものにつけていくことになります。

・頂点グループhead.xで首以外を選択してウェイト1.0で割り当て

・首の頂点グループにまつげが含まれていたりするので首以外の部分をウェイト削除

・体メッシュ以外は、それぞれのメッシュに対して頂点グループメニューから「未ロックグループを削除」でOK

※基本的には、最初にロックしたCC3ですでにスキニングされたものだけを残すイメージです。なのでhead.xもすべてウェイト削除でよいかもしれません。

(備考)服のスキニングの別の方法

 こちらのツイートの方法を使えば、服は自動スキニングせずに身体メッシュから転送して対応できそうです。

UE4オプション)UE4-Aポーズにする

 CC3でもエクスポート時にAポーズを指定していますが、ここでいうAポーズとは同じAポーズでもUE4標準に近いAポーズを指します。

 厳密にいえば、Blenderでのリグ&アーマチュア再生成&CC3表情シェイプキー統合(要するに今回の方法)を用いないのであれば、CC3でエクスポートする際にUE4-Aposeを指定することができますが、今回の方法はBlenderで、かつ、AutoRig Proを使うことになるためUE4-Aposeでエクスポートは行わず、通常のAポーズでエクスポートしていることになります。そのため、AutoRig Proの機能を使ってUE4のAポーズに近づける必要があります。
 Set PoseでAポーズを選んでApply Pose at Rest Poseボタンを押した後に、Match to Rigボタンを押すことでUE4のAポーズに近いものとなります(Auto-Rig ProのAポーズはUE4のAポーズに非常に近い)。

(オプション)rootの子ボーンの追加

 rootに子ボーンを追加したい場合は、c_trajにペアレントすれば上手くいった。