先日紹介したMagicaVoxelというソフト、高性能で大変重宝しているのですがひとつだけ弱点がありまして、
ズバリ「Away3Dだと吐き出したobjファイルが読み込めない」のですよ。
↑テクスチャが読み込めず、真っ白になってしまっているモデル
解決策
objファイルの標準仕様を把握してないため悪いのがAway3D側かMagicaVoxel側かはなんとも言えませんが、モデルファイル側をちょこっといじればどうにかなります。
テクスチャのtgaファイルをpngファイルに変換する
tgaファイルは3Dモデルなんかではわりとよく使われている形式なのですが、Away3DのImageTextureクラスはtgaファイルに対応していません。(なんでだよオイ・・・)PhotoshopでもGimpでもなんでもいいので適当な画像編集ソフトでpng形式のファイルに変換すればおkです
mtlファイルの項目を書き換える
例えばMagicaVoxelでobjファイルを書き出すと、一緒に書きだされるmtlファイルをテキストエディタで開くとこんな感じになります。
# MagicaVoxel @ ephtracy newmtl palette illum 1 Ka 0.000 0.000 0.000 Kd 1.000 1.000 1.000 Ks 0.000 0.000 0.000 map_kd palet.tga
はい、これの最後の一行、map_kd palet.tga の部分がテクスチャが読み込まれない原因です。
まず、先ほどの作業でパレットファイルをpngに書き換えたので、.tgaのところを.pngに直しましょう。
次に、map_kdをmap_Kd(kを大文字に変更)に直します。どちらが標準の書き方なのか、あるいはどちらも正しいのかは不明ですが、Away3Dは大文字と小文字を区別してファイル内のコマンドを解析するためmap_Kdと書かないとパレットファイルを指定しているのだと認識されないようです。
以上の2つの操作でFlash+Away3Dでobjファイルが読み込めるはずです。
まだ読み込めない場合は?
ソースコードが悪い。