Dev:JA/Ref/Release Notes/3.00/Python API
< Dev:JA | Ref/Release Notes | 3.00
元記事:Reference/Release Notes/3.0/Python API - Blender Developer Wiki
目次
Blender 3.0: Python API
Python バンドル
zstandardパッケージが zstd 圧縮の .blend ファイルの操作のために Python バンドルに追加されました(rBa5917175、[Core#Blend_file_read_.26_Write|リリースノートの .blend ファイル読み書き]]も参照してください)。
Text Editor(テキストエディター)
- Python スクリプトを立ち上げ時に実行する "Register"(登録)オプションで、名前に
.py拡張子が必要なくなりました。(3e775a4fc57cfd4)
その他の追加
bpy.propsベクトルタイプ(FloatVectorProperty、IntVectorProperty、BoolVectorProperty)が多次元配列に対応しました。(bc0a7d3fae5cfbe)
- 4x4 行列のプロパティの定義例:
bpy.props.FloatVectorProperty(size=(4, 4), subtype='MATRIX')
- VSE: Sequence.parent_meta() python API 関数を追加。(eec1ea0ccf2)
- ファイルブラウザー内の選択ファイルリストを
bpy.context.selected_filesで取得可能に。(7ec839adfa99)
- ファイルブラウザー内で、
FileSelectEntry.relative_pathにより、現在表示中のディレクトリに相対的な(ファイル名を含む)ファイルパスが得られます。
これはファイルブラウザーが複数のレベルの再帰を表示する設定の時に使用する物で、この場合、同じ名前の複数のファイルが表示される可能性があります。そのため、ファイルの参照にはファイル名を使用せず、代わりにこのFileSelectEntry.relative_pathを使用してください。(79281336c055)
mathutils.{Vector/Matrix/Euler/Color/Quaternion}に、is_valid属性が付きました。そのオーナーが有効かどうかをチェックするのに使用できます。(0950cfd9d53ef66)
- エリア管理の "Close" がスクリプト化可能に。例:
bpy.ops.screen.area_close({"area": bpy.context.screen.areas[0]})。(9290b41381fd)
- UI: 追加のマウスカーソル [
PICK_AREA,STOP,COPY,CROSS,MUTE,ZOOM_IN,ZOOM_OUT] がアクセス可能に。(6bf8c95e521d6ef)
- UI:
bl_options用の新しいオペレーター設定、DEPENDS_ON_CURSOR。メニューからのアクセス時、入力を待つオペレーターに使用します。(da2ba402689d7ed)
- UI:
DEPENDS_ON_CURSORをOperatorType.bl_cursor_pendingを通して使用している時のカーソルの設定に対応。(2a8e5128c16c17a)
その他の変更
- RNA 構造体の IDProperties のクリアと確認を行う関数
id_properties_clear()とid_properties_ensure()を追加。(c202d3865904)
Operator.poll_message_set(message, ...)を追加。
オペレーターのポーリング関数が失敗した理由のメッセージを、オペレーターにセットできるようになりました。(ebe04bd3cafaa1f)
- 新しい
bpy.app.handlers.xr_session_start_preハンドラ。バーチャルリアリティセッション開始時に実行されます。VR コントローラーのアクションマップ(キーマップの XR 版のようなもの)をセッションに渡すのが、主なユースケースです。(rBcb12fb78cad4)
- 新しい
XrSessionSettings.use_absolute_trackingプロパティがtrueの時、個別のヘッドセット位置を定義する原点の VR トラッキングが可能になります。(rB36c0649d32aa)
- 新しい
XrSessionSettings.base_scaleプロパティは、VR ビューアーの参照スケールを定義します。(rB3434a991ec5b)
- 新しい
XrSessionSettingsプロパティは、VR オーバーレイ(show_selection、show_controllers、show_custom_overlays)とコントローラー表示(controller_draw_style)用です。(rB9dda65455b54)
- 新しい
XrSessionStateメソッドは VR アクション用です。(e844e9e8f3bb)- アクション作成:
action_set_create()、action_create()、action_binding_create()、active_action_set_set()、controller_pose_actions_set() - アクションのクエリ:
action_state_get() - ハプティクス:
haptic_action_apply(),haptic_action_stop() - コントローラーポーズ:
controller_grip_location_get()、controller_grip_rotation_get()、controller_aim_location_get()、controller_aim_rotation_get()
- アクション作成:
- 新しい
XrSessionState.actionmapsコレクションプロパティは、デフォルトの VR アクションマップを格納します。Python スクリプトからデフォルトのアクションマップをこのコレクションに読み出し、その後でxr_session_start_preハンドラ中にてセッションのアクションを作成するのが主なユースケースです。(e844e9e8f3bb)
- 新しい
XrSessionState.navigation_location/rotation/scaleプロパティは、VR ビューアーのベースポーズ/スケールに差分を加算し、ビューポートをナビゲートできるようにします。(rB3434a991ec5b)
- 新しい
XR_ACTIONイベントタイプとEvent.xrプロパティ。入力状態やコントローラーポーズなどの XR イベントデータへのアクセス用です。(rBcdeb506008e9)
- 新しい
XRリージョンタイプ。VR ビューポート(ヘッドセットディスプレイ)と、ミラーリージョンへの描画用です。Space.draw_handler_add()を、リージョンタイプXRと描画タイプPOST_VIEWで使用することで、アドオンから VR のカスタム描画が可能です。(rB9dda65455b54)
- 新しい
Matrix.LocRotScaleコンストラクタ。全トランスフォームチャンネルを、1コールで一つの行列にまとめます。(rBa86e815dd86)
互換性がなくなる変更
PoseBone.custom_shape_scaleスカラ値を、PoseBone.custom_shape_scale_xyzベクトル値で置き換えました。さらに、custom_shape_translationとcustom_shape_rotation_eulerを追加しました。(rBfc5bf09fd88c)
bbone_curveiny/bbone_curveoutyをbbone_curveinz/bbone_curveoutzにリネーム。スケールのチャンネルをbbone_scalein.x/y/zと、bbone_scaleout.x/y/zベクトルにまとめ、また、オリジナルのyも実際の Y スケールチャンネル用の空間にするため、zになりました。(rB682a74e0909)
- 未使用の
BMesh.from_objectの deform 引数を削除。(ead084b6e1a05b9)
context.active_baseを削除しました。(44db4e50b245041)
- アドオン用の
wiki_urlとbl_infoの使用を停止(代わりに "doc_url" を使用してください。(aaa07a3a8f6427a)
IDPropertyGroup.iteritemsを削除、今は使用するすべてのイテレータにkeys、values、itemsを使用してください。(B265d97556aa0f0)
- 一部の RNA アクセサがデータを作成しており、設計レベルにおいて複数の理由で非常に問題があるため、以下が変更されました。
- フォースフィールドとコリジョン設定(
Object.field、Object.collision、ParticleSettings.force_field_1、ParticleSettings.force_field_2)。
オブジェクトの物はNoneである可能性があり、今は明示的に追加が必要です(Collisionモディファイアーとforcefield_toggleオペレーター)、パーティクルの物は常にパーティクル設定と一緒に生成されます。 - ID preview が
Noneの可能性があるため、まず最初に新しいpreview_ensure関数を使用してください。
- フォースフィールドとコリジョン設定(
bpy.app.binary_path_pythonを削除(代わりにsys.executableを使用してください)。(90b0fb135fdd060)
UILayout.embossのUI_EMBOSS_NONE_OR_STATUSを、NONE_OR_STATUSで置き換え。(0afe4e81cbb2)
bpy.ops.wm.alembic_exportから、機能していないrenderable_only引数を削除。(834e87af7bbf)
preferences.view.show_layout_uiを、preferences.apps.show_corner_splitに移動。(9fee59a4849)
bpy.types.TOPBAR_MT_appとbpy.types.TOPBAR_MT_app_systemを、bpy.types.TOPBAR_MT_blenderとbpy.types.TOPBAR_MT_blender_systemにリネーム。(58043c0637f8)
- アイコン
SMALL_TRI_RIGHT_VECを削除(同様のアイコンにはDISCLOSURE_TRI_RIGHTを使用してください)。(368d7944073e)
IDProperty UI Data API
IDProperty UI データストレージがリファクタリングされ、特別な _RNA_UI サブグループを削除、プロパティの UI データ用に適したマネージャを追加しました。(8b9a3b94fc148d)
- カスタムプロパティのある Python オブジェクトに、
id_properties_ui(prop_name)メソッドが付きました。以下のメソッドのある UI データのマネージャが返ります。update: UI データ値を更新します。min=1.0やdefault="new_default"などas_dict: UI データ値の入った辞書が返りますclear: プロパティの UI データを削除しますupdate_from: プロパティ間で UI データを、違うオーナー間であってもコピーします
- 注意: 単純に UI データとともにプロパティを作成したいコードには、
rna_prop_uiモジュール内のrna_idprop_ui_createユーティリティ関数への切り替えをお勧めします。これは2.80から存在し、この内部への変更を通じ、互換性を維持した透過的なアップデートが行われています。
対応する UI データ
| プロパティタイプ | Min | Max | Soft Min | Soft Min | Step | Precision | Default | Subtype | Description |
|---|---|---|---|---|---|---|---|---|---|
| Float | ○ | ○ | ○ | ○ | ○ | ○ | ○(+配列) | ○ | ○ |
| Integer | ○ | ○ | ○ | ○ | ○ | ○ | ○(+配列) | ○ | ○ |
| String | ○ | ○ | ○ | ||||||
| ID | ○ | ○ |
ジオメトリのインスタンス化
従来では、オブジェクトはインスタンス化の最小単位でした。現在、メッシュなどのオブジェクトデータも、オブジェクトとそのデータを先につくらずにインスタンス化ができるようになりました。(5a9a16334c573c)
インスタンスにアクセスする API には変更はありませんが、一つだけより注意しないといけないことがあります。
import bpy
depsgraph = bpy.context.view_layer.depsgraph
for object_instance in depsgraph.object_instances:
if object_instance.is_instance:
print(object_instance.object.data, object_instance.instance_object.data)
従来、.object.data と .instance_object.data は常に同じでしたが、現在は差異がある可能性があり、.object.data を使用するのが正しいです。
object_instance.object: インスタンスをラップする一時オブジェクト。ループ繰り返しの間は、このオブジェクトへの参照を格納してはいけません。
object_instance.object.data: インスタンスの実際のオブジェクトデータ/ジオメトリ。このデータをレンダリング/エクスポートしてください。ループ繰り返しの間に格納可能で、ループ後も有効です。
object_instance.matrix_world: インスタンスの変換行列。
object_instance.instance_object: インスタンスを作成・所持するオブジェクト。
object_instance.instance_object.data: インスタンスを作成したオブジェクトのデータ。今は多分使用されていません。
キーワードのみの引数の使用
- addon_utils.module_bl_info の2つめの引数
info_basis
- addon_utils.modules の最初の
module_cache、2つめの引数refresh
- addon_utils.modules_refresh の最初の引数
module_cache
- bl_app_template_utils.activate の最初の引数
template_id
- bl_app_template_utils.import_from_id の2つめの引数
ignore_not_found
- bl_app_template_utils.import_from_path の2つめの引数
ignore_not_found
- bl_keymap_utils.keymap_from_toolbar.generate の2つめと3つめの引数
use_fallback_keysとuse_reset
- bl_keymap_utils.platform_helpers.keyconfig_data_oskey_from_ctrl の2つめの引数
filter_fn
- bl_ui_utils.bug_report_url.url_prefill_from_blender の最初の引数
addon_info.
- bmesh.types.BMFace.copy の最初と2つめの引数
verts、edges.
- bmesh.types.BMesh.calc_volume の最初の引数
signed.
- bmesh.types.BMesh.from_mesh の2つめから4つめまでの引数
face_normals、use_shape_key、shape_key_index
- bmesh.types.BMesh.from_object の3つめと4つめの引数
cage、face_normals
- bmesh.types.BMesh.transform の2つめの引数
filter
- bmesh.types.BMesh.update_edit_mesh の2つめと3つめの引数
loop_triangles、destructive
- bmesh.types.{BMVertSeq,BMEdgeSeq,BMFaceSeq}.sort の最初と2つめの引数
key、reverse
- bmesh.utils.face_split の4つめから6つめまでの引数
coords、use_exist、example
- bpy.data.libraries.load の2つめから4つめまでの引数
link、relative、assets_only
- bpy.data.user_map の最初から3つめまでの引数
subset、key_types、value_types
- bpy.msgbus.subscribe_rna の5つめの引数
options
- bpy.path.abspath の2つめと3つめの引数
startとlibrary
- bpy.path.clean_name の2つめの引数
replace
- bpy.path.ensure_ext の3つめの引数
case_sensitive
- bpy.path.module_names の2つめの引数
recursive
- bpy.path.relpath の2つめの引数
start
- bpy.types.EditBone.transform の2つめと3つめの引数
scale、roll
- bpy.types.Operator.as_keywords の最初の引数
ignore
- bpy.types.Struct.{keyframe_insert,keyframe_delete} の2つめから5つめまでの引数
index、frame、group、options
- bpy.types.WindowManager.popup_menu の2つめと3つめの引数
title、icon
- bpy.types.WindowManager.popup_menu_pie の3つめと4つめの引数
title、icon
- bpy.utils.app_template_paths の最初の引数
subdir
- bpy.utils.blend_paths の最初から3つめまでの引数
absolute、packed,local
- bpy.utils.execfile の2つめの引数
mod
- bpy.utils.keyconfig_set の2つめの引数
report
- bpy.utils.load_scripts の最初の & 2つめ
reload_scriptsとrefresh_scripts
- bpy.utils.preset_find の3つめと4つめの引数
display_name、ext
- bpy.utils.resource_path の2つめと3つめの引数
major、minor
- bpy.utils.script_paths の最初から4つめまでの引数
subdir、user_pref、check_all、use_user
- bpy.utils.smpte_from_frame の2つめと3つめの引数
fps、fps_base
- bpy.utils.smpte_from_seconds の2つめと3つめの引数
fps、fps_base
- bpy.utils.system_resource の2つめの引数
subdir
- bpy.utils.time_from_frame の2つめと3つめの引数
fps、fps_base
- bpy.utils.time_to_frame の2つめ & 3つめ 引数
fps、fps_base
- bpy.utils.units.to_string の4つめから6つめまでの引数
precision、split_unit、compatible_unit
- bpy.utils.units.to_value の4つめの引数
str_ref_unit
- bpy.utils.user_resource の2つめと3つめの引数
subdir、create
- bpy_extras.view3d_utils.location_3d_to_region_2d の4つめの引数
default
- bpy_extras.view3d_utils.region_2d_to_origin_3d の4つめの引数
clamp
- gpu.offscreen.unbind の最初の引数
restore
- gpu_extras.batch.batch_for_shader の4つめの引数
indices
- gpu_extras.batch.presets.draw_circle_2d の4つめの引数
segments
- gpu_extras.presets.draw_circle_2d の4つめの引数
segments
- imbuf.types.ImBuf.resize の2つめの引数
resize
- imbuf.write の2つめの引数
filepath
- mathutils.kdtree.KDTree.find の2つめの引数
filter
- nodeitems_utils.NodeCategory の3つめと4つめの引数
descriptions、items
- nodeitems_utils.NodeItem の2つめから4つめまでの引数
label、settings、poll
- nodeitems_utils.NodeItemCustom の最初と2つめの引数
poll、draw
- rna_prop_ui.draw の5つめの引数
use_edit
- rna_prop_ui.rna_idprop_ui_get の2つめの引数
create
- rna_prop_ui.rna_idprop_ui_prop_clear の3つめの引数
remove
- rna_prop_ui.rna_idprop_ui_prop_get の3つめの引数
create
- rna_xml.xml2rna の2つめの引数
root_rna
- rna_xml.xml_file_write の4つめの引数
skip_typemap
コミットを参照してください。(f29a738e23ce487)
モーションブラーの速度
Fluid(流体)と Alembic モディファイアーの頂点の速度のプロパティが削除されました。これらは頂点の位置が他のフレームと合わない、トポロジーの変わるメッシュのモーションブラーに使用されていました。(128eb6c)
FluidDomainSettings.mesh_vertices
MeshSequenceCacheModifier.vertex_velocities、MeshSequenceCacheModifier.has_velocity、MeshSequenceCacheModifier.read_velocity
代わりに、レンダラーとエクスポーターでは mesh の velocity 属性を使用してください。
for attribute in mesh.attributes:
if attribute.name == 'velocity' and attribute.data_type == 'FLOAT_VECTOR':
print([item.vector for item in attribute.data])
速度の単位も変更され、Blender のシーンの距離の単位/秒になりました。従来の頂点速度は秒ではなく、フレームを基準にしていました。
