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_colorsAPI が削除され、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_gnuplotRenderLayer.load_from_file、RenderResult.load_from_filebpy.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).