2008年3月6日木曜日

blender - ファイルフォーマットを書き換えたい(7)

しばらく眺めてみて、物量的に全部やると数ヶ月かかりそうなので、急遽要るやつだけ吐くことに。
普段の作業を思い出すんだ<俺。
いつも他の.blendファイルからキャラ持ってくるときは、objectと、armをappendして、
armをobjectのparentにする。

しかも、そのobjectはmeshタイプで、object自体にはmeshがリンクされてるだけで、
meshにマテリアルとかがリンクされてる。(outlinerの表示によると)

つまりmeshタイプのobjectとarmatureのtreeだけ出力すれば、大体何とかなりそう。
っていってもobjectには膨大なデータが入ってるんだが…。

今日は何とかMVertとMColの出力まで出来た。
途中 blo_split_main が未定義だというリンクエラーが出たので、
readfile.h(←プロジェクトに入ってなかったので探して追加した)にextern~を追加したらうまくいった。

コードは、こんな感じ。ヘッダは関数の定義1個書いてるだけだから省略。
http://render.jp/blender/writeXML.cpp

で、出力はこんな感じ。見やすいように後から手作業で改行入れた。
ノードの命名規則は、blenderの構造体||変数名を小文字にしただけ。

<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
<blenderxml endian="v" version="245">
<object name="OBCube">
<mesh>
<mvert flat="3" mat_nr="255">
<co>
1,1,-1;1,-1,-1;-1,-1,-1;-1,1,-1;1,0.999999,1;
0.999999,-1,1;-1,-1,1;-1,1,1;
</co>
<no>
18918,18918,-18918;18918,-18918,-18918;-18918,-18918,-18918;
-18918,18918,-18918;18918,18918,18918;18918,-18918,18918;
-18918,-18918,18918;-18918,18918,18918;
</no>
</mvert>
<mcol>
17,17,17,0;17,17,17,0;60,60,60,0;0,0,0,0;62,62,62,0;0,0,220,255;
29,29,29,0;251,251,251,255;
</mcol>
</mesh>
</object>
</blenderxml>

0 件のコメント: