2018年04月26日

独自フォーマットのBlenderエクスポータのソースコードを公開

まだ開発中ですが、これまでの進捗報告と物的証拠を兼ねてエクスポータのソースコードを公開します。

exporter.py
※4/28追記:紛らわしい記述を削除したり、新たにコメントを追加するなどの修正をしました

※5/3追記: デバッグ実行時にセグフォが出たので一時的に公開を停止しています。マテリアルでメッシュを分割した際に割り当てた頂点インデックスが嘘っぱちなデータだったようです。。

※5/8追記: ↑が直ったので再度公開。


メッシュ描画とスキニングアニメーション以外ろくにテストしていないので、コードを参考にされる際はご注意ください。

開発中のスクリプトなので実行することはあまりおすすめできませんが、もし実行する場合はBlenderのテキストエディタにコード全文を貼り付けてAlt+Pを押すか、RunScriptボタンをクリックして起動してください。

.blendがあるディレクトリに「untitled.bin」というファイルを作成するので上書きには注意してください(glTFのバイナリと同じ拡張子なので事故るかも)。
なお、ファイルに未保存の状態でデータを書き出そうとすると、Blenderがインストールされているディレクトリにファイルを出力しようとするので、環境によってはパーミッションエラーになることがあります。

スクリプトを実行して問題が発生しても当方では責任を負いかねます。全て自己責任でお願いします。

posted by gency at 00:36| Comment(0) | Python

2018年04月12日

独自フォーマットでスキニングアニメーション

何ヶ月ぶりかなんて最早覚えてないけど、独自フォーマット開発を再開しました。
今回はアニメーションの仕上げをしましたよ。

test21.gif

LBS、デュアルクォータニオン・スキニング(DLS)ともに無事動きました。アニメーションクリップの読み込みも問題ないようです。なんか普通にモデルフォーマットぽくて感動。

アニメーションデータとスキニングは半年前にメッシュの描画ができたときには実装済みだったので、再開後はボーンの可視化を実装してノードの親子関係が壊れているところを直しただけでボーンアニメーションは動きました。
ボーンが動いてしまえば後はバインドポーズ行列を掛けるだけでした。
放置期間も長かったとはいえ、ここまでに1年もかかるとは思わなかった。。
独自フォーマットの前身となったglTFエクスポータを作り始めたのが去年の2月頃だったので、それも含めると1年2ヶ月ほどになります。なげぇよ。

これでもまだフォーマットが完成したわけではなくて、シェイプキーやスキニング以外のアニメーションなどが残っています。
一応シーンフォーマットなので、カメラ・ライトといったノードの書き出しもあります。
無駄にPythonスキルが上がることでしょう。

posted by gency at 02:59| Comment(0) | 3DProgramming