3Dモデルを作成するPythonアプリケーションがあります。これらのモデルはすでにFBX、DAE、OBJなどとしてエクスポートできます。ほとんどの場合、パイプラインの次のステップはブレンダー内のモデルを修正することです。つまり、ブレンダー内のモデルをからインポートする必要があります。上記のエクスポート形式。
ただし、一部のBlender固有の機能は、これらのファイル形式で表現できません。これを解決するための明白なアイデアは、サードパーティの無関係なファイル形式ではなく、Blendファイルに直接エクスポートすることです。
これを行う方法を調査したところ、1つのアプローチのように思われる http://wiki.blender.org/index.php/User%3aIdeasman42/BlenderAsPyModule が見つかりました。 。ただし、これにはカスタムビルドのブレンダーが必要なようです。
ファイル形式のバイナリ仕様、特に および(投稿のATMに含めることを許可されていない他のリンク)
…明らかに可能です(面倒ですが)少し試行錯誤しながらエクスポート関数を書くこと。
ただし、これを行う前に:これはすでに行われていますか? Blenderの外部でブレンドファイルを作成するための既存のライブラリ/ APIはありますか?
コメント
- 質問、仕様はどの程度修正されていますか?
- ' DNAStructsなどについて話している場合、これは正式なファイル形式の仕様ではないという印象があります' 、それが通常どのように見えるかを示すだけです。ブレンドファイルは、構造化されたデータの整理というよりも、メモリダンプに似ています。しかし、私は' mは決して専門家ではありません。
回答
Blenderに直接エクスポートする方法がわかりません(複雑すぎるようです)が、 PLY / STL / etc ファイルをインポートすることはできます。次に、必要なすべての追加機能をスクリプト化します。
私の場合、元のCADプログラムを自由に選択できたので、PyModuleを介してBlenderで直接ビルドすることにしました。 GUIであり、外部のpython3とbpyモジュールのみに依存します。bpyモジュールは簡単に作成できます。既存のblenderインストール(ソースフォルダーから実行)から大幅に分離しておくことができます。
このコマンドを実行するだけです( $ HOME / srcがないことを確認してください):
git clone http://git.blender.org/blender.git && cd blender && git submodule update --init --recursive && git submodule foreach git checkout master && git submodule foreach git pull --rebase origin master && build_files/build_environment/install_deps.sh --with-all --skip-osl && sudo make bpy && cd .. && rm -rf blender && sudo rm -rf build_linux_bpy && rm -rf $HOME/src # this gets bpy python module
これも見つかりました: https://code.google.com/p/pyblenderfile/ しかし、正直なところ、あまりメリットは見られません。 ghすべてをインポートできるようにするため、bpyモジュールを使用して同じことを行うためのより良い方法を見つけました。
これは次のとおりです:
-blenderでビルドします(公式アプリケーションを起動せずに、Python経由でビルドします)
import bpy #build stuff bpy.ops.wm.save_as_mainfile(filepath="./objects8.blend")
-モデルをインポートします
import bpy bpy.ops.wm.open_mainfile(filepath="./objects8.blend")
私には最適です。 GUIでできることを再現するのにいくつか問題がありますが、それは主にBlenderにコード(imo)のひどいドキュメントがあるためです。それでも、Pythonで同等のコマンドをすべて直接呼び出し、bpyモジュールを使用して実行するため、すばらしいことができます。
コメント
- blenderの使用apiは以前使用していたアプローチでしたが、blenderで頻繁にAPIが変更され、' blenderにプラグインをインストールする方法を理解できなかったユーザーからのサポートリクエストの負荷のためにほとんど放棄されました。しかし、pyblenderファイルは、blendファイルの基本構造を理解するための読みやすいスタートのように見えます。ありがとう!
回答
blenderの外部にblenderファイルを書き込むための公式APIはありません。しかし、Blenderファイルを読む方法を書いた人もいます。私がPythonで見た、開いているのはBlender Aid https://code.google.com/p/blender-aid/
itだけです。 Blenderファイルを読み取り、あるファイルから別のファイルへのリンクに関する情報をデータベースに入力します。
この方法を選択した場合は、独自のスクリプトを作成してブレンドファイルを作成することをお勧めします。 。
回答
BAM(Bam Asset Manager)は.blendファイルを操作できます(必要なものすべてを抽出/パックできます。特定の.blend(ライブラリ、画像など)を1つのファイルにまとめた場合、そのコードを確認することをお勧めします。