Final IKを使ったVRChatでの多脚アバター作成及びアバター多脚化改変の設定方法

2023年12月31日日曜日

VRChat

t f B! P L

執筆者:雪村錬(VRCID:RenYukimura)

執筆時:2023年12月31日




こんな感じの動きができるようになるよ。


前提知識(説明しないこと)

・通常のVRCでのアバターアップロードの知識(Unity周り)

・Blender基本操作

・かぼちゃアバターを作れるくらいの知識

・画像編集ソフトの基本操作

・ModularAvatarの基本操作


使うもの

・Final Ik

・SpiderIK

・Blender

・ClipStudio等の画像編集ソフト

・Unity

・ModularAvatar


アバター自作の場合は項目4や7など適度に読み飛ばしてください。


Final IK

Final IKとは?

簡単に言うとUnityで使える動きの制御ツールで、VRCでも多脚アバターやペットギミック、ワールドで動かすNPCなどで使うことができます。

Final IKについての詳しい説明はこちらの記事が参考になりました。



どこで買えるの?

Unity Asset Storeで購入できます。

普段は99ドル。

Final IKは2023年12月31日現在50%オフセール中です。

この記事をしばらく後に見た場合は、サマーセール、ウィンターセール、独身の日セール、新年セールを待つのもありです。


SpiderIK

SpiderIKとは?

Final IKを使ったVRChat用多脚アバターの設定補助ツールです。

Final IKで使用できる、VRIKやFABRIKの複雑な設定を一括でやってくれます。

Final IKがわかる人も、手作業でのミスが減るので使うと便利です。


詳しい説明は作者さんがこちらの動画でしてくださってます(英語)。


多脚アバター設定の日本語説明は当記事で行います。


どこで買えるの?

無料です。

GitHubのこちらのページの右側のReleasesから最新版(記事執筆時v1.0.9)をDLして使用してください。


多脚ボーンの作成(blender)



図3.1 スコルピオメイドさんのサソリ部分のボーン構造




図3.2 多脚ロボの多脚部分のボーン構造。


図のように、増やす多脚の一対毎に、Armature直下に「Hips 1」「Hips 2」...と作っていきます。


Hips 2以降はHips 1をコピーすると良いでしょう。

副脚の根元の名前は必ず「Hips 数字」にして下さい。

Spider IKは名前の表記ゆれで上手く設定できなくなります。


そして副脚のHips 1の下にSubLegA.001.L~SublegA.004.Lを作っていきます。

このとき、脚を伸ばしていけば数字は自然につき、のちにボーンの対称化や自動ネームでLやR、もう片側の脚のボーンは自動で作られます。

後々のウェイト塗りも考えると、副脚のウェイトを一度塗ってから対象化した方が左右反対側も自動で塗られるので楽かもしれません。


SubLegは001~003は同じくらいのサイズにした方が後々綺麗な動きになります。

004はつま先分なのでとりあえず存在さえすれば気にしないで良いです。ウェイトを塗る塗らないもご自由に。


図3.2のロボの方はピストン機構も組み込んでいるので今回関係ない余計なボーンがあります。(紛らわしくてごめんね)


副脚のHips毎のボーン構造は図3.3を参考にしてください。




図3.3 副脚毎のボーン構造


ボーンができたら、スケールや回転はリセットしておきましょう。

特に回転はリセットして0にしておかないと、多脚の動きが捻じれます。


そしてそれが出来たら欲しい多脚の対の数だけHips 1をコピーして、副脚のウェイトを塗りましょう。


最後にFBXを出力したらいよいよunity作業です。

このとき、作ったのが多脚部分だけでも、通常のヒューマノイドボーンこと出力すると、ModularAvatarで簡単に多脚パーツの着せ替えができます。

(アバター衣装みたいな感じになる)


アルファマスクの作成

アルファマスク(透明にする箇所を指定するための画像)を作ります。

白い場所は不透明、黒い場所は透明になるので、

UVレイヤーの下に、真っ白なレイヤーを作り、二つのレイヤーの間にレイヤーを作り、透明にしたい箇所を黒で塗りつぶします。

これはunityに入れながら微調整するので、今はざっくりでも大丈夫。

UVレイヤーを非表示にして、白黒のアルファマスクのみ出力します。

マスクなので出力サイズは1kでも0.5kでも小さくて十分です。


unityの設定1

まずは通常通りにアバターのプロジェクトを作ります。

次にFinal IK及びSpider IKをプロジェクトに読み込んでください。

(UnityAssetStoreで買ったassetの読み込み方が2023年12月31日現在パッケージマネージャーからパッケージ:マイアセットを選びダウンロードしてインポートする方式に変わったらしいので注意)


アバターのインスペクターのAvatar DescriptorのLowerBodyのチェックは二つとも外しておきましょう。

動いたときに人の脚が変に動かなくなります。




図5.1 読み込んだアバター(テクスチャと髪のみ改変したセレスティアちゃん)


作ったFBXのリグ設定をします。


多脚部分が変なポーズになるので、リグのマッピングを正しくした後に、マッピングの下の方にあるポーズ▼を選び、リセットをかけます。

ここはアバター完全自作でも同じですね。


そして作った多脚FBXをアバター直下に入れます。

このあとに、アバター側の脚をマスクと透過で見えなくします。

手順4で作ったアルファマスクをインポートして、

消したいBodyのマテリアルをカットアウトにして、レンダーキュー2450(カットアウト)にし、マスクのテクスチャを置き換え設定で入れます。

このとき消しすぎたり、消しが足りない場合はマスクを微調整して描き直します。

マスクのテクスチャの入れ直しは、エクスプローラーからすると上書きが楽です。

unity上からやると自動でリネームされて同名ファイルの上書きができません。






図5.2 アルファマスクを入れたマテリアル




図5.3 見た目が出来てきた。


Final IKの設定

お待たせしました。

ここからFinal IKの設定です。

といってもSpider IKを使うので、

unity上部のツール→Scionzenos→Spider IK SetUpを選び、

ヒエラルキーに生成されたIK Setupのインスペクターから、Single PointとOnly Hipsを選び、

アバター部分に多脚のFBXを入れて、Constraint Targetに多脚のFBXの人のHipsを入れて、

Pairs Of Legsに多脚の対の数を入れて、

ステップ高さはメートル表記なので、0.1~0.2といった、多脚の足踏みの高さを入れて、

Set up IKをクリックします。




図6.1 IK Setupのインスペクター


次にヒエラルキー内に生成された、

Inverse Kinematicsから、

Pair 数 VRIKのSolver→Locomotionを設定していきます。

各値の詳しい意味はこちらの記事の解説が参考になります。



Foot Distanceが両足の幅で、unityで再生時に足が開き過ぎず、閉じ過ぎない丁度いい歩幅にします。

スコルピオさんだと0.6くらい、ロボだと0.5くらいにしてるので、それより小さいのが目安です。

Step Thresholdがどの程度の移動距離で脚を持ち上げるかで、0.3~0.4くらいがVRCの一般的なサイズなアバターだと良いかもしれません。

Angle Thresholdは上の角度版で、どの程度角度が傾いたら足を持ち上げるかです。55~65くらいで良いでしょう。

Root Speedは足の動きのカクカクさで、100~150程度で良いでしょう。大きければなめらかに、小さければカクカクと動きます。

Step Speedは足の動きの速さで、Root Speedの100分の1程度の数値を入れると自然な動きになります。つまり1~1.5くらい

ステップの高さを調整したい場合は、ステップの高さの山なりのカーブをクリックして設定してください。


多脚を着せる

ModularAvatarを使用してください。


unityの設定2

移動や座りのモーションがそのままでは人脚が不自然に飛び出ますので、

BaseLayerとを改変します。

といっても難しいことはせず、

BaseLayerのStanging,Crouching,Proneの中身を全て、

何も録画されてないDummyAnimationに差し替えるだけです。

これで余計な脚の動きがなくなりました。

なお、Sit判定に座ると破綻することが多いので、なんとかSit判定からは逃げてください。


この時多脚パーツ側の動きにより少し飛び出ることもありますが、そのときはアルファマスクの調整で対応しましょう。

また、Shaderのマテリアル設定を両面描画にして、liltoonなどの距離フェード→裏面を影にするにチェックを入れておくと、人と重なったときに体内を見られなくて良いです。


ここまで調整が上手く行ったら、アルファマスクを焼きこんでしまっても構いません(liltoon等の機能で可能)

このとき、脚が再度生えてしまった人は、輪郭線のテクスチャもアルファマスクを焼きこんだものに変えておきましょう。

そして最後にシュリンクで人脚を細くしておき、

人脚の見えないところのボーンスケールを全て0.1程度にしておけばShaderが上手く表示されない場合でも人脚が上手く隠れてくれるでしょう。

ボーンスケールを0にすると接触判定系がバグるのでお気をつけて。



デフォルト状態でカスタムできない場合は、

PochoさんのCACが無料で利用できます。


終わりに

今回は多脚部分のパーツのメッシュ作成は読者に任せる形になりますが、

そのうちboothに着せ替え用多脚パーツも置く予定ですのでよろしくおねがいします。


移動の速さにより、低速では綺麗に動いた動きが高速では破綻するなどもあるので、好みの数値は要調整です。


ではよき多脚ライフを。

QooQ