Dev:JA/Ref/Release Notes/3.30/Python API

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

元記事:Reference/Release Notes/3.3/Python API - Blender Developer Wiki

Python API とテキストエディター

バッググラウンドジョブ

新しくレンダリングとベイキングジョブの状態を Python から取得可能に。(rBf4456a4d3c97):

  • 新しい bpy.app.is_job_running(job_type) 関数。job_type パラメーターとして、"RENDER" または "RENDER_PREVIEW""OBJECT_BAKE" を取り、現在どのタイプのジョブが実行中かをブール値で返します。
    ここでは意図的に、Blender の全ジョブタイプのサブセットのみの対応にしています。その方が、これら「隠し」ジョブを現状(Blender の内部の詳細を公にするのではなく、信頼できる一部 API のみ公開)で維持できるからです。
    将来的には、明確かつテスト可能なユースケースの場合、対応するジョブタイプのリストが場合に応じて拡張される可能性があります。
  • 新しい app ハンドラ object_bake_preobject_bake_complete object_bake_canceled。それぞれオブジェクトベイクジョブ開始、完了、キャンセル時の信号に対応しています。

その他の追加

  • XR: XR イベントデータ内の OpenXR ユーザーパスを開放(XrEventData.user_path/user_path_other)。(23be3294ff5)
  • ID Management: 与えられた ID の参照する ID のリストを取得するユーティリティ関数を追加(26d375467b9)。以下はその例です。
from bpy_extras.id_map_utils import get_id_reference_map, get_all_referenced_ids

def suffix_dependents(object: bpy.types.Object, recursive=True, suffix: str):
    """Append suffix the names of datablocks used by an object, including itself."""
    ref_map = get_id_reference_map()
    if recursive:
        # Get all IDs referenced by a Blender Object: Its Mesh, Shape Key, Materials, Textures, Node Graphs, etc.
        datablocks = get_all_referenced_ids(collection, ref_map)
    else:
        # Get only directly referenced IDs: Its Mesh and any IDs referenced via Custom Properties.
        datablocks = ref_map[object]

    datablocks.add(object) # The object itself is not already included.
    for db in datablocks:
        db.name += suffix
  • 表示中のメタストリップを選択する VSE API 関数を追加。(6b35d9e6fbef)
  • mathutils.Matrix.is_identity 読み込み専用属性を追加。行列の同一性をチェックします。(133d398120bfa5c)
  • FCurveKeyframePoints.clear() を追加。F カーブ上のすべてのキーフレームの制御点を削除します。(rB4812eda3c5d1)

その他の変更

  • blend_render_info モジュールが、Z 標準圧縮 blend ファイルの読み込みに対応しました。(b3101abcce967c1)
  • コンテクストメニューのエントリを追加する API が変更されました。WM_MT_button_context を手動で登録する代わりに、Blender 自身で登録を行う UI_MT_button_context_menu に描画関数を append してください。互換性の維持のため、旧 API は今も利用可能ですが、将来のリリースで廃止される予定です。よってアドオンにはこの新 API へ更新が必要です。(8a799b00f8fa)
### Old API ###
class WM_MT_button_context(Menu):
    bl_label = "Unused"

	def draw(self, context):
		layout = self.layout
		layout.separator()
		layout.operator("some.operator")

def register():
	bpy.utils.register_class(WM_MT_button_context)

def unregister():
	bpy.utils.unregister_class(WM_MT_button_context)

### New API ###
# Important! `UI_MT_button_context_menu` *must not* be manually registered.
def draw_menu(self, context):
    layout = self.layout
    layout.separator()
    layout.operator("some.operator")

def register():
    bpy.types.UI_MT_button_context_menu.append(draw_menu)

def unregister():
    bpy.types.UI_MT_button_context_menu.remove(draw_menu)

互換性のなくなる変更

  • Strip のプロパティ frame_startframe_offset_startframe_offset_end が浮動小数点数になりました。(302b04a5a3fc)
  • SoundSequence.pitch が、speed_factor プロパティで置き換えられました。このプロパティは他のエフェクト以外のストリップでも、再生速度のコントロールに利用可能です。(302b04a5a3fc)