【Unity】【Blender】原神の配布キャラモデルをUnityに取り込んで遊ぼうと思ったら苦労した話
前置き
AIサービスが色々出てきた
↓
アニメーションに関するサービスを試そう
↓
原神が配布しているMMDモデルを使おう
↓
地獄を見た
これは後々の為の覚書。
問題点
・原神配布モデルはpmxファイル:Unityでは扱えない
→FBXファイルに変換する必要がある
・自分がMMD初心者&Blenderは初心者に毛が生えた程度:エラーの原因を予想出来ない
→ファイル変換やら、テクスチャ&マテリアル周りへの理解度が低い
方法
- Unity上でFBX変換する「MMD4Mecanim」(リンク先の上から4番目くらい)を使う。
- BlenderでPMXファイルを読み込んで、FBXで書き出す
上記のいずれかの方法を試す。
先に結果
MMD4Mecanimで問題ないモデルと、Blenderを経由してようやく変換がうまくいったモデルがあった。
MMD4Mecanim
リンク先で配布されている「MMD4Mecanim」を使わせて頂く。
詳しい使い方は他の方が書いて下さっているので、参考にしたページを貼る。
参考ページ
Processed pmx2fbx.
UnityEngine.Debug:Log (object)
MMD4MecanimImporterImpl:_pmx2fbx_OnExited (object,System.EventArgs)
System.Threading._ThreadPoolWaitCallback:PerformWaitCallback ()
この手法で問題なくUnityに読み込めたのは以下の画像のキャラモデル達(日本語の公式ページがダウンロード出来るキャラのみ)。
良き。シェーダーとかアニメーションで色々と遊びたくなってくる。
GetMMDModel:System.InvalidOperationException: There is an error in XML document (9, 20). ---> System.Xml.XmlException: '', hexadecimal value 0x08, is an invalid character. Line 9, position 20.
こちらではXMLドキュメントとしては扱えない文字がありますよ的な文句を言われた。
(そう言われましても、公式配布モデルをそのまま突っ込んだだけなんです……。)
ちなみにエラーによって変換が途中で終わっているので、以下の画像のようなFBXファイルになる。
日本語の公式ページからダウンロード出来る他のキャラモデルと、せっかく中国語のページからダウンロードしてきたニィロウと甘雨も真っ白だ。
(なんなら、最初は推しであるニィロウだけで良かったのに、この方法でうまくFBX変換が出来なかったから他のキャラモデルもダウンロードしてきたまである)
1つ1つのマテリアルやテクスチャを当てはめる力技も可能なのかもしれないが、正直なところ上手くいくかもわからないので、やりたくない。
こんな時のChatGPT先生(GPT4モデル)!に聞いてみたら、
と、親切に教えてくれた。
だからわざわざPMXエディタで無効な文字とやらを探してみたが、正直ちんぷんかんぷんだった。
中国で作成されたモデルだから、エンコーディングが違う故の無効な文字なのだろうか。
(本職の方々なら手軽に直せてしまうのだろうか? 有識者の方求む)
このエラーと向き合ってGWの貴重な一日の体力を使い潰したが、結局は直らなかった。
BlenderによるPMX2FBX
次の日、Unity上でFBX変換出来ないのなら、Blenderで変換すればいいだろうという事で、Cats Blender Pluginなるものを使わせて頂く。
導入から変換まではこちらの動画で解説してくれてる。
エクスポートする際のUnityならではの注意点について今回は割愛させて頂く。
(MMDモデルをFBXファイルに変換する上で必要ないので)
Blenderのバージョンによる問題点
上記の動画の通りに作業していると、「モデルの修正」部分で問題が起こった。
これが、
こうなった
こうなったらお手上げだ。Blender初心者に毛が生えた程度の実力の自分では匙を投げるしかない。
そう諦めそうになった時、UnityでPluginが正常に動かない時にどうしていたかを思い出した。
「なんか、バージョンが悪さしていた事が多かったよなぁ」
使用していたBlenderのバージョンは3.2.0だった。使っているPluginに比べて新しすぎるか。
早速、Blender Luncherで古いバージョンのBlenderをインストールした。
そして件の「モデルの修正」を行うと、
「勝った」そう確信した。
FBXファイルにエクスポートし、さあ、Unityへ!
……あれ? いつ髪の毛染めた? これはこれで清楚っぽさがあって可愛いけど……。
……また負けたのか?
……いや、ここはもう慣れ親しんだUnityで、手探りのBlenderではない。
こちらのフィールドだ。
テクスチャやマテリアルの紐づけがうまくいってないのだろう。
FBXファイルのInspector上で「ExtractTextures」と「ExtractMaterilals」を行う。
はい、勝ち。可愛い。
最後に努力の過程を貼る。
これで満足。
……いやいや、ここがスタートラインでした。
買ったけど使ってないシェーダーアセットやらアニメーションアセットを使って遊んできます。
整理して書くとすんなりここまで来たように思えますが、色々と紆余曲折したので、自分のような苦労をして欲しくないのでまとめました。
(助かったと思った方は「いいね」「フォロー」してもらえたら励みになります)
駄文読了ありがとうございました。
Discussion