2009年5月11日月曜日

etc - .protoとか(2)

初proto吐き。

MNRNのArmatureで実験。
↓こういうフォーマットで吐く。

//bdxutils.proto

package bdxproto;

// only 16 floats
message Matrix {
repeated float m = 1;
}

message Vec3 {
required float x = 1;
required float y = 2;
required float z = 3;
}

// bdxarmature.proto

import "bdxutils.proto";
package bdxproto;

message Bone {
required string name = 1;
required Matrix offset_matrix = 2;
required Vec3 head = 3;
required Vec3 tail = 4;
repeated Bone children = 5;
}

message Armature {
required string name = 1;
repeated Bone bones = 2;
}


・・・と、これが出来ました。

http://patsuko.net/pbtes/_armature.xml (いままで吐いてたXML : 37KB

http://patsuko.net/pbtes/armature.pb (今回吐いた、ほぼ同じ内容のPB: 17KB



結構軽くなってますね。

あと、書いたコード量も少なくなってます。

いままで、Xerces-C++ XML Parserで吐いていたんですが、初期化処理とかElementの名前の設定とか、ソースコード時にやっていたのですが、今回はタグの名前とか意識することなく、自動生成されたアクセッサで楽々です。メシウマです。

---------------------------

ちなみに日本発で、もっと小さくて速そうなMessagePackというのがあるようです。
つくばのACな方が作ってるのかな?
http://msgpack.sourceforge.jp/


BlenderはCとpythonで、いままで書いてた自作コンバーターがJavaだったから、迷わずpb選びましたが、
RubyとC#の実装があるので、今後使うことがあるかも。

0 件のコメント: