VRMとPMX変換の話

前回の記事でMMDで自分のアバター(VRM)をインポートするのにはPMXに変換する必要があると言いました

 

しかし、変換ツールがあったとしても仕様上、互換性がない場合もあります

今回はテクスチャが正しく表示されないという不具合に見舞われました

f:id:p062_UM:20210916033202p:plain


見ての通り右側の髪や服のテクスチャが反映されてません

Unityでシェーダーを変えてみたり、BlenderでUVをいじってみたり、PmxEditorをまさぐってみたり、かれこれ4時間近く解決策をMMD初めたばかりなりに模索しました

 

 

結果、解決策を編み出したので備忘録として書き記しておきます

 

 

まず、テクスチャが抜けている原因はVRMのテクスチャ反転のせいです

同じテクスチャの場所はそのままコピーしようという本来、必要なUVを減らせる便利機能なのですが、PMXに変換するとその機能は失われ、そこのUVが新しく補完されます

新しく補完されたUVはテクスチャが乗ってないのでこのような事態に陥ったわけですね

 

実はここまでの解説は僕の想像の話なので本当にこうなっているのかは謎です

 

 

そこで考えついたのはテクスチャを二枚貼るという単純な方法です

 

f:id:p062_UM:20210916034718p:plain

今見て思ったけどちょうど三枚貼り付けられるように設計されているように見えてきた

調べても全く出てこなかったけど想定されてたのか...?

 

 

PmxEditorでUVエディタのプラグインを導入し2つに分れたUVをいい感じにテクスチャと合わせます

 

f:id:p062_UM:20210916035247p:plain

これをすべてのマテリアルで行って本体へモデルを送信してエクスポート

MMDに戻ってインポートすると...

f:id:p062_UM:20210916035655p:plain

ちゃんとテクスチャが乗ってます!

やったね!