2007/09/26(水) [n年前の日記]
#3 [iappli][cg_tools] pac2.0に読み込ませるところでちとハマる
blenderでUV展開?の仕方がようやく判ったのでテクスチャを作成してblender上で読み込み表示して「おおー」と思いつつ、file → exportから、.bac、.tra というiアプリで3D表示するためのデータ形式(の前段階)を出力したのだけど。ポリゴン編集ツールという触れ込み(?)の pac 2.0 で、出力した .bac を読み込んだら、ウインドウに何も出てこない。むぅ。
◎ まず、UV展開らしき図が出てこなくてハマる。 :
出力された .bac と、.bac 内のフォーマットを解説してるPDF内のサンプルを比べたところ、どうやら blender から出力されたソレは、
blender上でテクスチャサイズを伝えられるところと言えば…。テクスチャイメージを読み込ませるところしか思いつかない。とりあえず、material でテクスチャを指定するときと同様に、256 x 256 dot の bmp を、テクスチャイメージとして指定してみたり。…この場合のテクスチャイメージは、UV/image editor ウインドウ中でbmpを読み込んだ場合のソレとは別管理なんだろうか。よくわからん。
この状態で出力したら、.bac のほうにも該当部分が出てきた。pac 2.0 で読み込んでも、UV展開図らしきものが表示された。
( Textures ( i2 256 256 ) )なる部分が存在しない。「テクスチャサイズはこのくらいですよ」という指定がないから、UV展開しようにもサイズが判らなくて表示されない、のかな。
blender上でテクスチャサイズを伝えられるところと言えば…。テクスチャイメージを読み込ませるところしか思いつかない。とりあえず、material でテクスチャを指定するときと同様に、256 x 256 dot の bmp を、テクスチャイメージとして指定してみたり。…この場合のテクスチャイメージは、UV/image editor ウインドウ中でbmpを読み込んだ場合のソレとは別管理なんだろうか。よくわからん。
この状態で出力したら、.bac のほうにも該当部分が出てきた。pac 2.0 で読み込んでも、UV展開図らしきものが表示された。
◎ 形状がめちゃくちゃ小さい。 :
pac 2.0 で読み込んだ際に、一応形状はポリゴン表示されるのだけど。めちゃくちゃ小さい。blender のデフォルト起動時のズーム指定そのままで作ると、異様に小さい値で出てくるっぽい。これは正解なんだろうか? pac 2.0 の解説PDF上のスクリーンショットを見る限りでは、ちょっとおかしい大きさなんだけど…。
blender 上で大きくすればいいか。と思って拡大縮小(Sキー)→10[Enter]をして10倍にしてみたが、まだ小さい。なら100倍はどうだ。…って、blender上で100倍にしたら、そもそもblender上で透視変換プレビューすらされなくなった。こりゃマズイ。
出力された .bac や、export plugin である ~/.blender/scripts/BacTraExp.py を眺める。大きさに関しては、おそらくは頂点情報である、
~/.blender/scripts/BacTraExp.py を開いて、pnt で検索。試しに修正。
実行したら「インデントが変だぞ」と怒られた。python のインデントは TAB じゃないといかんのか。あるいは他の行がTABだからソレに合わせなきゃいかんのか。ていうか、xyzzy の py-mode で編集するとスペースでインデントされちゃうんですけど…。まあ、M-x tabify してTABに変換すりゃいいけど…。と思ったら文字列指定字の空白まで TAB にされてしまった。これではいかんがな…。
ひとまず、上記の修正をした plugin で出力。pac 2.0 で読んだら、それっぽいサイズで表示された。…前述のとおり、ココだけ修正したのではマズイんだけど。
弄った後で気がついた。M3Dconverter (.bac → .mbac 変換ツール)に scale 指定があった。そっちで弄ったほうがヨサゲ。前述の修正はナシで。
blender 上で大きくすればいいか。と思って拡大縮小(Sキー)→10[Enter]をして10倍にしてみたが、まだ小さい。なら100倍はどうだ。…って、blender上で100倍にしたら、そもそもblender上で透視変換プレビューすらされなくなった。こりゃマズイ。
出力された .bac や、export plugin である ~/.blender/scripts/BacTraExp.py を眺める。大きさに関しては、おそらくは頂点情報である、
( Vertices ( coords ( pnt -1.500 0.000 0.000 ) 中略 ( pnt 1.500 3.000 0.000 ) )のあたりを変更すればどうにかなりそうな。
~/.blender/scripts/BacTraExp.py を開いて、pnt で検索。試しに修正。
--- BacTraExp.py.old Tue Sep 12 15:12:02 2006 +++ BacTraExp.py Wed Sep 26 11:02:12 2007 @@ -1323,7 +1323,9 @@ #write bac # MTHD : V3Vert.writeVertex def writeVertex(self, file): - str = (" ( pnt %s %s %s )\n"% (self.vert.co[0], self.vert.co[1], self.vert.co[2]) ) + # str = (" ( pnt %s %s %s )\n"% (self.vert.co[0], self.vert.co[1], self.vert.co[2]) ) + scale = 50 + str = (" ( pnt %s %s %s )\n"% (float(self.vert.co[0]) * scale, float(self.vert.co[1]) * scale, float(self.vert.co[2]) * scale) ) file.write(str) # MTHD : V3Vert.writeNormal頂点座標だけ 50倍して出力してる。たぶん、コレはコレでマズイ。形状データもそうだし、アニメーションをつけたときもそうだろうけど、translate 関係の数値が不整合になる予感。…でもまあ試しということで。
実行したら「インデントが変だぞ」と怒られた。python のインデントは TAB じゃないといかんのか。あるいは他の行がTABだからソレに合わせなきゃいかんのか。ていうか、xyzzy の py-mode で編集するとスペースでインデントされちゃうんですけど…。まあ、M-x tabify してTABに変換すりゃいいけど…。と思ったら文字列指定字の空白まで TAB にされてしまった。これではいかんがな…。
ひとまず、上記の修正をした plugin で出力。pac 2.0 で読んだら、それっぽいサイズで表示された。…前述のとおり、ココだけ修正したのではマズイんだけど。
弄った後で気がついた。M3Dconverter (.bac → .mbac 変換ツール)に scale 指定があった。そっちで弄ったほうがヨサゲ。前述の修正はナシで。
◎ アニメーションをつけてみたが :
pac 2.0 で .bac、.bmp、.tra を読み込んだ状態で PVMicro3.5.2J を起動して表示確認してみると、向きが違ったり、アニメーションの回転軸があさってのほうに向いてたりでハマった。うーん。
blender の場合、上方向がz軸で、奥方向がy軸なのだけど、そのせいで向きが違ってしまう模様。MascotCapsule は奥方向がz軸っぽい。ということで、blender上でモデルを作成する際に、寝そべった状態で作らないといけない予感。いや、フツーに作って最後に頂点を回転させる感じでいいのかなとも思うけど。
アニメーションは、pac2.0で読み込んだ状態で確認するのではなく、M3Dconverter で .mbac、.mtra に変換した後に、.mbac、.mtra、.bmp を PVMicro にD&Dして表示確認しないと正確に表示されないのかもしれず…。
blender の場合、上方向がz軸で、奥方向がy軸なのだけど、そのせいで向きが違ってしまう模様。MascotCapsule は奥方向がz軸っぽい。ということで、blender上でモデルを作成する際に、寝そべった状態で作らないといけない予感。いや、フツーに作って最後に頂点を回転させる感じでいいのかなとも思うけど。
アニメーションは、pac2.0で読み込んだ状態で確認するのではなく、M3Dconverter で .mbac、.mtra に変換した後に、.mbac、.mtra、.bmp を PVMicro にD&Dして表示確認しないと正確に表示されないのかもしれず…。
[ ツッコむ ]
以上です。