Blenderのimport export plugin(Addon)を作るスタート地点

ご存知のようにBlenderのよいところは、機能の充実や情報が豊富なことである。しかも、オープン・ソースのため、その気になれば、痒いところには90%手が届く(それでもボクの頭で理解できないことはある)。実はこれはとても大事なことで、さんざん調べあげたところ、最後の最後にプロプライエタリによって壁を閉ざされることになったということは経験上何度もある。アセンブラ解析までしたことも1,2度ではない。もちろん、9.9割の確率で無駄に終わった。こんなときは閉鎖性の壁が自分の周りにあるようで途方に暮れる。所詮、独占元にコネがあるところやお金のあるところしか情報はもらえないのである(全て解決してくれないことが多いけどw)。幸い、今は大きく時代がかわりつつある。

ボクの仕事ではBlenderのExport pluginは一番使いたいし、作りたい機能である。改造しやすいのはWavefront .obj(.mtl含む)でこれをベースすればよいと思う。Wikipediaにもフォーマットが書かれているぐらいシンプルさが良いのだ。アニメーションには弱そうだが、COLLADA(xmlなのとSIDの曖昧さがツライ,日本の企業がかかわっているからw)のように複雑で曖昧ではないし、FBXのような閉鎖性(ヘッダーファイルがあると喜んでも、それに貴重な時間をかける暇はない)もない。wavefront .objのソースをプリントアプトして、ラインを引きながら解析すればすぐ理解できるのでオススメだ。余談だが、ボクはグラフィック業界ではCOLLADAような内容でjson形式にして、シンプルさを追求した汎用ファイルフォーマットが必要だと感じている。WebGLにも利用しやすいだろう。

場所はblender 2.64a(pathはunix系)を例にすると、
blender/2.64/scripts/addon/io_scene_obj/
である。これをフォルダごと、もってきて、リネームし改造をすればいい。

__init__.pyの内容を変更して、自分の好きな名前にして、カスタマイズスタートすればいいと思う。 各オプションのデフォルトを自分なりに変えて、それを動かしながらおこなえば開発の感覚がわかってくる。

注意としては 2.62から、基礎部分であるMatrixの互換性がなくなっている。BMesh(NGon)が2.63から入った。したがって参考にするコードは出来る限り最新版、もしくは2.62や2.63以降のもを参考にすること。書くまでもないが2.49以前は、やめたほうがいいライブラリからして異なる(強制はしないけどw)

参考:Quick Start Introduction on the Blender python API Reference
参考:Blender Python http://blenderscripting.blogspot.jp/
参考:Wavefront .obj .mtl http://en.wikipedia.org/wiki/Wavefront_.obj_file
参考:COLLADA http://www.khronos.org/collada/

PS
アニメーションがしっかりしている3DFormatではmd5Ogreも候補。これらのBlenderのExportも情熱を感じる。
PS
以下のようにGoogle Blocklyを使ってもplug-inが作れるようで面白そう。
http://pyppet.blogspot.jp/2012/07/blockly-in-blender.html

コメント

このブログの人気の投稿

日本でコンピュータサイエンスを学ぶ難しさ

UML tool Dia