VRChatのモデルをMMD(pmx)に変換する

Unity2022版
Blender, Unity, ツール等色々試した中で個人的に一番安定した方法を紹介します。

用意するもの
VRM Converter for VRChat
https://booth.pm/ja/items/1025226
VRM2PMXConverter V0.5
https://bowlroll.net/file/191067
VRM2PMX変換モデルの最適化
https://booth.pm/ja/items/1329577
準標準ボーン追加プラグイン
https://bowlroll.net/file/312176


1.VCCに必要なリポジトリを追加

VRM Converter for VRChatおよびVRMをVCCに追加します。
boothページのインストール方法 (簡易)を参照https://booth.pm/ja/items/1025226

2.プロジェクトにVRMを追加

VCCでUnityプロジェクトにVRMの0.110.0(重要)を追加します。
最新バージョンだとUnity2022では正常にエクスポートできませんでした。
VRM Converter for VRChatの40.1.1を追加します。
他に必要なものは自動で追加されます。

3.Humanoidリグの確認

アバターのHumanoidリグにToeが入っているかどうか確認します。
入っていない場合はFoot_endなどを追加、適用します。

4.揺れものを変換

Open Swaying Objects Converter Wizardを開き、
Physboneの揺れものをVRM Spring Boneに変換します。

Stiffness Forceは非常に大きな値が入っていることが多く、1/10した数値に変えると良い感じになります。スライダーが振り切っている場合は数値がおかしいことが多いです。
ここの変換は上手くいく場合と上手くいかない場合があり、駄目だった場合はそのままエクスポートし、PMXエディタで物理とジョイントを追加してください。

5.エクスポート

VRM0>Export to VRM 0.xでVRMをエクスポートします。
Export VRM file from VRChat avatarは使いません(物理が入っていると歪んだりおかしくなることが多いです)
モデルがTポーズでない場合は「T-Poseにする(unity internal)」を使い、
Title, Version, Authorを指定します。ここはPMX変換用途であれば適当で構いません。

6.VRM2PMXConverterでPMXに変換

VRM2PMXConverterを起動、Load VRM Fileで読み込みConvert to PMXで変換します。
Out Vroid Fxのチェックは外しておきます。
アバターによっては数分~十数分かかります。

7.PMXの修正

PMXエディタでエクスポートされたPMXを読み込みます。
プラグイン>User>VRM2PMX変換モデルの最適化を選び、変換を行います。
テクスチャが抜けていると変換時エラーになるので適当に単色のテクスチャなどを作って指定しておきます。
このプラグインは処理中に落ちることが多く、以下におすすめの設定を共有します。

「インデックスが範囲を超えています」や「オブジェクト参照~」のエラーが出て失敗した場合、手動で変換してやる必要があります。
センター、下半身、腰の親子ボーンを他のMMDモデル等を参考に修正し、UVの横スケールが3倍に引き伸ばされていることがあるのでUVエディタプラグインで修正します。

8.ボーン階層の修正

センターの親がArmatureになっているので「全ての親」に変更します。
腰と下半身の階層や親子が逆になっていることが多いので修正します。
ボーンの順番、親子がグルーブ>腰>下半身となるようにボーン名を修正します。
右足/左足ボーンの親は下半身、上半身ボーンの親は腰になっているようにします。

9.準標準ボーンの追加

準標準ボーン追加プラグインで準標準ボーンを追加します。

10.変形階層の修正

変換後の状態では腕IKを追加した際に動かないことが多く、変形階層を修正します。
基本的にはすべて0で構いません。

11.不要ボーンの削除

MMDで動かす際に邪魔になるので不要ボーンを削除します。
secondary~ArmatureなどUnityのGameObjectがそのままボーンに変換されたものが多く、不要な場合が多いです。
TransformViewで動かして確認しながら削除してください。

12.PMXデータの状態確認

ファイル>PMXデータの状態検証でエラーがないか確認します。
filterの△/✕を選択し、エラーが出ているものがあれば修正します。
ジョイントの接続剛体が片方無かったりするとMMDで開いた時に落ちることがあります。

MMDで開いて正常に動けば完了です。
お好みでToonやスフィア(matcap)を設定します。環境色は0.5に変更すると良いです。


エラーなど

・一部オブジェクトがエクスポート後に回転したりスケールがおかしい
Skinned Mesh Rendererの入ったGameObjectのスケールが1になっているのを確認してください。
Armatureが回転していたりスケールされている場合に起きることがあります。

・一部オブジェクトが原点にある
Mesh Rendererのものが原点にエクスポートされてしまうことがあります。
PMXエディタの頂点/材質マスキングなどを使用して移動して合わせるか、エクスポート前にSkinned Mesh Rendererに変更しておくと治ることがあります


いいなと思ったら応援しよう!