VRoid製VRMをIK2.0フルボディトラッキングに対応させる
ご近隣の皆様こんばんは。ご近所系VTuberおじさんのがそさんです。
今回はVRoid製VRMモデルをIK2.0フルトラッキングに対応させるための手順を解説します。
【注意事項!必ずお読みください】
*これは2023/7/01現在での手順です。VRChat、VRoid双方のアップデートにより対応方法が変化する可能性があります(確認でき次第追記します)
*本記事の手順を実施することによりレガシーIKでの動作に不具合が生じる恐れがあります。あらかじめご了承ください。
*本項で紹介するツールおよび手順について一切の動作保証いたしかねますこと、あらかじめご了承ください。
*各ツールの製作者に本項についての質問や相談を行うことは、各ツール製作者の負担となります。絶対にお控えください。
更新履歴
2022/08/08 【Blenderでの作業をどうしても回避したい人へ】という項目を追加しました。
2022/08/08 注意事項を改定しました
2023/01/10 なで肩修正の手順を最新の仕様に合わせて更新しました。また、参照する別記事の情報を追記しました。
2023/03/02 VRoid Studioのアップデートに伴い注釈を追記しました。
2023/05/14 一部記述の整理、アイトラッキングに関する作業の追記、一部参照記事の差し替えを行いました。
2023/07/01 一部記述の整理を行いました。
2023/12/25 現状のIKの仕様に合わせ、手順の見直しと更新を実施しました
2024/05/26 VRM Add-on for Blenderのアップデートに伴い一部注意事項に追記しました
必要なもの
Unity・VRCSDKについては前回の記事同様実施時の最新のものをご利用ください。
Blenderおよびアドオンについても上記の記事と同様です。Blenderのバージョンは最新でも問題ないとは思いますが検証はしていないのでその点ご容赦ください。
Blender(筆者のバージョンは2.93.1です)
Blenderアドオン
・cats-blender-plugin
・VRM Add-on for Blender(旧名:VRM_IMPORTER_for_Blender)
上記アドオンの導入方法はそれぞれのリンク先に記載があるのでそちらを参照ください。くれぐれも手順を確認せずにzipを解凍しないように。
【注意】VRM Add-on for Blenderのバージョンについて
2023/12/14現在、上記アドオンのバージョン2.16.0以降を利用している場合、このあと解説している作業の一部に問題が発生します。
導入の際はリリースページから2.15.26以前のバージョンをご導入ください。【2024/05/26追記】バージョン2.20.48にて本トラブルが改善いたしました。(該当issue)
やむを得ず最新版のものを利用する必要がある場合は、以降の解説に登場する「マテリアルをVRMから拝借する場合」をご確認ください。
以降は最新版のアドオンを使用すれば当該の問題は発生しないはずです。
*問題再発時に備えて、手順の記載は削除せず残しておきます。
Unityのプラグインや用意しておくと便利なアイテムもほぼ変わりませんが、Dynamicbone関連のプラグインについては不要になりました。
・VRCAvatarEditor beta
・【VRC想定】VRoid向け手のAnimation 15種類+着席用Animation 2種類【CC0】
・Avatars3.0 Vroid Layers
手順1.Blenrerへのインポート~ボーン修正前の準備
1.VRMモデルの用意
通常通りVRoidStudioからエクスポートしたVRMモデルを用意します。
なお、今回の話とはすこし逸れますが、髪の毛の揺れもの設定についてはこの時点で確認しておく必要があります。適切な値などがわからない場合は、以下の記事を参考にしてください。
【注意】エクスポートするVRMバージョンについて
VRoid Studio正式版v1.20.0よりVRM1.0でのエクスポートが可能になりました。
いちおうVRM-AddonはVRM1.0にも対応はしているようですが、今回の手順では未検証のため予期せぬエラーが発生する場合があります。いったんVRM0.0廃止まではVRM0.0でのエクスポートを実行したほうが無難かと思います。(このあとの作業工程的にもVRMのバージョンを上げるメリットはありません)
2.VRMのBlenderへのインポート~自動修正
前述の項で説明したアドオン導入済のBlenderに、エクスポートしたVRMをインポートします。
インポート後、下図赤線部のボタンを押してください。
出てきたメニューから「CATS」を選択
Fix Modelを実行する前に「Fix Model」右のスパナマークを押して
「Keep End Bones」を有効化
「Keep Upper Chest」を無効化
「Fix Model」を押して自動修正を実行しましょう。
3.リップシンク生成
CATSのメニューから「Visemes」を展開
「Viseme AA」「Viseme OH」「Viseme CH」それぞれに下図のいずれかのシェイプキーを設定
シェイプキー設定後「Create Visemes」を選択しシェイプキー生成
4.アイトラッキング用ボーン追加
アイトラッキング用のボーン追加を実行します。
アイトラッキングのメニューを展開し「Blink Left」「Blink Right」「Lowrid Left」「Lowrid Right」のプルダウンに下図の通りシェイプキーを当てはめて「Creare Eye Tracking」を押せば実行完了です。
*モデルによっては上記作業実行後エラー文が表示される場合がありますが現状無視しても問題が発生することはありませんでした。もしエラー発生したモデルでVRC上でアイトラッキングに問題があった場合は、別途Twitter(@gasoko0150)までご連絡ください。
これで準備は完了です。
余談:現在発生しているVRoid製モデルのIK2.0フルトラッキングでの問題と原因、対処方法による処理の違いについて
【2023/12/14更新】IK2.0のアップデートに伴い仕様が変わりましたので解説を修正しました。
【注】
本項目の内容はドキュメント等に記載されているものではなく、あくまで挙動に基づく推測である旨、ご承知おきください。
VRoidはもともと胸を張るような姿勢になっており、Hipボーンに比べHeadボーンが後ろに位置しており、Chest、UpperChestのボーンは後ろに向かって斜めに傾斜がついた状態で配置されています。
また、NeckボーンはHeadボーンよりも後ろに配置されており、前に向かって斜めに傾斜していることが確認できております。
VRChatではHeadからHipまでのボーンの奥行の座標をそろえることが是とされているため、上記のような構造の場合、それぞれ問題が発生します。
【Lock-Hipでフルトラにした場合】
Chestは反ったままUpperChestが急激に姿勢を補正し、現実の人体ではありえない位置から曲がってしまうような状態になります。男性モデルなどでIK2.0適用後胸が陥没したりする場合、原因は概ねこのせいです。
【Lock-Head/Lock-Bothでフルトラにした場合】
HeadがNeckの座標に合わせるように移動するため必要以上に顎を引くような姿勢になります。モデルの体型などによっては、首が伸びたり外れたりしているような見た目になります。
手順2.Hip~Neckのボーン修正
1.ボーン修正準備
右ペインの「Armature」を選択し、左上のプルダウンメニューから「Edit(編集)モード」を選択します
2.基準値のコピー
Neckボーンを選択した後「ボーンプロパティ(右下の骨のマーク)」を選択し、TailのY軸の値をコピーします。Z軸ではないので注意。
3.修正対象ボーンの数値変更
コピーした値をNeakボーンのHead(ややこしい)、ChestボーンのTailのY軸にペーストして上書きします。
ChestボーンのHead、SpineボーンのTailおよびHead、それぞれのYの値を0(Hipの奥行座標と同値)にします。
これで背骨のボーン修正は完了です。
手順3.FBXエクスポート
1.CATSのメニューから「Export Model」を選択します
2.エクスポート時以下の注意事項が出る場合は「Continue to Export」を選択します
3.エクスポートメニューにてパスモードを「コピー」に、前方を「-Yを前方」に変更、ファイル名を記入してエクスポートしてください。
これでBlenderでの作業は以上です。
手順4.Unityへのインポート~FBX設定
1.環境構築
必要なアセット、プラグインを事前に導入したUnityプロジェクトに、エクスポートしたFBXをドラッグアンドドロップでインポートします。
*現状のVRCSDKの場合、VCCを使用した環境構築が必要です!
VCCの導入手順等に関して、詳しくは以下の記事を参照してください。
2.テクスチャ―およびマテリアルの生成
インポートしたFBXを選択した後、inspectorの「Materials」タブの「Extract Textures」を選択しテクスチャを出力します。
テクスチャ―の出力が完了したら、今度は「Extract Materials」でマテリアルを出力します。
出力されたマテリアルはすべてStandardシェーダー、マテリアルカラーが薄いグレーになっているので修正します。
*使用するシェーダーによって調整箇所は異なります。シェーダーごとの調整箇所の違いについては割愛いたします。
liltoonについてはなるとさんがFANBOXで詳しく解説しているのでご参考にどうぞ
*衣装や髪の毛の色などをマテリアルカラーで調整している場合は、このタイミングで調整しなおしてください。
【マテリアルをVRMから拝借する場合】
VRM Add-on for Blenderの問題などによりFBXからテクスチャを取り出せない場合は、大元のVRMファイルからマテリアルを拝借するかたちで適用していきます。
【2024/05/26追記】バージョン2.20.48にて本トラブルが改善いたしました。(該当issue)
以降は最新版のアドオンを使用すれば当該の問題は発生しないはずです。
問題再発に備え、以下の手順は削除せず残しておきます。
通常の手順でVRMファイルをUnityにインポートしたのち、FBXファイルの「Materials」タブを選択し、該当箇所に必要なマテリアルをドラッグアンドドロップしてください。
すべてのマテリアルのD&Dが完了したら「Apply」を押してマテリアルを適用しましょう。
3.FBXの設定変更
FBXファイルの「Model」タブで「Read/Write Enabled」を有効化し「Blend Shape Normals」を「None」にします。
FBXファイルの「Rig」タブで「Animation Type」を「Humanoid」に変更します。
その後「Avatar Definition」の「Configure」ボタンををしてRigの詳細設定に移動します。
「Mapping」タブで適切でないボーンの適用状態がないか確認し修正します。
上記の作業が完了したら一度「Apply」を押しましょう。
「Muscle&Settings」タブでなで肩調整を行います。
ここまでの作業が済んだら「Apply」>「Done」を選択してRig設定を終了しましょう。
上記でFBXの修正は完了です。
*フルトラ設定「Lock-Head/Locke-Both」を利用する人向けの作業1
胸トラッカーの利用等でフルトラ設定を「Lock-Head/Locke-Both」にする必要のある方は、FBXのRig設定にて、追加で以下の作業を実行してください。
Chestボーン、Neckボーンの「Rotation」のXの値を0にする
Right Arm,Left Armの「Upper Arm」の「Rotation」のYの値を0にする
手順5.アバターセッティング~アップロード
*2023/05/14追記
1.scene配置
scene上に手順4の設定が完了したFBXをドラッグ&ドロップします。
2.アバター設定用コンポーネントの追加
scene上のモデルを選択し、インスペクタータブで「Add Component」を選択、検索窓に「vrc」と入力すると最上部に「VRC Avatar Descriptor」が出てくるのでこれを選択してください。
*「Body」や「Armature」ではなく、Hierarchy最上部のところを選択するように注意!下図のピンクで示している箇所がちゃんとFBXのファイル名と同じになっているか確認してください
3.視点調整
両目の間あたりに球が表示されるように「View Position」の座標を調整します。
4.リップシンク設定
リップシンクはここまでの手順が正しく実行されていれば「Auto Detect!」を押すだけで正しいシェイプキーが設定されます。
5.アイトラッキング設定
アイトラッキングを設定します。
【要注意】アイトラッキング用ボーンについて
この後の作業で目のボーンを選択しますが、Blenderの作業により
・もともとの目のボーン(Eye_L、Eye_R)
・アイトラッキング用の目のボーン(LeftEye、RightEye)
の2種類が存在しています。
もともとの目のボーンを参照するとアイトラッキングがめちゃくちゃになるので、目のボーンを選択するときは必ず「アイトラッキング用の目のボーン(LeftEye、RightEye)」を選択してください!
6.まばたきの設定
目とじのブレンドシェイプで瞬きを設定する場合は以下の手順で設定してください。
*フルトラ設定「Lock-Head/Locke-Both」を利用する人向けの作業2
念のため、FBXのRig設定で実施した数値調整をscene上でも実行してください。
7.ハンドサイン、表情設定
VRMConverterと異なり表情やハンドサインの設定は行われていないので、手動で実装していきます。一見大変なようですがここで作った表情設定は今後同じパラメーターで問題なければ同じ手順で作ったアバターにも使いまわすことが可能なので、頑張りましょう。
ハンドサインの設定にはがとーしょこらさん製作の以下ツールを使用します。
詳細な手順は以下の記事で解説しています。
8.揺れもの設定
揺れ物設定が必要な場合は以下の記事を参照してください。
ここまでできればあとはいつも通りアップロードして完了です。
お疲れさまでした。
Blenderでの作業をどうしても回避したい人へ
【注意!】現状、手順2の作業はBlenderなしでは実現不可能です。
手順1の修正作業のみで問題ない方に限り、以下の手順を実施してください。
【使用するツール】
VRMUpperChestRemover
*ダウンロード時Windowsセキュリティが警告を発する場合があります。
無視する、許可する等で回避する必要がございます。
なお、本ツールそのものは安全なものではございますが、当該操作は自己責任でご実施ください。
【使用手順】
1.VRoidStudioからエクスポートしたVRMを上記ツールにドラッグ&ドロップ
2.「【元のファイル名】_mod.vrm」というVRMファイルが同じフォルダ内に出力されるので、このファイルをUntyにインポート&VRMConverterで変換し通常の手順でアップロード
上記の作業をすることで下記画像左側と同等の結果が得られます。
この記事が気に入ったらサポートをしてみませんか?