元記事:Python API - Blender Developer Documentation
Blender 5.3では Python API の追加が UI、GPU、ウィンドウマネージャ、アセットライブラリに行われました。色管理では標準の interop_id 識別子が追加、そして OpenEXR と opentimelineio が、ビルトインモジュールとして利用可能になりました。
色空間が名前と共に「interop ID」を保持するようになり、Image.colorspace_settings.interop_id としてアクセス可能になりました。
これらは Color Interop Forum で定義された標準的な識別子であり、これにより、どのモダンな OpenColorIO コンフィギュレーションとも互換性のあるコードの作成が可能になります。
また、別の OpenColorIO コンフィギュレーションで作成された blend ファイルのアセットを読み込み、または追加する場合の互換性も改善しました。ファイル読み込み時、interop ID が利用可能な場合は、それに基づき色空間の名前が更新されます。なお、既存の name プロパティは維持されるため、Python API の後方互換性は保たれています。
settings.name = 'Non-Color Data' # Old
settings.interop_id = 'data' # New
settings.name = "sRGB" # Old
settings.interop_id = 'srgb_rec709_display' # New
if settings.name == 'sRGB' # Old
if settings.interop_id in {'srgb_rec709_scene', 'srgb_rec709_display'}: # New
ライブラリの依存関係を更新、既存と新規依存に対応する新しい Python モジュールを公開しました。Python 開発者は下記のモジュールが利用可能です。
OpenEXR - OpenEXR Python モジュールのドキュメント(英文)を参照してください。opentimelineio - OpenTimelineIO Python モジュールのドキュメント(英文)を参照してください。Python API によるエクステンション定義のアセットライブラリの作成と調査が可能になりました。
asset_libraries.new(): 新しい remote_url と extension_id 引数により、リモートとエクステンション定義のライブラリに対応。UserAssetLibrary.extension_id: そのライブラリを定義するエクステンション。UserAssetLibrary.is_available(): そのライブラリが有効か、エクステンション由来か、そしてそのエクステンションのリポジトリは有効かもチェックします。AssetLibrary.user_library: そのライブラリのプリファレンスエントリ(または None)。UserExtensionRepo.use_access_token_for_asset_libraries: リポジトリのアクセストークンを使用するため、アセットライブラリを有効にします。all_ids コレクションプロパティの内部実装の変更により、このコレクション内での ID の配置の順序が変わりました。このプロパティの順序は内部実装の詳細として記録されるようになるため、その順序に依存したり、前提として処理するスクリプトは避けてください。
回転モードの変換: 新しい convert_rotation_mode 関数。bpy.types.Object と bpy.types.PoseBone で、アニメーションの回転モードを変換します。
Constraints: Object と PoseBone で、constraints.new(type, name) が name キーワード引数を許容するように。
Markers: 新しく context.markers と context.selected_markers が追加、エディターに対応するマーカーへのアクセスをシンプルにします。(3048200244)
Image.colorspace_settings.interop_id が、既存の name に加えて追加されました。(PR#164213)bpy.data.all_ids の ID の順序が変更され、内部実装の詳細のドキュメントになりました。(PR#162179, 53ed639726)gpu.types.GPUStorageBuf を追加、Storage Buffer の作成と管理を行います。(fae3d71db8)dimensions 引数が2D ツリーに対応しました。(e81d8ae45a)NodeTreeInterface.root_panel
。ノードツリーインターフェイスアイテムの階層のトップレベルのパネルを取得します。bl_write_viewport_depth オプション。レンダーエンジンに view_draw 内で自身の深度バッファを書き込ませます。(#163684)複数行のラベル: 新しい
UILayout.label_multiline()
関数は、複数行に自動的に折り返し可能なラベルを配置します。
ポップアップ: 新しい auto_keymap 引数。WindowManager.invoke_popup (a9beda8c0f)と WindowManager.popover (f4f16d48ea)、WindowManager.call_panel でアクセラレータキーに対応できます。(e1a676b12b)
UILayout: 新しい property_split_factor 定数値は、プロパティの分割が有効な時にレイアウトシステムから使用されます。(bad8871dc5)
Undo スタック: 新しい bpy.context.window_manager.undo_stack は、スクリプトに Undo 履歴の読み込み専用のアクセスを提供します。(ae71b51993)
ボタン: 新しい
WindowManager.try_activate_rna_button()
関数。RNA データを参照する UI ボタンをアクティブにします。