Dev:JA/Ref/Release Notes/4.20/python api

提供: wiki
< Dev:JA‎ | Ref/Release Notes‎ | 4.20
2024年7月17日 (水) 02:52時点におけるYamyam (トーク | 投稿記録)による版 (ページの作成:「{{MARKDOWN}} 元記事:[Python API - Blender Developer Documentation](https://developer.blender.org/docs/release_notes/4.2/python_api/#statically-typed-idproperties)…」)
(差分) ← 古い版 | 最新版 (差分) | 新しい版 → (差分)
移動先: 案内検索

元記事:Python API - Blender Developer Documentation

Blender 4.2LTS: Python API

アドオンのパッケージ化

新しいエクステンションプラットフォームに伴い、アドオンをパッケージ化する新しい方法も登場しました。これはスクリプト内に bl_info を入れる代わりに、別の blender_manifest.toml ファイルを使用します。詳細は エクステンションユーザーマニュアル(英文)を参照してください。

旧パッケージ化方法も動作しますが、Legacy(旧版)とみなされるため、アドオンをこの新しいマニュフェストファイルに切り替えることをお勧めします。

追加

オンラインアクセス

  • bpy.app.online_access は読み込み専用のプロパティで、Blender(とアドオン)がインターネットへのアクセスを要求しているかどうかをチェックします。

  • アドオンはインターネットへアクセスする前に、このプロパティのチェックが求められます。ドキュメント(英文)をチェックしてみてください。

  • また、bpy.app.online_access_override で、Blender が --offline-mode--online-mode で起動したのかどうかがわかります。

bpy.utils モジュール

  • EXTENSIONS オプションが bpy.utils.user_resource() に追加。(dc9430c480)

  • bpy.utils.register_cli_commandunregister_cli_command が追加、スクリプトが(-c, --command)による専用のコマンドライン機能を設定可能に。(9372e0dfe0)

  • bpy.utils.extension_path_user(__package__, path="", create=False) を追加。(96906536db).

アニメーション

  • rna_struct.keyframe_insert() に、キータイプを設定する新しいオプションキーワード引数 keytype が追加(1315991ecb)。これにより、新規キーのタイプを直接設定可能になりました。
    例:bpy.context.object.keyframe_insert("location", keytype='JITTER')

  • F カーブの新しい関数:bake。既存のカーブに与えられた間隔で与えられた範囲にキーを作成します。(20a4c9c928

レイアウトパネル

ポップアップや Redo(やり直す)パネル、ファイルブラウザーのサイドバー内のオペレータープロパティ表示用のレイアウトパネルに対応しました。現在、アドオンは Blender ユーザーインターフェイスの仕様に準じ、プロパティの構成にパネルを使用することを推奨します。 (aa03646a74, 02681bd44d)

エクスポーター

エクスポーターアドオンが、新しいエクスポーターコレクションに対応しました。

これには bl_export_operator を設定した FileHandler と、そのオペレーターにエクスポートするコレクションを示す、collection という名の文字列プロパティが必要です。サンプルとして FBX と glTF アドオンをチェックしてみてください。

モーダルオペレーター

  • Window.modal_operators。実行中のモーダルオペレーターのリストを提供します。(#122193)

  • bl_optionsMODAL_PRIORITY を追加し、モーダルオペレーターが他のモーダルオペレーターより前にイベントを処理できるようになりました。(6efd7a6a50)

ハンドラー

  • Render: "render_stats" ハンドラーに情報文字列を入れることができるように。(fcc481a407)

UI

  • オペレーターの確定・キャンセルボタン用で、キャンセルのデフォルト化に対応:WindowManager.invoke_props_dialog(..., cancel_dfault=False)。(1cfc83d5f6)

  • Region.tag_refresh_ui を追加、ポップオーバーやオペレーターダイアログなどのポップアップのリフレッシュに対応。(fa27d2fe65)

  • Context.region_popup を追加、ポップアップの領域にアクセスできます。(742a8b47cd)

互換性のなくなる変更

静的型付けされた ID プロパティ

従来、IDプロパティは静的型付けがされておらず、Python で簡単に変更できていました。IDProperty への float 値の割り当てを Python コードで、例えばこのプロパティを 'double' に変換するなど。

これは特にシステム定義の ID プロパティで問題になっていました(つまり、これらがジオメトリノードモディファイアープロパティや、Python 定義の「動的 RNA」プロパティなどの内部 Blender データ用のバックエンドストレージとして使用されているため)。

また、簡単にライブラリオーバーライドを壊してしまい、参照の型とオーバーライドデータの型に違いがある時に、望ましくない結果になる可能性があります

以下の ID プロパティは Python API から変更できない、固定の静的な型になりました。配列(vector)の場合、長さも型の一部とみなされ、固定となります。

  • システム定義:

    • ジオメトリノードモディファイアー設定 ID プロパティ
    • Python 定義の(bpy.props. モジュールを通じた)プロパティ
  • ユーザー定義:

    • UI から作成したプロパティ(「Properties」(プロパティ)エディター内の「Custom Properties」(カスタムプロパティ)パネルから作成した プロパティ)で「Overridable」(オーバーライド可)オプションを有効にした時

このようなプロパティに値を割り当てる時、可能であれば「適切な変換」を試します(例えば整数は float に変換可能ですが、float は整数の ID プロパティに割り当てできません)が、無理であれば割り当てに失敗します。

注意

技術的には、これは互換性が失われる変更の一つです。特にジオメトリノードモディファイアーの場合、現在の Python からの、これらのデータに「予測される」アクセス方法は、「生の」 ID プロパティパスを通じた物です。しかし、実際に「適切でない」使用による ID プロパティの互換性はなくなると思われます。

詳細は 設計タスク(英文) をご覧ください。

コミット:4d1fe98604b278e37f7076f03eb1419c41bf4fa2

bpy.utils モジュール

  • AUTOSAVE オプションが bpy.utils.user_resource() から削除されました。(6bfc8612bf)

レンダー設定

  • EEVEE 識別子が BLENDER_EEVEE_NEXT に変更されました。

  • モーションブラー設定が Cycles と EEVEE で統合され、bpy.types.RenderSettings に移動しました。(74b8f99b43)

    • scene.cycles.motion_blur_positionscene.render.motion_blur_position
    • scene.eevee.use_motion_blurscene.render.user_motion_blur
    • scene.eevee.motion_blur_positionscene.render.motion_blur_position
    • scene.eevee.motion_blur_shutterscene.render.motion_blur_shutter
  • ライトの影の投射(cast)設定が Cycles と EEVEE で統合され、bpy.types.Light に移動しました。(1036d9bdb2)

    • light.cycles.cast_shadowlight.use_shadow
  • EEVEE の Bloom(ブルーム)は廃止予定となりました。(#123059)

    • view_layer.eevee.use_pass_bloom
    • scene.eevee.use_bloom
    • scene.eevee.bloom_threshold
    • scene.eevee.bloom_color
    • scene.eevee.bloom_knee
    • scene.eevee.bloom_radius
    • scene.eevee.bloom_clamp
    • scene.eevee.bloom_intensity
  • EEVEE(4.2より前)固有のマテリアル設定は廃止予定となり、可能な物はエイリアスになりました。(c7807a425a)

    • bpy.types.Material.blend_methodbpy.types.Material.surface_render_method。'Opaque' と 'Alpha Clip' は deferred(Dithered)になります。
    • show_transparent_backuse_transparency_overlap にリネームされました。
    • use_screen_refractionuse_raytrace_refraction にリネームされました。
    • use_sss_translucencyuse_sss_translucency は廃止予定です。
  • Light probe(ライトプローブ)API が変更されました。(6a71a91b83)

    • 各ライトプローブタイプが自身のタイプを持つように。
    • grid_ 接頭辞が削除され、ボリュームプローブへのアクセスに制限されました。
    • Parallax と他の球型(sphere)プローブのみのプロパティは球型プローブに限定されました
    • visibility プロパティは廃止予定です。
  • 廃止予定の影(shadow)の設定

    • shadow_cube_sizeshadow_cascade_size はもう使用されておらず、将来のリリースで削除される予定です。

ノード

  • ノードグループパネルを作成する NodeTreeInterface.new_panel 関数から、未使用の parent 引数が削除されました。(#118792)

  • 一部ノードプロパティは名前の衝突の修正のためリネームされました。(deb332601c):

    • コンポジターの Box/Ellipse Mask(ボックス/楕円)マスクノード:widthmask_widthheight も同様)
    • シェーダー AOV の Output(出力)ノード:nameaov_name
    • ジオメトリノードの Color(カラー)ノード:colorvalue

Image Object オペレーター

  • "add image object"(画像オブジェクト追加)オペレーターが廃止予定となり、単一オペレーター object.empty_image_add に統合されました。(013cd3d1ba) 従来、画像エンプティを追加するオペレーターは二つあり(object.load_reference_imageobject.load_background_image)、ドロップ用のオペレーターが分かれていました(object.drop_named_image)。

  • "add/remove background image from camera" オペレーターがリネームされ、カメラオブジェクト専用とはっきりわかるようになりました。(013cd3d1ba):

    • view3d.background_image_addview3d.camera_background_image_add
    • view3d.background_image_removeview3d.camera_background_image_remove