Dev:JA/Ref/Release Notes/4.00/Python API
< Dev:JA | Ref/Release Notes | 4.00
元記事: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_ref
がasset_library_reference
で置き換えられました。(974d70918b582cf)
FileAssetSelectParams.import_type
はFileAssetSelectParams.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_vert
とbevel_weight_edge
という名の汎用属性に移行しました。(2a56403cb0dbcbc)- 既存のベベルウェイトへのアクセス(
MeshEdge.bevel_weight
)は属性 API 化に伴い削除されました。 - 前方互換性は維持されませんが、旧バージョンでこの新しい汎用属性の読み出しは可能です。
- 既存のベベルウェイトへのアクセス(
- 頂点と辺クリースも同様に
crease_vert
とcrease_edge
という汎用属性に移行しました。(e5ec04d73c78734)MeshEdge.crease
プロパティは削除されました。- メッシュプロパティの
vertex_creases
とedge_creases
は、属性を直接返すようになりました。 - 新しい関数
{vertex/edge}_creases_ensure
と{vertex/edge}_creases_remove
は、適切なドメインとタイプで属性を生成・削除します。
sculpt_vertex_colors
API が削除され、mesh.color_attributes
で置き換えられました。(6805657a39b7eeb)
- 他のメッシュカスタムデータ関数も、属性 API と重複する物は削除されました:
vertex_layers_float
、vertex_layers_int
、vertex_layers_string
、polygon_layers_float
、polygon_layers_int
、polygon_layers_string
(d41021a7d4112bd)
Mesh.calc_normals
はもう必要なくなったため、削除されました。(ab5fc46872b9960)
bmesh_from_object
とBVHTree
、FromObject
が最終メッシュの取得に dependency graph(依存グラフ)の評価が必要になりました。(e64b3c821252fc8)
split_faces
関数の廃止予定の引数が削除されました。(efbcfd870301b9d).
カーブ
curves.select_end
オペレーターは、curves.select_ends
という名前になりました。amount_start
とamount_end
プロパティを持ち、前後の両方のポイントを選択できます。
ノード
- 未使用の
width_hidden
プロパティが削除されました。(30a20b4def3350c)
- シェーダーとコンポジターノードの
NodeItem
とNodeCategory
定義は削除されました。(15f5dfd45d14655)- Add(追加)メニューが Python API から ID 名
NODE_MT_shader_node_add_all
とNODE_MT_compositor_node_add_all
で、標準の方法により追加可能になりました。
- Add(追加)メニューが Python API から ID 名
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_nbr
がchild_percent
にリネーム。e82ca9b5ffb6480.
Blender アプリケーション (bpy.app
)
- 廃止予定の
bpy.app.version_char
を削除。(345fc2b1f6de762)
Blender オペレーター (bpy.ops
)
bpy.ops
のコンテクストオーバーライド引数をcontext.temp_override(..)
に伴い削除。(ac263a9bce53e19)
フォントモジュール (blf
)
blf.size()
dpi
引数が削除されました。(9357f7b606262aa)
GPU モジュール (gpu
)
- ビルトインシェーダー名の廃止予定の 2D_ / 3D_ 接頭辞を削除。(9a8fd2f1ddb4918)
アニメーション
FCurve.update()
が F カーブのキーの複製もするように。(6452eccc800ff11)
Action.frame_range
が長さ0フレームの報告を正確にするように。(49eab72141ee7e2)
従来、アクションがちょうど0の長さの(0.001などではない)時は、その場合に限り、特別なケースとして、1フレーム長の範囲を生成、報告していました。これは最小1フレーム長の範囲になるのか、限定的に正しい範囲なのか(どちらのケースでもありません)と混乱を招き、簡単に誤解されます。
新しい挙動では、すべてのケースにおいて、単に実際のフレーム範囲をそのまま報告します。
アーマチュア
- レイヤーとボーングループは、関連する全プロパティとメソッドとともに削除されました。代わりに Bone collection が追加されました(998136f7a7b520e とその後の多数のコミット)。
ボーンコレクションとカラーへのアップグレード方法 に、Python コードを新しい API に変更する方法の概要があります。
edit_bones.new()
の挙動がオブジェクト生成と同様、作成したボーンをどのコレクションにも自動的に追加しなくなりました。ボーン追加オペレーターの挙動に似せるには、自分でそのボーンに(None でなければ)arm.collections.active
を割り当ててください。(ab67d410a90d5d2)
- 廃止予定の
use_inherit_scale
ボーンプロパティが削除されました。(2abd026cfedaecb)
ノードグループ
- ノードグループの API が、
NodeTree
からNodeTree.interface
に移動しました。
旧 | 新 |
# 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 コールの
filename
をfilepath
にリネーム。(efa4179982d9ea7)Depsgraph.debug_relations_graphviz
、Depsgraph.debug_stats_gnuplot
RenderLayer.load_from_file
、RenderResult.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).