最近 libGDX というゲームフレームワークを触り始めました。
はじめての3Dゲームの開発にも挑戦しようと思っています。
チュートリアルをすすめながら libGDX で遊んでいたところ、ハマったのでメモです。
MagicaVoxel というドット絵っぽい3Dモデルを作れるツールがあります。
このツールで作成したモデルをエクスポートし、libGDX で表示しようとしました。
MagicaVoxel では obj 形式でモデルをエクスポートします。
右下の方にあるボタンを押すと、MagicaVoxel の実行ファイルがあるディレクトリ下のexport ディレクトリに出力されます。obj, mtl, tga の3つのファイルが出力されます。
この3つのファイルを libGDX で作成したアプリケーションから読み込めるディレクトリに配置し、AssetManagerで obj ファイルを読み込み表示してみると普通に表示されます。
ただし、実行テストでは obj ファイルのままでよいけれど、実際のアプリケーションでは fbx-conv なるツールを使って g3db 形式に変換すべしと書いてありました( http://blog.xoppa.com/loading-models-using-libgdx/ )。
fbx-conv を使って g3db 形式に変換し、表示させようとしたところ何も表示されませんでした。エラーメッセージもありません。
調べてみると、どうやら MagicaVoxel(0.94)がエクスポートするファイルがよくないみたいです。
以下の2つの操作をすることでモデルを表示することが出来ました。
- mtl ファイルのパレットファイルを指定しているところ、
map_kd
をmap_Kd
と修正する。(k が大文字)。 - mtl ファイルに
d 1.0
と書いた行を追加する。(マテリアルのopacityを1.0に)
mtl ファイルを修正したあとに fbx-conv を使って変換した g3db ファイルを読み込むとモデルが正しく表示できました。