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

提供: wiki
< Dev:JA‎ | Ref/Release Notes‎ | 3.40
2023年10月19日 (木) 04:13時点におけるYamyam (トーク | 投稿記録)による版 (内部メッシュフォーマット)
(差分) ← 古い版 | 最新版 (差分) | 新しい版 → (差分)
移動先: 案内検索

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

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

Python モジュールとしての Blender

Python モジュールとしての Blender の実行の対応を向上させるため、様々な変更が行われました。

  • bpy.app.program_path のデフォルトを書き込み可能な空の文字列にし、スクリプトが Blender バイナリを指し示すことができるように。(f7a4ede79f9512f)
  • モジュールが自身を含む Python パッケージ "bpy" としてビルドされるようになりました。(81558783e40394c)
  • Linux で EEVEE / WorkBench を通じた GPU レンダリングに対応しました。(3195a381200eb98)

追加

  • 2Dと3Dの両方で動作する、新しい GPU ビルトインシェーダーの列挙。2Dと3Dバージョンは廃止予定です。(8cfca8e1bd85)
  • 新関数 bmesh_utils.bmesh_linked_uv_islands。BMesh の UV アイランドにアクセスできます。(de570dc87ed17ca)
  • ファイル選択ダイアログが、設定したオペレーターの directoryfilenamefilepath プロパティの update コールバックを呼び出すように(48d7ff68f0df209)。これにより、従来より大幅にインタラクティブなダイアログが可能になります。例えば、オペレーターが現在選択中のファイルを元に、別のオプションを表示することができるようになりました。

内部メッシュフォーマット

メッシュの内部データ構造が、主に格納データの別の配列への分離により、大幅な変更を受けました。詳細は設計タスクを参照してください。

さらに多くのメッシュデータが、汎用属性システムにより Python から mesh.attributes[name] でアクセス可能になりました。既存のこのデータを取得する API は残りますが、速度は劣り、新しいメソッドの方が大抵は高速になります。対象の属性がない場合は、先に作成する必要があります。

  • Mesh の頂点、辺、ポリゴンの "hidden" 状態が、別の汎用 boolean 属性に格納されるように。(2480b55f216c31)
    • 属性名はそれぞれ、.hide_vert.hide_edge.hide_poly で、BOOLEAN タイプになります。
  • 同様に、メッシュの選択が汎用属性に移動しました。(rB12becbf0dffe)
    • 属性名は .select_vert.select_edge.select_poly で、BOOLEAN タイプになります。
  • メッシュポリゴンのマテリアルインデックスが汎用属性に格納されるように。(f1c0249f34c417)
    • 属性名は material_indexINT タイプです。
  • スカルプトの Face Set(面セット)が汎用属性に格納されるようになり、Python API でアクセス可能になりました。(rB060a53414194)
    • 名前は ".sculpt_face_set"、INT タイプです。
  • 内部的に、ベベルウェイトが状況に応じて別の配列に格納されるようになりました。ただしこの属性へのアクセスは未変更なままです。(rB291c313f80b4)
    • use_customdata_vertex_beveluse_customdata_edge_bevel プロパティが、レイヤーの削除と追加を行うオペレーター(MESH_OT_customdata_bevel_weight_{vertex,edge}_{add,clear})で置き換えられました。
  • サブディビジョンサーフェスの辺クリースが、状況に応じて別の配列に格納されるように。(rBa8a454287a27)
    • Mesh に新しく edge_creases プロパティが追加、辺とは独立してクリース値にアクセスするのに使用します(高速)。
    • プロパティ use_customdata_vertex_creaseuse_customdata_edge_crease が削除されました。これらは前述の API や MESH_OT_customdata_crease_{vertex,edge}_{add,clear} オペレーターで置き換え可能です。


下記はスカルプトの面セットが存在しない時に作成するサンプルです。

if ".sculpt_face_set" not in mesh.attributes:
    face_sets = mesh.attributes.new(".sculpt_face_set", "INT", "FACE")
    face_sets.data[10] = 14

互換性のなくなる変更

  • 未使用の「ノードを追加しリンクする」オペレーター、NODE_OT_add_and_link_node が削除されました。(rB543ea415690f)
  • 未使用オペレーター MESH_OT_vertex_color_addMESH_OT_vertex_color_removeMESH_OT_sculpt_vertex_color_addMESH_OT_sculpt_vertex_color_remove が削除されました。
    • これらのオペレーターは、Mesh.vertex_colors.new().remove() 関数(これも廃止予定)、または属性 API(Mesh.attributes)で置き換え可能です。
  • Mesh プロパティの use_customdata_vertex_beveluse_customdata_edge_beveluse_customdata_vertex_beveluse_customdata_edge_crease が、has_bevel_weight_edgehas_bevel_weight_vertexhas_crease_edge 、そしてレイヤーを追加・クリアする特定のオペレーター、MESH_OT_customdata_bevel_weight_{vertex/edge}_{clear/add}MESH_OT_customdata_crease_{vertex,edge}_{add,clear} で置き換えられました。(291c313f80b4cc, rBa8a454287a27).
  • グリースペンシルのフィルツール用の Leak Size が削除されました。(bdbf24772a0d)
  • グリースペンシルのフィルツール用に、ラインを延長する方法を設定する新しいメソッドを追加。(172b0ebe6adf)
  • UV 編集の丸めモード、Snap to Pixels が、Round to Pixels(ピクセルに揃える)にリネームされました。(b5115ed80f19)
  • UV カスタムグリッドの細分化が X 軸と Y 軸で別々に設定可能に。(a24fc6bbc1ae)
  • もうジオメトリノードが NodeItem システムを使わないようになりました。(rB837144b4577f)
    • nodeitems_utils.node_items_iter などの関数でも取得できなくなりました。代わりに直接ノードタイプを反復してください。
      (訳注:この変更で Node Wrangler に問題が発生しています。詳しくはこちら
  • ビルトインノードタイプのソケットの追加・削除・移動が不可能になりました。(rB52bd198153e)

レンダーエンジンパス

デフォルトの Render results は Combined(統合)パスのみになり、レンダーエンジンは生成する他のパスをすべて明示的に指定する必要があります。Blender はそのレンダーエンジンの update_render_passes 関数を問い合わせ、register_pass を使用し、そのエンジンが指定した全レンダーパスを追加します。(3411a96e74)

以前は、対応する ViewLayer.use_pass_* プロパティが有効化されていれば、ビルトインレンダーパスが自動的に追加されていました。もしレンダーエンジンがこれに依存しているのなら、そのパスを update_render_passes 内で明示的に追加する必要があります。