BNDL(Blenderノード記述言語)

Tool

概要

BNDL(Blender Node Description Language)は、Blenderのノードツリーを人が読み書きできるプレーンテキストで表現するためのフォーマットとワークフローを提案するプロジェクトです。ノード本体、ソケットの接続、各種パラメータやユーザーが編集した値をテキストで記録・再構築できる点が特徴で、特にGeometry Nodes向けに「Release 1.0」が提供されています。従来の.blendファイルに埋め込まれたバイナリ情報に対して、差分管理、コードレビュー、CI連携、テンプレート化、手動編集やスクリプト生成といったワークフローを実現しやすくします。軽量で可搬性の高い形式は、ノード構成の共有や自動生成に有効です。

GitHub

リポジトリの統計情報

  • スター数: 1
  • フォーク数: 0
  • ウォッチャー数: 1
  • コミット数: 2
  • ファイル数: 2
  • メインの言語: 未指定

主な特徴

  • プレーンテキスト形式でノードツリーを表現
    ノード、接続、パラメータをテキストとして保存可能。人が読めて差分ツールで比較しやすい。
  • フルフェデリティ(ユーザー編集値を含む)
    デフォルト以外の値やカスタムパラメータを含めてエクスポート/再構築できることを目指す。
  • Geometry Nodes Edition(Release 1.0)に最適化
    ジオメトリノード特有のデータ構造に配慮した仕様で、実践的なノード編集ワークフローをサポート。
  • バージョン管理・自動化との親和性
    テキストベースのためGitでの差分管理、CIでの検証、テンプレート生成やスクリプトによる自動生成に適する。

技術的なポイント

BNDLは「ノードツリーを損なわずに文字列化・復元する」ことが技術的な核です。実装ではBlenderのPython API(bpy)を用いてノードツリーを走査し、各ノードの種類、ソケット(入力/出力)、リンク情報、各ソケットに設定された値やプロパティをシリアライズします。重要な設計要素は以下の通りです。

  • 表現の決定論性と順序性:ノードやリンクの出力順を一定に保ち、テキスト差分が意味を持つように順序付けを行う必要があります。ノードIDや参照は安定的に付与されることが望まれます。
  • 型と値の表現:FloatやVector、Color、Boolean、配列やマテリアル参照など、Blenderの多様なデータ型を可逆的に表記するための規則が必要です。外部リソース(画像や参照オブジェクト)は参照パスやGUIDで扱う設計が現実的です。
  • ノードグループとスコープ:ネストしたノードグループや複数のノードツリー間の参照をどう表すか、再インポート時に既存のグループと衝突しないように名前空間やID管理が重要です。
  • 拡張性と互換性:将来的なノードや仕様変更に備え、コメントやメタデータ、バージョンタグを埋め込めるヘッダを用意しておくと後方互換が保ちやすくなります。
  • 実践上の課題:ドライバ式やノード内に埋め込まれるスクリプト、バイナリ資産の扱いはテキスト化の難所です。ドライバや式はソースとして保存できるが、実行環境差異による再現性に注意が必要です。画像等は外部参照にして依存解決をCIやパッケージングに委ねるのが現実的です。

運用面では、BNDLを使うことでGitによる差分レビューや自動テストが容易になります。ノード構成のテンプレートをテキストで管理しておき、スクリプトからパラメータを注入して大量のバリエーションを生成するなど、プロダクションワークフローでの自動化や教育素材の配布にも向きます。実装は小規模なシリアライザ+パーサーとして始め、必要に応じてJSONやYAMLへの変換器、ビジュアル差分ツールとの連携を拡張していく設計が考えられます。

プロジェクトの構成

主要なファイルとディレクトリ:

  • LICENSE: file
    ライセンス情報(リポジトリ内での利用条件を確認してください)。
  • README.md: file
    プロジェクト概要、目的、簡単な使い方やスクリーンショット、リリース情報(Geometry Nodes Edition 1.0)などが記載されています。

(現状のリポジトリは最小構成で、実装やサンプルはREADMEを起点に今後追加される想定です。)

まとめ

ノード編集ワークフローの可視化と自動化に寄与する、テキストベースの実用的な試みです。

リポジトリ情報:

READMEの抜粋:

BNDL

The Blender Node Description Language (BNDL) exports and imports human-readable text descriptions of blender node trees

BNDL — Blender Node Description Language

Release 1.0 · Geometry Nodes Edition

image

BNDL (“Bundle”) is a plain-text format for Blender node trees.
It captures every node, connection, and parameter — including user-edited values —…