Blender 5.0: Python API

元記事:Python API - Blender Developer Documentation

互換性のなくなる変更

実行時定義のプロパティストレージデータへの(未対応)アクセスの削除

bpy.props API に定義されるプロパティが,ユーザー定義のカスタムプロパティとして同じコンテナに格納されなくなりました。

そのため、今後は Pythonの「辞書のような」構文で直接アクセスできなくなりました。

例えば、bpy.context.scene['cycles'] では、Cycles のシーン設定にアクセスできません。

詳細は、コミットと関連の設計タスクを参照してください。

新しい get_transformset_transform bpy.props アクセサ

これらの新しいコールバックにより、デフォルト(IDProperty ベースの)ストレージシステムを使用しつつ、値の編集ができます。

これらは bpy.props で定義されたプロパティに対し、基礎となる IDProperty ストレージへの直接アクセスが完全に未対応になったために必要になりました。つまり、get/set のみを使用して値のトランスフォームを行っていたが、まだ IDProperty に格納していた古いコードが、もう通用しなくなったということです。

以下関連のメモです:

  • 読み込み専用プロパティは新しい options フラグ、READ_ONLY を使用して定義してください。

  • get/set はデフォルトシステム外でデータを格納する時にのみ使用してください。

    • set がなく、get のみの場合は、強制的に読み込み専用プロパティになります(以前と同じ挙動)。
    • get がなく、set のみの場合はエラーになるようになりました。
    • 通常、一つの同じプロパティに getget_transform、または setset_transform の両方のコールバックは必要ありません。
  • 既存の get/set コールバック同様、get_/set_transform コールバックは常に その bpy.props プロパティ定義により決められた制限に合わせた値(同じまたは互換性のあるタイプ、必要な範囲、同じ次元・長さの Vector プロパティなど)を生成する必要があります。

メモ:最初のベンチマークでは、'transform' バージョンの get/set は「実際の」get/set より何倍か高速でした。

詳細は、コミットと、関連する設計タスクを参照してください。

エクステンションと他の Python コード更新用チップ

リセット

●従来

del obj['cycles']

# または…

obj.property_unset('cycles')

●今後

obj.property_unset('cycles')
コピー

●従来

# ノーチェックのため非常に危険
# 割り当てた辞書風データのコンテンツで実行
obj['cycles'] = another_obj['cycles']

●今後
作業中。内容を再帰的にコピーするアイデアはありますが、GroupProperty レベル自体でこの機能の処理も改善できるかも…

バージョニング

●従来

old_prop = obj['old_data']['old_prop']
obj.new_data.new_prop = old_prop

●今後

# これは `bl_system_properties_get` に想定している主な用途
sys_props = obj.bl_system_properties_get()
old_prop = sys_props['old_data']['old_prop']
obj.new_data.new_prop = old_prop
プロパティハンドラ回避

●従来

# getter コールバック関数の
# トリガーなしでのプロパティ取得
my_var = obj.my_addon['my_prop']

# setter や update コールバック関数の
# トリガーなしでのプロパティ設定
obj.my_addon['my_prop'] = 1

●今後
もう直接アクセスには対応していません。依存する必要のないコードに書き換える必要があるでしょう。そうしたくない場合は、皆さんの getter/setter 関数にチェックするフラグを定義(ここを参照)、もしくは明示的なカスタム getter と setter で(カスタムプロパティ同様に)強制的にカスタムデータストレージを使用してください。

このような RNA プロパティシステム処理のバイパスは全くお勧めできません。やるなら自己責任でどうぞ!

バンドルモジュールのプライベート化

Blender は様々なバンドル Python モジュールとともにリリースされていますが、これらはパブリック API の一部としてドキュメント化はされておらず、スクリプトがこれらをインポートする可能性もあります。

下記のモジュールはプライベートになりました。スクリプトから使用しないでください。

  • animsys_refactor
  • bl_console_utils
  • bl_i18n_utils
  • bl_previews_utils
  • bl_rna_utils
  • bl_text_utils
  • bl_ui_utils
  • bpy_restrict_state
  • console_python
  • console_shell
  • graphviz_export
  • keyingsets_utils
  • rna_info
  • rna_manual_reference
  • rna_xml

GPU

  • 廃止予定の BGL API を削除。(decd88f67e)

  • 廃止予定の Image.bindcode を削除。代わりに gpu.texture.from_image(image) と新しい gpu.types.GPUTexture タイプを使用してください。(decd88f67e)

  • GLSL ソースファイルからの直接シェーダー生成を削除 (11063b5b90)

  • Python 描画ハンドラ内部での描画時、gpu.texture.from_image から返ってきたテクスチャは、draw_texture_2d(is_scene_linear_with_rec709_srgb_target=True) または IMAGE_SCENE_LINEAR_TO_REC709_SRGB ビルトインシェーダーで描画する必要があります。これはレンダーターゲットがシーンリニア色空間内であることが判っている場合は必要ありません。(e2dc63c5de)

Render

  • EEVEE のレンダーエンジン識別子が、BLENDER_EEVEE_NEXT から BLENDER_EEVEE に変更されました。(4fe75da973)

  • 多数のレンダーパスの不明瞭な略語を避けるようリネームされました。例えば、'DiffCol' は 'Diffuse Color'、'IndexMA' は 'Material Index'、'Z' は 'Depth' などです。(PR#141675PR#142731)

  • scene.eevee.gtao_distance がビューレイヤーに移動し、view_layer.eevee.ambient_occlusion_distance にリネームしました。(1c29a2e2e5)

  • SceneEEVEE プロパティの gtao_qualityuse_gtao が削除されました。(they did nothing since 4.2). (1c29a2e2e5)

Paint

  • Brush タイプの enum プロパティ名の接頭辞が、_tool から _brush_type (例えば brush.sculpt_toolbrush.sculpt_brush_type)に変更されました。(ab3c129dd9)

  • tool_settings 構造体からモード固有の Paint 構造体に unified_paint_settings 構造体を移動しました(例:scene.tool_settings.unified_paint_settings は、scene.tool_settings.sculpt.unified_paint_settings になります)。(4434a30d40)

  • Radial symmetry がシーンのツール設定(scene.tool_settings.sculpt.radial_symmetry など)から mesh(mesh.radial_symmetry)に移動しました。(d73b8dd4f3)

  • Brush の curvecurve_preset プロパティがそれぞれ curve_distance_falloffcurve_distance_falloff_preset にリネーム。 (327a1925cf)

  • brush.curve_presetbrush.sculpt_curves_falloff_preset オペレーターが削除されました。これらの機能はテンプレートを通じたカーブの直接制御で置き換えられました。(0f3c6da272)
    controll

Image

  • ImageTexture のプロパティ、filter_typeuse_mipmapuse_mipmap_gaussfilter_lightprobesfilter_eccentricityuse_filter_size_min が削除されました(これらは2.80以降何もしていませんでした)。(PR#139978)

VSE

  • VSE がコンテクストに別のシーンを使用するように:

    • context.workspace.sequencer_scene(または短く context.sequencer_scene)が、現在のワークスペースで全シーケンスエディターが使用しているシーンです。
    • context.scene はウィンドウ内のアクティブシーンを指しています(これは VSE が使用しているシーンとは違う可能性があります!)
  • 新しく追加された image(画像)とエフェクトストリップ(これは start_frame と相対値で間接的に期間がコントロールされています)の end_frame プロパティが、複数の画像ストリップの同時追加に対応するため、length で置き換えられました。(PR#143974)

  • ストリップ追加オペレーターが、追加後にストリップのトランスフォームが可能な move_strips プロパティを使用するように。このプロパティはデフォルトで有効になっており、これらのオペレーターがモーダルになります。(PR#138382)

アセット

  • context.active_file がもうアセットシェルフで利用できなくなりました。代わりに context.asset を使用してください。(7cd26d37ea)

  • bpy.types.AssetHandle が削除されました。代わりに AssetRepresentation を使用してください。(85878cf541)

  • bpy.types.AssetCatalogPath が削除されました。これはどこも使用していない、または利用できませんでした。(bafb63a654)

  • UILayout.template_asset_view() が削除されました。これはアセットシェルフにとって代わられました。(ae9ca35e3b)

Theme

  • 下記のエディター毎のテーマプロパティが削除されました。
    • navigation_barexecution_buts。(dd43eae0d3)
    • tab_activetab_inactivetab_outline。これらは通常のタブウィジェットカラーに追従するようになりました。(e8735c3203)
    • panelcolorsheaderbacksub_back を含む)。グローバルスタイリングの panel_headerpanel_backpanel_sub_back で置き換えられました。(7818082d02)

Nodes

  • 廃止予定のコンポジターノードが削除されました。(#140355)

  • 廃止予定の Combine(合成)と Separate(分離)系ノードが削除されました。(#135376)

  • Point Density(点密度)テクスチャノードが削除されました。(#140292)

  • Sky(大気)テクスチャノードの sun_directionturbidityground_albedo 入力が削除されました。(ab21755aaf)

  • ツリーインターフェイスアイテムの識別子による参照が可能に。(6f2988f0af)

  • scene.use_nodes が廃止予定になり、6.0で削除される予定です。現在、常に True を返し、設定してもなんの効果もありません。(PR#143578).

  • scene.node_tree が削除されました。代わりに scene.compositing_node_group を使用してください。(PR#143619)
    基本的なノードツリーを作成するには下記を参照してください。

# 古い方法によるデフォルトコンポジティングノードツリー作成
scene.use_nodes = True # Node tree with default nodes is created here
default_render_layers = scene.node_tree.nodes["Render Layers"]
...

# 新しい方法によるノードツリー作成
tree = bpy.data.node_groups.new("My new comp", "CompositorNodeTree")
scene.compositing_node_group = tree
rlayers = tree.nodes.new(type="CompositorNodeRLayers")
output = tree.nodes.new(type='NodeGroupOutput')
tree.interface.new_socket(name="Image", in_out="OUTPUT", socket_type="NodeSocketColor")
tree.links.new(output.inputs["Image"], rlayers.outputs["Image"])
rlayers.location[0] -= 1.5 * rlayers.width
  • File Output(ファイル出力)ノードが、directoryfile_name を二つの違う入力と取るように。
    • 削除:
    • bpy.types.CompositorNodeOutputFile.file_slots
    • bpy.types.CompositorNodeOutputFile.layer_slots
    • bpy.types.CompositorNodeOutputFile.base_path
    • 追加:
    • bpy.types.CompositorNodeOutputFile.directory
    • bpy.types.CompositorNodeOutputFile.file_name
    • bpy.types.CompositorNodeOutputFile.file_output_items
# 4.5でのカスタム名の入力ソケットの設定
file_output_node = ...
file_output_node.file_slots[0].path = "my_custom_socket_name"

# 5.0:
file_output_node = ...
file_output_node.file_output_items[0].name = "my_custom_socket_name"
  • SpaceNodeEditor.geometry_nodes_typeSpaceNodeEditor.geometry_nodes_tool_tree がそれぞれ node_tree_sub_typeselected_node_group にリネームされました。(3d7c8d022e)

  • コンポジティングの Color(カラー)ノードの出力ソケットを "RGBA" から "Color"(カラー)にリネーム。(fff3af04c4)

  • コンポジターの Gamma(ガンマ)ノードの CompositorNodeGamma は、その対になるシェーダーノードの ShaderNodeGamma で置き換えられました。緩和策のサンプル:

# 旧:
n = bpy.context.scene.node_tree.nodes.new("CompositorNodeGamma")

# 新:
n = bpy.context.scene.node_tree.nodes.new("ShaderNodeGamma")

Alembic

  • 廃止予定の Scene.alembic_export API を削除。これは2.8から廃止予定で、対応するインポートもありません。実際のインポート・エクスポートオペレーターに変更はなく、bpy.ops.wm.alembic_importbpy.ops.wm.alembic_export としてそのままあります。(ec4db5825d)

  • bpy.ops.wm.alembic_export(上記)のオプションである、visible_objects_only オペレーターを削除。(7c75651b3b)

USD

  • bpy.ops.wm.usd_importimport_subdiv オペレーターを import_subdivision にリネーム。(fe54725113)

  • bpy.ops.wm.usd_importattr_import_mode オペレーターを property_import_mode にリネーム。(c2cf3783c4)

  • bpy.ops.wm.usd_exportexport_textures オペレーターオプションを削除。これは export_textures_mode オプションが代替となります。(b248c83027)

  • bpy.ops.wm.usd_exportallow_unicode オペレーターオプションをデフォルトで true に変更。(f7210eabd8)

  • bpy.ops.wm.usd_exportvisible_objects_only オペレーターオプションを削除。(7c75651b3b)

ロギング

  • バックグラウンドレンダー進捗も含め、ログ出力のフォーマットが変更されました。この出力を解析するアドオンやレンダーファームは更新が必要になるでしょう。

Mesh

  • UV layer pin プロパティが、このプロパティアクセス時に対応する他の属性を勝手に作成しなくなりました。代わりに _ensure() 関数で、確実な同名の属性を作ります。(e1c121cd6a)

  • UV の選択が、全 UV マップ間で共有されるように。

    • 追加:
      以下の UV 属性が追加されました。
    • .uv_select_vert (面コーナー)
    • .uv_select_edge (面の辺)
    • .uv_select_face (面)

    BMesh の属性:

    • bmesh.types.BMLoop.uv_select_vert.
    • bmesh.types.BMLoop.uv_select_edge.
    • bmesh.types.BMFace.uv_select.
    • bmesh.types.BMesh.uv_select_sync_valid.

    BMesh のメソッド:

    • bmesh.types.BMLoop.uv_select_vert_set().

    • bmesh.types.BMLoop.uv_select_edge_set().

    • bmesh.types.BMFace.uv_select_set().

    • bmesh.types.BMesh.uv_select_flush_mode().

    • bmesh.types.BMesh.uv_select_flush().

    • bmesh.types.BMesh.uv_select_flush_shared().

    • bmesh.types.BMesh.uv_select_sync_from_mesh().

    • bmesh.types.BMesh.uv_select_sync_to_mesh().

    • bmesh.types.BMesh.uv_select_foreach_set().

    • bmesh.types.BMesh.uv_select_foreach_set_from_mesh().

    詳細は bmesh.types API ドキュメントを参照してください。

    • 削除:
      下記の UV 選択プロパティが削除されました。

      • bpy.types.MeshUVLoopLayer.vertex_selection.

      • bpy.types.MeshUVLoopLayer.edge_selection.

      • bmesh.types.BMLoopUV.select.

      • bmesh.types.BMLoopUV.select_edge.

ユーザーインターフェイス

  • bpy.types.UIList.layout_typeGRID 列挙値が削除されました。eef971e377)
  • RNA_ADD アイコンが Blender 自体が使用しておらず、削除されました。(c8468f5cfa)
  • bpy.types.UILayout.emboss 内の RADIAL_MENU 列挙値を PIE_MENU にリネーム。(c7b91903df).

アノテーションとグリースペンシル

  • アノテーションに関する RNA タイプとプロパティがリネームされました。
    タイプ:
以前 以降
bpy.types.GPencilStrokePoint bpy.types.AnnotationStrokePoint
bpy.types.GPencilStroke bpy.types.AnnotationStroke
bpy.types.GPencilFrame bpy.types.AnnotationFrame
bpy.types.GPencilFrames bpy.types.AnnotationFrames
bpy.types.GPencilLayer bpy.types.AnnotationLayer
bpy.types.GPencilLayers bpy.types.AnnotationLayers
bpy.types.GreasePencil bpy.types.Annotation
bpy.types.BlendDataGreasePencils bpy.types.BlendDataAnnotations
  • プロパティ:

    以前 以降
    bpy.data.grease_pencils bpy.types.annotations
    MovieClip.grease_pencil MovieClip.annotation
    NodeTree.grease_pencil NodeTree.annotation
    Scene.grease_pencil Scene.annotation
    SpaceImageEditor.grease_pencil SpaceImageEditor.annotation
    SpaceSequenceEditor.grease_pencil SpaceSequenceEditor.annotation
    MovieTrackingTrack.grease_pencil MovieTrackingTrack.annotation
  • Grease Pencil に関連する一部の RNA タイプがリネーム:

    以前 以降
    bpy.types.GreasePencilv3 bpy.types.GreasePencil
    bpy.data.grease_pencils_v3 bpy.data.grease_pencils

アニメーションとリギング

  • ボーンの hide プロパティ(bpy.data.armatures["Armature"].bones[0].hide など)が、編集ボーンの可視性に影響するように。ボーンの可視性をオブジェクトまたはポーズモードで影響させるには、ポーズボーンの新しいプロパティ(bpy.data.objects["Armature"].pose.bones[0].hide など)を使用してください。編集ボーンのこのプロパティは今も存在しており、変更はありません。

  • ポーズボーンに選択状態が格納される select プロパティ(bpy.data.objects["Armature"].pose.bones[0].select など)が付きました。選択は編集モードの出入りで編集ボーンと同期されます。
    ボーン自体の selectselect_headselect_tail プロパティ(bpy.data.armatures["Armature"].bones[0].select など)は削除されました。代わりに編集ボーンの同名のプロパティ(bpy.data.armatures["Armature"].edit_bones[0].select など)を使用してください。

  • activate_new_action プロパティが poselib.create_pose_asset オペレーターから削除されました。このプロパティはすでに4.5から廃止予定になっており、なんの効果もありませんでした。(debd0c0877)

  • context.space_data.action ポインタが Dope Sheet コンテクストから削除されました (d1962be44c)。代わりに context.active_action を使用してください。

  • action.layer_prevaction.layer_next オペレーターが削除されました。(19bf803e51)

  • keyframe_insert() のオプションのパラメータで、廃止予定で何の機能もなかった INSERTKEY_XYZ_TO_RGB フラグが完全に削除されました。(e6f1cd6a29)

  • 旧 Action API から(4.4で導入された)現在の API へのコードの移植をシンプルにする新しい関数とパラメータ。(dbcb701eb2):

    • channelbag.fcurves.new()action.fcurve_ensure_for_datablock() に、F カーブが配置されるチャンネルグループを決める group_name パラメータが追加されました。そのグループが存在しない場合は作成されます。
    • 新しい関数 bpy_extras.anim_utils.action_ensure_channelbag_for_slot(action, slot)。与えられたスロット用の ActionChannelbag を返し、必要であれば、その channelbag を入れる新規レイヤーと新規キーフレームストリップも作成します。
    • 新しい関数 channelbag.fcurves.ensure() は、channelbag.fcurves.new() と同じパラメータを取りますが、もし F カーブが既存であれば、単にそれを返します。
  • Action API が削除されました (1395abc502)。これには action.fcurvesaction.groupsaction.id_root プロパティも範囲に入ります。
    action.fcurvesaction.groups の代わりに、channelbag のこれらのプロパティにアクセスしてください。アクションの各スロットには channelbag を格納できます。bpy_extras.anim_utils の便利関数を使用して取得するか、既存の物を確保してください。

    次の旧コードの場合は:

# 検索:
found_fcurve = action.fcurves.find("location", index=2)

# 作成:
new_fcurve = action.fcurves.new("location", index=2, action_group="Name")

下記のコードで置き換えます:

# 検索:
channelbag = anim_utils.action_get_channelbag_for_slot(action, action_slot)
found_fcurve = channelbag.fcurves.find("location", index=2)

# 作成:
channelbag = anim_utils.action_ensure_channelbag_for_slot(action, action_slot)
new_fcurve = channelbag.fcurves.new("location", index=2, group_name="Name")

この旧コードの場合は:

# F-Curve の存在を保証:
fcurve = action.fcurves.find("location", index=2, action_group="Name")
if not fcurve:
    fcurve = action.fcurves.new("location", index=2, action_group="Name")

このコードで置き換えます:

# F-Curve の存在を保証:
channelbag = anim_utils.action_ensure_channelbag_for_slot(action, action_slot)
fcurve = channelbag.fcurves.ensure("location", index=2, group_name="Name")
  • 同様に、action.groups の代わりに channelbag.groups を使用します。
    グループパラメータの名前が違うことに注意してください (action_groupgroup_name になります)。これがグループの名前であり、グループ自体の参照ではないことを明確にするためです。

    Blender 4.4以降、アクション自体に特定のデータブロックタイプとの結びつきはありません。これはアクションスロットに移行しました。そのため、action.id_rootaction_slot.target_id_type で置き換えられました。

また、4.4へのアップグレード(英文)には、旧コードから現在の API へ移植するサンプルが多数あります。もちろん、上記で解説した Blender 5.0での変更はありませんが、いい俯瞰となるでしょう。

mathutils

  • mathutils タイプがネイティブなバッファプロトコルに対応しました。これにより、例えば Vector の基底型が以前は float64 だったのが float32 になるようなことが起こります。(b856b6010e)

インラインシェーダーノード

外部レンダーエンジンで Closure(クロージャ)、Bundle(バンドル)、Repeat Zone(リピートゾーン)に対応するため、インラインシェーダーノードツリーを取得する新しい API が追加されました。さらにこれはノードグループのインライン化と、リルートとミュート中のノードの削除することで、シェーダーノードのエクスポートを単純化できます。(c3f49cd24e)

詳細は Python API ドキュメントを参照してください。

ポイントキャッシュ

  • PointCache.compression プロパティが削除されました。現在のキャッシュは常に圧縮されているためです。(PR#144356)

廃止予定

GPU

  • DEPTH24_STENCIL8DEPTH_COMPONENT24 が廃止予定になりました。
    これらを使用している場合は、Depth32f 版に変換します。(#140644)

  • UINT_24_8 データタイプが廃止予定に。使用していた場合は FLOAT を使用しているとみなされます。(#140715)

シェーディング

  • world.use_nodes が廃止予定となり、6.0で削除される予定です。現在これは常に True を返し、設定しても何の効果もありません。(PR#142342)
    デフォルトノードによるノードツリーを作成する場合:
# 古い方法によるデフォルトワールドノードツリー作成
scene.world = bpy.data.worlds.new("My new world")
scene.world.use_nodes = True # ここでデフォルトノードによるノードツリーを作成
...

# 新しい方法によるノードツリー作成
scene.world = bpy.data.worlds.new("My new world") # ここでデフォルトノードによるノードツリーを作成
scene.world.use_nodes = True # 廃止予定、効果なし
  • material.use_nodes が廃止予定になり、6.0で削除されます。現在これは常に True を返し、設定しても何の効果もありません。(PR#141278)
    デフォルトノードによるノードツリーを作成する場合:
# 古い方法によるデフォルトマテリアルノードツリー作成
mat = bpy.data.materials.new("My new material")
obj = ... # アクティブオブジェクト取得
obj.active_material = mat
mat.use_nodes = True # デフォルトノードツリー作成

# 新しい方法によるデフォルトマテリアルノードツリー作成
mat = bpy.data.materials.new("My new material") # Creates a default node tree
obj = ... # アクティブオブジェクト取得
obj.active_material = mat
mat.use_nodes = True # 廃止予定、効果なし

追加

  • path_from_module で、struct やプロパティの Python モジュールパスを問い合わせることができるように。(df7273930f)

パイプラインと入出力

  • bpy.types.CollectionExports に、コレクションエクスポーターを作成、削除、並べ替える三つの新しい RNA 関数を追加。(7f0d15b31f):
    • collection.exporters.new('IO_FH_alembic', name="Alembic")
    • collection.exporters.remove(exporter)
    • collection.exporters.move(0, 1)

コンテクストのロギング

  • 一時オーバーライドの with の対象で logging_set(True) を呼び出すことで、コンテクストメンバのログを取る機能を追加。処理中にアクセスされたメンバのログを取り、どのメンバがオーバーライド可能かどうかが不明な時のデバッグを支援してくれそうです。(439fe8a1a0)
import bpy
from bpy import context

my_objects = [context.scene.camera]

with context.temp_override(selected_objects=my_objects) as override:
    override.logging_set(True)  # Enable logging.
    bpy.ops.object.delete()
  • コマンドラインでのロギングも利用可能になり、従来の bpy.context ロギングカテゴリの置き換えとなる context ロギングカテゴリを通じて、全コンテクストメンバのアクセスの全体的なログを取ります。(e2872c0bfe)
./blender --log-level trace --log "context"

ワーキング色空間

すでにカスタムの OpenColorIO コンフィギュレーションが可能になっていますが、Working Space(ワーキング空間)オプションの追加により、Linear Rec.709以外のシーンリニア色空間がより一般的になるでしょう。

ワーキング空間とは関係なく同じ色空間を取得するため、エクスポーターはマテリアル、ライト、その他の色を Linear Rec.709に変換できます。インポーターは Linear Rec.709からシーンリニアに変換できます。

もう一つの方法として、もしファイルフォーマットが color-space メタデータに対応していれば、bpy.data.colorspace.working_space_interop_id をワーキング空間の確認に使用できます。一般的な値は lin_rec709_scenelin_rec2020_scenelin_ap1_scene(ACEScg)です。

mathutils

  • mathutils.geometry.intersect_point_line_segment 関数を追加。intersect_point_line と似ていますが、ラインセグメントの端で範囲制限します。(44d04ad857)

コア

  • bpy.data.file_path_foreach() を追加、これは blend ファイル内で使用されている各ファイルパスのコールバック関数です (d33a6a1723)。このコールバック関数は巡回済みのパスを置き換える新しいパスを返します。

Blender Foundation の文書を翻訳、ライセンスは CC-BY-SA 4.0 Int にて公開