Dev:JA/Ref/Release Notes/2.67/Python Nodes

提供: wiki
移動先: 案内検索

Python ノードは APIを拡張し、スクリプト作者が Blender のノードエディタでカスタムのノードシステムを、C コードを変更したり、trunk 用に変更の承認を受けたりしなくても使用できるようにします。現時点ではこの API の拡張は、主に外部レンダーエンジンが Blender 内部でノードベースのマテリアルを設定するのに使用されています。しかし、このノード API は非常に汎用であり、特定の用途に限定されません。どれだけ特定のノードシステムが使用されるかは、実装に完全に依存します。

このページは Python ノード用に追加された主な機能のわずかな概要にすぎません。ノードの基本セットのもっと詳細なサンプルはcustom_nodes.py テンプレートを参照してください。

サンプル

WIP Warning
Python ノード用の API はまだ変更・追加すべき議題となっており、以下に挙げられたプロジェクトは作業中と考えてください。これらは Pynode にできることを見せる単なるサンプルとして意図されています。


いくつかのプロジェクトはすでに pynodes API で使用が始まっています。

  • LuxRender は物理ベースのレンダーエンジンで、Blender とつなげることができます。来るバージョン1.3では Blender ノードエディターを使用したマテリアルを設定するノードインターフェイスを持つ予定です。
    • LuxRender のソースのカレントスナップショットはこちら
    • デモ動画:
LuxRender 1.3 Node editor and new features demo Jason Clarke 氏作


  • Blender2.67 pynodes geometry nodes addon.png
    "Geometry Nodes" は、生成的モデリングのワークフローの可能性を探り、API 用に実際のテストケースを作り出すための実験的アドオンの一つです。


タイプ

ノードタイプはオペレータやメニューなどの他の UI タイプ同様、アドオンから Python スクリプトで登録可能です。Pynode API は3つの新しい登録可能なタイプからなります。

  • NodeTree
ノードツリーはノード用のメインコンテナです。各ノードツリータイプはエディタのヘッダ内のタイプ選択ボタンの一部として表示されます。どんなタイプのノードツリーも Blender データコレクション(bpy.data)内に作成可能です。
  • Node
一つのツリーの中の各ノードは特定のタイプを持ち、描画やデータの設定、更新すべき反応を行うため、名前や多数の関数のような基本情報を定義しています。
  • NodeSocket
ソケットはツリー内のすべてのノードで共有されているコネクタタイプです。自身のデータを運び、必要ならノードレイアウト内でそれを描画できます。

カスタムプロパティ(Custom Properties)

上記3つのタイプはすべてカスタムプロパティ(英文)に対応しており、blend ファイルに自身のプロパティを定義し、データを格納できます。

カスタムプロパティの制限
現時点ではカスタムプロパティにはいくつか制限があります。特にカラーランプ(color ramp)やカーブ(curve)のような一般的に使用されるウイジェットをノードからは作成できません。また、他のデータブロックへのリンクにはデータパス文字列を使用して対処する必要があり、好ましい物ではありません。これらの欠点は明らかに必要だと分かれば確実にすぐ解決されることでしょう。


描画

ノードとソケットはそのプロパティのボタンをレイアウトシステムを使用して描画できます。これはちょうどパネルやメニューの描画のように働き、以前に Blender の UI について作業したことある人には非常に直観的な物です。