2017/09/26(火) [n年前の日記]
#1 [pi3d][python][raspberrypi] pi3dでeggを使う際の注意点
pi3dで、複数のテクスチャ画像を使っているeggモデルデータを表示しようとすると、テクスチャが一枚分しか反映されなくて悩んでいたのだけど。
正常に描画される _pi3d_demos内の egg の中身を眺めているうちに、なんとなく原因が分かってきた。
ちゃんと表示されるeggデータは、どうもテクスチャ画像毎にポリゴン群をグループ化しているようで。例えば以下のような感じでデータが並んでる。
対して、blender + YABEE でエクスポートした、テクスチャがちゃんと反映されないeggは、テクスチャ毎にグループ分けなんかしてなくて。
Panda3D SDK の pview でプレビュー表示すると、後者のeggも描画されるので、おそらく Panda3D の eggフォーマットとしては後者もサポートされていてしかるべき、なのだろうと想像するのだけど。
ただ、pi3d の場合、OpenGL ES を利用するライブラリだから、テクスチャ画像毎に描画していかないと描画パフォーマンスが出ない等の理由で、あらかじめデータ側で、テクスチャ別の並びで整理整頓しておいてくれないと困る、てな事情でもあるのかもしれない。
でもまあ…。
ちなみに、blender からエクスポートした obj + mtl は、マテリアル別=テクスチャ別にポリゴン群がまとまって並んでいるので、pi3d が egg に望んでる仕様 ―― テクスチャ別にグループ分けして並べろ、的な仕様は、obj + mtl の場合既に満たされている可能性が高い。 *2
正常に描画される _pi3d_demos内の egg の中身を眺めているうちに、なんとなく原因が分かってきた。
ちゃんと表示されるeggデータは、どうもテクスチャ画像毎にポリゴン群をグループ化しているようで。例えば以下のような感じでデータが並んでる。
テクスチャAを使ってるグループ ポリゴン群データ グループ終わり テクスチャBを使ってるグループ ポリゴン群データ グループ終わり テクスチャCを使ってるグループ ポリゴン群データ グループ終わり
対して、blender + YABEE でエクスポートした、テクスチャがちゃんと反映されないeggは、テクスチャ毎にグループ分けなんかしてなくて。
グループ このポリゴンはテクスチャC このポリゴンはテクスチャB このポリゴンはテクスチャC このポリゴンはテクスチャA グループ終わり
Panda3D SDK の pview でプレビュー表示すると、後者のeggも描画されるので、おそらく Panda3D の eggフォーマットとしては後者もサポートされていてしかるべき、なのだろうと想像するのだけど。
ただ、pi3d の場合、OpenGL ES を利用するライブラリだから、テクスチャ画像毎に描画していかないと描画パフォーマンスが出ない等の理由で、あらかじめデータ側で、テクスチャ別の並びで整理整頓しておいてくれないと困る、てな事情でもあるのかもしれない。
でもまあ…。
- pi3d は、obj + mtl を読み込むことでも、3Dモデルデータの描画ができる。
- pi3d_demos の中にも、obj + mtl が結構入っている。eggしか使えないというわけではない。
- eggを使わないなら、Panda3D SDK のインストールも不要。
ちなみに、blender からエクスポートした obj + mtl は、マテリアル別=テクスチャ別にポリゴン群がまとまって並んでいるので、pi3d が egg に望んでる仕様 ―― テクスチャ別にグループ分けして並べろ、的な仕様は、obj + mtl の場合既に満たされている可能性が高い。 *2
[ ツッコむ ]
以上です。