FBXファイルを実行時(ランタイム)にインポートする方法

前置き

いま流行りのバーチャルユーチューバー(VTuber)になりたい!
っていう人も多いでしょう。
3Dアバターモデル読み込んで顔認識で動かせるアプリはすでに「faceVTuber」「Hitogata」などがフリーで公開されてきていますが…自分で作りたい。

FBXファイルはUnityエディター上では簡単にインポートできますが、ランタイムでFBXファイルを動的にインポートする機能はありません。
手前で作れればいいのですが、膨大な時間と労力・知識が必要らしいです。
なのでまず最初に、既存のライブラリ、アセットがこの世に存在するか調査します。

読み込みの検証の3Dアバターモデルとして「東北ずん子」「サファイアートちゃん」を使用します。

目次

1. Unityアセット/ライブラリ

1.1. TriLib - Unity model loader package

費用:有料 $25
ライセンス: Asset Store Terms of Service and EULA

40種類以上のファイルをランタイムで読み込み可能。
マルチプラットフォーム対応。

デモを実行し東北ずん子の読み込みを行おうとしたところ、以下の例外エラーが出ました。

[FBX-DOM unsupported, old format version, supported are only FBX 2011, FBX 2012 and FBX 2013]

対応するFBXはFBX 2011、FBX 2012、FBX 2013のみのようです。

サファイアートちゃんでは読み込みはできたものの、頭部の頂点がぐちゃぐちゃでした…
今回は難があるようなので使わず。

1.2. FBXImporter

費用:無料
ライセンス: MIT

DLLをPluginsフォルダに入れて、エディターを再起動。
適当なスクリプトに以下のように記述するだけで読み込みできます。

GameObject model = ModelImporter.Importer.Import(Application.dataPath + "/" + ファイル名 + ".fbx");

オブジェクトのマテリアルは(Instance)表示のインスタンスマテリアルです。
シェーダーの選択とテクスチャの読み込みと適用は手前で設定する必要があります。

1.3. VRM

以上の通り、3Dアバターモデルを取り扱うにはハードルが多いです。
問題点として

  1. 3Dアバターモデルに決まった階層構造、命名規則がない。モデリングソフトとモデラーに依存しており、動作に対応する箇所の紐付けが困難。
  2. Unityランタイム(実行ファイル)でFBXファイルを読み込む機能がない。 外部のライブラリでFBXファイルを読み込むことはできますがRig、ボーンが読み込めないため人形として動かすことが不可能。

悩みながら作業をしていたところ、4/17にドワンゴからVR向け3Dアバターファイルフォーマット「VRM」が公開されました。
さらにUnity向けにUniVRMもUnity Packageで提供されています。
さらにさらに、RuntimeLoaderデモも提供されています。やったぜ。

このVRMがVTuber業界の3Dアバターモデルのデファクトスタンダードになりそうです。

Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account log in.