Dev:JA/Ref/Release Notes/2.79/PythonAPI
< Dev:JA | Ref/Release Notes | 2.79
目次
Blender 2.79: Python API
互換性がなくなる変更
bpy.data.xxx.remove()
関数のdo_unlink
パラメータのデフォルト値がFalse
からTrue
に切り替わりました。(44b691dc658)
データブロックポインタプロパティ
オブジェクトやマテリアルなどのように、カスタムプロパティにデータブロックへのポインタが格納できるようになりました。このため、データブロックタイプと共に PointerProperty
が作成可能になりました。
前方互換性
不運にも、この新しいカスタムプロパティタイプのおかげで、従来のコードの未知のプロパティで Blender がクラッシュするという深刻なバグが露呈しました。このバグは将来的には 15189baa52 で修正されますが、現存のリリースでこれを修正するのは不可能です。
つまり、新しいデータブロックカスタムプロパティを使用した .blend ファイルを、2.79より前のバージョンで読み込むとクラッシュするということです。
この問題についての詳細な技術情報は T51260 をご覧ください。
レンダーパス
レンダーパスが名前だけで識別されるようになり、type プロパティは削除されました。この変更の目的は外部レンダリングエンジンが従来の Blender で公開されていた31タイプのパスだけに限らず、任意のレンダーパスを生成し、Blender に返すことができるようにするためです。(4cf7fc3b3a4d),)
変更:
type
とdebug_type
プロパティがRenderPass
構造体から削除されました。
find_by_name
関数がRenderPasses
構造体に追加され、find_by_type
は非推奨になりました。
SceneRenderLayer
がカスタムプロパティに対応し、レンダーエンジンが自分用のレンダーパスを追加できるようになりました。
RenderEngine
に3つの新しい関数を追加。add_pass
: レンダリング中に Render Result にレンダーパスを追加するため、レンダーエンジンから呼ばれます。名前とチャンネル数、チャンネルを識別する文字(RGBA
など)、オプションで追加すべきレンダーレイヤーを指定します。update_render_passes
: これはレンダーパスを使用するレンダーエンジンによる実装が必要です。目的は与えられた現在のオプションによって生成されるパスの情報を、Blender に伝えられるようにすることで、これは各自のregister_pass
呼び出しによって行われます。register_pass
は update_render_passes から呼ばれ、名前、チャンネル、データタイプ(コンポジターの出力ソケットを決定するのに使用)を渡して生成されたパスの情報を Blender に提供します。
- 前述の31のパスタイプを表わす、31のパス名が予約されています。レンダーエンジンがこれらのパスを提供するかもしれませんが、旧パスタイプと関連付けられていると見なされる可能性があります(例えば、コンポジターのノード接続が予約されてしまうなど)。
その他の新しい API
bpy.types.ID.make_local()
。単一のIDブロックをローカル化します。(592e9e9245)
- 右クリックメニューへのエントリの挿入(と、そのエントリをクリックした UI エレメントからのデータの取得)。サンプルが
bpy.types.Menu
ドキュメントにあります。(d6963630d)
- ID プロパティ配列が Python バッファプロトコルに対応しました。これは、その配列の作成とアクセスを非常に効率的にします。(73a9ff0d2d4f)