J3OとXMLExporter/Imporer

ひさびさの更新。

3DCGArtsというCG投稿サイトで7/28に開催される獣人祭の出品作品作ってました。
http://www.3dcg-arts.net/member/5289

これが終わると、JME(jMonkeyEngine)のSDKのドキュメントや動画を観てSDKに付属するツール、SceneExplorerやTerrainEditorをいじったりしてた。

で、このSDKの一部であるSceneExplorerなどでは、J3Oファイル(Blenderから出力し、最終的にはJMEに最適化されたファイル)を視覚的に直感的に編集することが出来るのだが、これらはすべてマニュアル操作で行うものだ。

マニュアル操作は再編集が非常に手間がかかる。例えば、編集中のJ3Oファイルの元となったBlenderファイルをBlenderで再編集した場合、その変更点を反映するためにJ3Oファイルに変換すると、マニュアル編集したデータはすべて消えてしまうので、再び同じマニュアル編集を行わなければならない。

マニュアル編集は最初の一度ならいいが、何度も繰り返すとめんどくさいし、間違いなどが紛れ込む恐れもある。だから、これらを防ぐために自動処理でできることはなるべく自動処理に任せるような仕組みを作る必要がある。

これらを実現する第一歩として、以前、BlenderファイルからOgreXMLに変換、OgreXMLからJ3Oファイルに変換する処理を自動化する仕組みを作った。

今回はそれをさらに進めて、J3OファイルをXMLへ出力、逆にXMLからJ3Oファイルに変換する処理を実装した。ソースコードはこちら。以前のOgreXMLからJ3Oへ変換する処理とマージしている。これらの処理はJME APIの提供するXMLExporterとXMLImporterがあれば苦無く実装できる。

で、今回の新機能が実際に役に立つかはまだよく分からない。今回作ったツールを利用して、マニュアル操作する前と後のJ3Oファイルからパッチファイルを作り、そのパッチが正確に反映するような仕組みを今考えているところだ。

以前、XQueryUpdateというXML技術のアプリ、xqillaをインストールしたのだが、あれが使えるといいのだが。
http://xqilla.sourceforge.net/HomePage

ちなみに、JME SDKの右クリックメニューにTools > Diff patchみたいな項目があるが、ここでいうパッチというのは完全にdiffツールのパッチ機能だ。テキストファイルしか扱えないのでバイナリファイルのJ3Oファイルは対象外である。もともとdiffのパッチ機能ってその仕組みからしてちょっと懐疑的なのであまり使う気は無いのだけど。

 

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です