Away3Dでobj形式のモデルが読み込めない時の対処法

先日紹介したMagicaVoxelというソフト、高性能で大変重宝しているのですがひとつだけ弱点がありまして、

ズバリ「Away3Dだと吐き出したobjファイルが読み込めない」のですよ。

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ファイルが読み込めるはずです。

まだ読み込めない場合は?

ソースコードが悪い。


スポンサードリンク