見出し画像

FBXをVRMに変換したかった

VRM関連ツールを作ってました。

野望としてはこれに加えてFBXをVRMにするスタンドアロンアプリケーションを作れたら、揺れ物だけ我慢すればカスタムアバターがUnityなしで作れると思ってました。それが上手く行けば揺れ物設定を出来るだけ自動でイイカンジにするやつを練りに練って頑張る意味もあるかなー?という野望がありました。

野望の残骸

コレは一応限定条件で動くには動くものを作ったので、この場で供養します。限定条件とは、キッシュちゃんとリンツちゃんとリーバちゃんが、一応変換できたという内容です。変換できた。と言っても変換結果は酷い有様なので、詳細は同梱のReadme.txtをご覧頂ければと思います。(辛うじてキッシュちゃんだけは、使えなくもないかもしれません。)

ということで先述のとおり、結論としてはダメでした。以降は「やっぱりUnityでやろうね!」となった要点を綴っていきたいと思います。

FBXの読み込み

やはりFBXの読み込みがネックでした。私はFBXの読み込みを自前で組めるようなつよつよではないので、TriLibというアセットを使ってFBXの読み込みを試してみました。

コレ自体は凄くてブラウザで動くデモページも存在するほどです。

ですが、このデモページで試す限りでも、私の手持ちのFBXの半分程度が読めるか読めないか、といった具合でした。ここで言うFBXは人型アバターです。なお、現在アセットストアで公開されているバージョンである1.9.xよりもbeta版の2.0の方が人型アバターの読み込みとしては便利そうだったので、今回はbeta版の2.0を使いました。

テクスチャの読み込み

恐らくFBXからのテクスチャ参照パスが、FBXを直接開くこと前提の構成で公開されているモデルはそんなに無い、という気がしています。TriLibもWin10の3Dモデルビューアも、FBXからの相対パスが合っていないと当然開けないわけです。アプリケーションのターゲット層的に、これらを調べてファイルを再配置してから読み込むように、というのは無理があります。

Humanoid割当

VRMはHumanoidのモデルでないとエディタでも変換できません。エディタの場合はUnityの賢いHumanoid割当機能が使えますが、スタンドアロンではそうはいきません。TriLibでは割り当ての定義ファイルを設けて、それにボーン名を書き連ねていくことでHumanoid割当を行うようです。確実ではありますが、この方式で各種モデルのボーン構造(ボーン名)に対応するのは現実的ではありません。

Unityの賢い割り当て機能をもってしても、たまに誤認してツインテールを腕だと判断しているケースと出会ったことがあります。ワーストケースを考慮すると、Humanoid割当はやはり人間様のお脳でやらねばならないように思われますが、手動割り当て機能を実装したとしても、アプリケーションのターゲット層的に難しいですし、それが出来るなら人ならUnityでやれば良いよね。と思いました。

うにてい最強!

Unityと和解せよ

この記事が気に入ったらサポートをしてみませんか?