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

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

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

Python API

互換性がなくなる変更

アセットシステム

  • context.asset_file_handle が削除されました。代わりに context.asset を使用してください。
    こちらは FileSelectEntry ではなく、AssetRepresentation を返すことに注意してください(提供するアクセス先の情報は同じです)。アセットプレビューアイコン ID が必要などの理由で無理な場合は、context.active_file が代替として利用できるかもしれません。(f6a6b27ac1)
  • context.selected_asset_files が削除されました。代わりに context.selected_assets を使用してください。こちらも(上記の)context.asset_file_handle 同様に注意してください。
  • FileSelectEntry:
    • .id_type が削除されました。アセットでは AssetRepresentation.id_type を代わりに使用してください。(d973cc7992)
    • .local_id が削除されました。アセットでは AssetRepresentation.local_id を代わりに使用してください。(d973cc7992)
  • AssetHandle:
    • get_full_library_path() が削除されました。代わりに AssetRepresentation.full_library_path を使用してください。(d973cc7992)
    • local_id が削除されました。代わりに AssetRepresentation.local_id を使用してください。(d973cc7992)
  • API 中の名前の asset_library_refasset_library_reference で置き換えられました。(974d70918b582cf)
  • FileAssetSelectParams.import_typeFileAssetSelectParams.import_method にリネームされました。(ca2a8be15fef453)

注意:AssetHandle は現在 UILayout.template_asset_view() 用のコレクションカスタムプロパティの提供にのみ使用してください。

ウィンドウマネージャ

  • Operator.bl_property はもう "type" がデフォルトではなくなりました。(7bc34283eacce03)

メッシュ

  • 前バージョンでのメッシュフォーマット変更が Blender ファイルフォーマットに入り、ファイル保存時のオーバーヘッドが削減され、ファイル保存時のファイルサイズも小さくなりました。(1b63a290c686362)
    • Blender 3.6は4.0で保存されたファイルを読めますが、もっと前のバージョンではできません。
    • Blender 3.6を4.0のファイルを、旧バージョンの Blender と互換性のあるフォーマットで保存するのに使用できます。
  • Face Maps(面マップ)は削除され、その値は自動的に整数属性に変換されます。(46cf09327001331).
  • ベベルウェイトは bevel_weight_vertbevel_weight_edge という名の汎用属性に移行しました。(2a56403cb0dbcbc)
    • 既存のベベルウェイトへのアクセス(MeshEdge.bevel_weight)は属性 API 化に伴い削除されました。
    • 前方互換性は維持されませんが、旧バージョンでこの新しい汎用属性の読み出しは可能です。
  • 頂点と辺クリースも同様に crease_vertcrease_edge という汎用属性に移行しました。(e5ec04d73c78734)
    • MeshEdge.crease プロパティは削除されました。
    • メッシュプロパティの vertex_creasesedge_creases は、属性を直接返すようになりました。
    • 新しい関数 {vertex/edge}_creases_ensure{vertex/edge}_creases_remove は、適切なドメインとタイプで属性を生成・削除します。
  • sculpt_vertex_colors API が削除され、mesh.color_attributes で置き換えられました。(6805657a39b7eeb)
  • 他のメッシュカスタムデータ関数も、属性 API と重複する物は削除されました:vertex_layers_floatvertex_layers_intvertex_layers_stringpolygon_layers_floatpolygon_layers_intpolygon_layers_string (d41021a7d4112bd)
  • Mesh.calc_normals はもう必要なくなったため、削除されました。(ab5fc46872b9960)
  • bmesh_from_objectBVHTreeFromObject が最終メッシュの取得に dependency graph(依存グラフ)の評価が必要になりました。(e64b3c821252fc8)
  • split_faces 関数の廃止予定の引数が削除されました。(efbcfd870301b9d).

カーブ

  • curves.select_end オペレーターは、curves.select_ends という名前になりました。 amount_startamount_end プロパティを持ち、前後の両方のポイントを選択できます。

ノード

  • 未使用の width_hidden プロパティが削除されました。(30a20b4def3350c)
  • シェーダーとコンポジターノードの NodeItemNodeCategory 定義は削除されました。(15f5dfd45d14655)
    • Add(追加)メニューが Python API から ID 名 NODE_MT_shader_node_add_allNODE_MT_compositor_node_add_all で、標準の方法により追加可能になりました。
  • node.inputs[xxx]node.outputs[xxx] がソケットの識別子と可用性状態を考慮するように。(e4ad58114b9d56f)

シェーダーノード

  • Glossy BSDF(光沢 BSDF)と Anisotropic BSDF(異方性 BSDF)ノードが統合されました(8cde7d8f8a5a076)。その結果のノードは Python API では ShaderNodeBsdfAnisotropic となります。
    ノード作成時は ShaderNodeBsdfGlossy もエイリアスとして許容されますが、結果的には ShaderNodeBsdfAnisotropic が作成されます。アドオンとスクリプトは ShaderNodeBsdfGlossy の使用を ShaderNodeBsdfAnisotropic で置き換えてください。これは2.80以前まで幅広く動作します。
  • Principled BSDF(プリンシプル BSDF ノードが刷新され、Standard Surface や OpenPBR により近く調整されました。様々なソケットもリネームされました。
    • Subsurface(サブサーフェス)Subsurface Weight(サブサーフェスウェイト)
    • Subsurface Color(サブサーフェスカラー)は削除され、代わりに Base Color(ベースカラー)を使用します
    • Specular(スペキュラー)Specular IOR Level(スペキュラーIORレベル)
    • Specular Tint(スペキュラーチント)は Float から color になりました。
    • Transmission(伝播)Transmission Weight(伝播ウェイト)
    • Coat(コート)Coat Weight(コートウェイト)
    • Sheen(シーン) -> Sheen Weight(シーンウェイト)
    • Emission(放射) -> Emission Color(放射カラー)

ライト

  • Light の falloff、attenuation とシャドウバッファのプロパティを削除。Cycles や EEVEE で使用されていないため。(57d85b32a9aaa71)

パーティクルシステム

  • ParticleSystem.child_nbrchild_percent にリネーム。e82ca9b5ffb6480.

Blender アプリケーション (bpy.app)

Blender オペレーター (bpy.ops)

  • bpy.ops のコンテクストオーバーライド引数を context.temp_override(..) に伴い削除。(ac263a9bce53e19)

フォントモジュール (blf)

GPU モジュール (gpu)

- ビルトインシェーダー名の廃止予定の 2D_ / 3D_ 接頭辞を削除。(9a8fd2f1ddb4918)

アニメーション

  • FCurve.update() が F カーブのキーの複製もするように。(6452eccc800ff11)
  • Action.frame_range が長さ0フレームの報告を正確にするように。(49eab72141ee7e2

従来、アクションがちょうど0の長さの(0.001などではない)時は、その場合に限り、特別なケースとして、1フレーム長の範囲を生成、報告していました。これは最小1フレーム長の範囲になるのか、限定的に正しい範囲なのか(どちらのケースでもありません)と混乱を招き、簡単に誤解されます。
新しい挙動では、すべてのケースにおいて、単に実際のフレーム範囲をそのまま報告します。

アーマチュア

  • edit_bones.new() の挙動がオブジェクト生成と同様、作成したボーンをどのコレクションにも自動的に追加しなくなりました。ボーン追加オペレーターの挙動に似せるには、自分でそのボーンに(None でなければ)arm.collections.active を割り当ててください。(ab67d410a90d5d2)
  • 廃止予定の use_inherit_scale ボーンプロパティが削除されました。(2abd026cfedaecb)

ノードグループ

    # Make a socket
    tree.inputs.new(name="My Input")
    tree.outputs.new(name="My Output")
    
    


    
    
    
    
    # Remove a socket
    tree.inputs.remove(socket)
    tree.outputs.remove(socket)
    
    # Move a socket up or down
    tree.inputs.move(from_index=4, to_index=2)
    
        
    
    # Iterate over sockets
    for socket in tree.inputs:
        ...
    for socket in tree.outputs:
        ...
        
        
        
        
        
        
    
    # Make a socket
    # Note: socket_type accepts only base socket type names,
    # e.g. `NodeSocketFloat` but not `NodeSocketFloatFactor`.
    tree.interface.new_socket(name="My Input", in_out='INPUT')
    tree.interface.new_socket(name="My Output", in_out='OUTPUT')
    # Make node panel
    tree.interface.new_panel(name="My Panel")
    
    # Copy an existing socket or panel
    tree.interface.copy(socket)
    
    # Remove a socket or panel
    tree.interface.remove(socket)
    tree.interface.remove(panel)
    
    # Move a socket up or down
    tree.interface.move(socket, to_index=2)
    # Move a socket into a panel
    tree.interface.move_to_parent(socket, new_panel, to_index=2)
    
    # Iterate over sockets
    for item in tree.interface.items_tree:
        if item.item_type == 'SOCKET':
            if item.in_out == 'INPUT':
                ...
            elif item.in_out == 'OUTPUT':
                ...
    # Iterate over panels
    for item in tree.interface.items_tree:
        if item.item_type == 'PANEL':
            ...
    
アイテムの変更
従来のノードグループ API では一部のケースで処理中に入出力コレクションの変更が可能でした。これは偶然起こったことであり、一般的には無効化すべきことです。詳細は "Gotchas" を参照してください


  • カスタムノード:NodeSocket.draw_color_simple コールバックが、カスタムソケットタイプ用のカラー機能を優先するように。
  • これはコンテクストやノードインスタンスを取りませんが、大半の用途では充分です。この新しいコールバックは明らかにノードインスタンスが存在している場合(ノードグループのインターフェイスの表示など)で使用します。
    class MyCustomSocket(NodeSocket):
        def draw_color(self, context, node):
            return (1, 1, 1, 1)
    
    class MyCustomSocket(NodeSocket):
        @classmethod
        def draw_color_simple(cls):
            return (1, 1, 1, 1)
    

シーケンサー

  • Sequence.speed_factor がより複雑なリタイミングシステムで置き換えられました。(86a0d0015ac7bb1)

その他

  • RNA API コールの filenamefilepath にリネーム。(efa4179982d9ea7)
    • Depsgraph.debug_relations_graphvizDepsgraph.debug_stats_gnuplot
    • RenderLayer.load_from_fileRenderResult.load_from_file
    • bpy.app.icons.new_triangles_from_file

Hydra レンダーデリゲート

レンダラーアドオンを、USD Hydra レンダーデリゲートとして実装可能になりました。アドオン開発者の皆さんにはこれの使用と、Blender 開発に参加し欠けている機能を追加することを推奨します。(04bb5f999501d97)

Hydra は二つの大きな恩恵を提供します。

  • 同じ Hydra レンダーデリゲートが複数の3Dアプリ間で動作することで、実装の多くが共有可能。
  • Hydra は Python ではなく C++ API であるため、重いシーンでのパフォーマンスが大幅に改善。

Blender シェーダーノードは自動的にレンダラー用の MaterialX ノードグラフに変換できます。現時点ではシェーダーノードのサブセットのみの対応で、状況については互換性リストを見てください。

さらに HydraRenderEngine API ドキュメントに詳細があります。

追加

  • bpy.context.property。マウスカーソル下のプロパティ用。(6ba0346797f43cd).
  • UILayout.progress(..) widget タイプ。スクリプトの進行状態を表示します。(c6adafd8ef325de).
  • PoseBone.bbone_segment_index()。頂点(その位置)と、それを変形する B ボーンセグメントとの内部の対応情報(Crazyspace)にアクセスできます。(36c6bcca1a5aa25)
  • Curves.add_curves(..)。Curves データブロックに新しいカーブを追加します。(07f01b5fc273240).