﻿<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ja">
	<id>https://wiki.blender.jp/index.php?action=history&amp;feed=atom&amp;title=Dev%3AJA%2FRef%2FRelease_Notes%2F4.10%2Fpython_api</id>
	<title>Dev:JA/Ref/Release Notes/4.10/python api - 版の履歴</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.blender.jp/index.php?action=history&amp;feed=atom&amp;title=Dev%3AJA%2FRef%2FRelease_Notes%2F4.10%2Fpython_api"/>
	<link rel="alternate" type="text/html" href="https://wiki.blender.jp/index.php?title=Dev:JA/Ref/Release_Notes/4.10/python_api&amp;action=history"/>
	<updated>2026-07-31T01:02:08Z</updated>
	<subtitle>このウィキのこのページに関する変更履歴</subtitle>
	<generator>MediaWiki 1.31.0</generator>
	<entry>
		<id>https://wiki.blender.jp/index.php?title=Dev:JA/Ref/Release_Notes/4.10/python_api&amp;diff=173126&amp;oldid=prev</id>
		<title>Yamyam: ページの作成:「元記事：[https://developer.blender.org/docs/release_notes/4.1/python_api/ Python API - Blender Developer Documentation]  = Blender 4.1: Python API =  == Python 3.11 =…」</title>
		<link rel="alternate" type="text/html" href="https://wiki.blender.jp/index.php?title=Dev:JA/Ref/Release_Notes/4.10/python_api&amp;diff=173126&amp;oldid=prev"/>
		<updated>2024-03-15T21:39:02Z</updated>

		<summary type="html">&lt;p&gt;ページの作成:「元記事：[https://developer.blender.org/docs/release_notes/4.1/python_api/ Python API - Blender Developer Documentation]  = Blender 4.1: Python API =  == Python 3.11 =…」&lt;/p&gt;
&lt;p&gt;&lt;b&gt;新規ページ&lt;/b&gt;&lt;/p&gt;&lt;div&gt;元記事：[https://developer.blender.org/docs/release_notes/4.1/python_api/ Python API - Blender Developer Documentation]&lt;br /&gt;
&lt;br /&gt;
= Blender 4.1: Python API =&lt;br /&gt;
&lt;br /&gt;
== Python 3.11 ==&lt;br /&gt;
&lt;br /&gt;
Python が VFX platform 2024に合わせて[https://www.python.org/downloads/release/python-3110/ バージョン 3.11]にアップグレードしました。&lt;br /&gt;
&lt;br /&gt;
== Enum ID プロパティ ==&lt;br /&gt;
&lt;br /&gt;
整数型（integer）プロパティが列挙（enum）型アイテムに対応しました。[https://projects.blender.org/blender/blender/commit/92cf9dd2f2d7f4d8d380d4b1dcc17f6c2b5b175d 92cf9dd2f2d7f4d8d380d4b1dcc17f6c2b5b175d]&lt;br /&gt;
&lt;br /&gt;
UI を通じた列挙アイテムの編集は未対応です（技術的な理由は上のコミットメッセージを見てください）。&lt;br /&gt;
&lt;br /&gt;
列挙アイテムは整数型プロパティに [https://docs.blender.org/api/main/bpy.types.bpy_struct.html#bpy.types.bpy_struct.id_properties_ui id_properties_ui] Python メソッドを使用して追加できます。`as_dict` メソッドを使用してプロパティの列挙リストアイテムを取得できます。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;Python&amp;quot;&amp;gt;&lt;br /&gt;
my_object[&amp;quot;my_prop&amp;quot;] = 2&lt;br /&gt;
ui_data = my_object.id_properties_ui(&amp;quot;my_prop&amp;quot;)&lt;br /&gt;
ui_data.update(items=[&lt;br /&gt;
    (&amp;quot;TOMATOES&amp;quot;, &amp;quot;Tomatoes&amp;quot;, &amp;quot;Solanum lycopersicum&amp;quot;),&lt;br /&gt;
    (&amp;quot;CUCUMBERS&amp;quot;, &amp;quot;Cucumbers&amp;quot;, &amp;quot;Cucumis sativus&amp;quot;),&lt;br /&gt;
    (&amp;quot;RADISHES&amp;quot;, &amp;quot;Radishes&amp;quot;, &amp;quot;Raphanus raphanistrum&amp;quot;),&lt;br /&gt;
])&lt;br /&gt;
print(ui_data.as_dict())&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
既存の便利なラッパー関数も同様に対応しています。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;Python&amp;quot;&amp;gt;&lt;br /&gt;
from rna_prop_ui import rna_idprop_ui_create&lt;br /&gt;
&lt;br /&gt;
rna_idprop_ui_create(my_object, &amp;quot;my_prop&amp;quot;, default=2, items=[&lt;br /&gt;
    (&amp;quot;TOMATOES&amp;quot;, &amp;quot;Tomatoes&amp;quot;, &amp;quot;Solanum lycopersicum&amp;quot;),&lt;br /&gt;
    (&amp;quot;CUCUMBERS&amp;quot;, &amp;quot;Cucumbers&amp;quot;, &amp;quot;Cucumis sativus&amp;quot;),&lt;br /&gt;
    (&amp;quot;RADISHES&amp;quot;, &amp;quot;Radishes&amp;quot;, &amp;quot;Raphanus raphanistrum&amp;quot;),&lt;br /&gt;
])&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
列挙アイテムの付いた整数型プロパティは、UI 内でドロップダウンボタンとして表示されます。&lt;br /&gt;
&lt;br /&gt;
[[File:Id_property_enums.png|center]]&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
![](../../images/Id_property_enums.png)&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== レイアウトパネル ==&lt;br /&gt;
Blenderに新しく &amp;quot;layout panel&amp;quot; が追加されました。このパネルは `draw` 関数内で定義され、新たな登録は必要ありません。&lt;br /&gt;
&lt;br /&gt;
これにより、パネル内の開閉可能なセクションの作成に必要なコード量が大幅に削減されます。([https://projects.blender.org/blender/blender/commit/f824476bd5f81f98f9b969661e8e9ac4d50a5521 f824476bd5f81f98f9b969661e8e9ac4d50a5521]、[https://projects.blender.org/blender/blender/commit/8896446f7e72084018bf7a45306a83d92e22f34a 8896446f7e72084018bf7a45306a83d92e22f34a]、[https://projects.blender.org/blender/blender/commit/ddd06eeb8f7495600c3a42a1c664c8b4de958ede ddd06eeb8f7495600c3a42a1c664c8b4de958ede])&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;Python&amp;quot;&amp;gt;&lt;br /&gt;
import bpy&lt;br /&gt;
from bpy.props import BoolProperty&lt;br /&gt;
&lt;br /&gt;
class LayoutDemoPanel(bpy.types.Panel):&lt;br /&gt;
    bl_label = &amp;quot;Layout Panel Demo&amp;quot;&lt;br /&gt;
    bl_idname = &amp;quot;SCENE_PT_layout_panel&amp;quot;&lt;br /&gt;
    bl_space_type = 'PROPERTIES'&lt;br /&gt;
    bl_region_type = 'WINDOW'&lt;br /&gt;
    bl_context = &amp;quot;scene&amp;quot;&lt;br /&gt;
&lt;br /&gt;
    def draw(self, context):&lt;br /&gt;
        layout = self.layout&lt;br /&gt;
        scene = context.scene&lt;br /&gt;
&lt;br /&gt;
        layout.label(text=&amp;quot;Before&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
        header, panel = layout.panel(&amp;quot;my_panel_id&amp;quot;, default_closed=False)&lt;br /&gt;
        header.label(text=&amp;quot;Hello World&amp;quot;)&lt;br /&gt;
        if panel:&lt;br /&gt;
            panel.label(text=&amp;quot;Success&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
        header, panel = layout.panel_prop(scene, &amp;quot;show_demo_panel&amp;quot;)&lt;br /&gt;
        header.label(text=&amp;quot;My Panel&amp;quot;)&lt;br /&gt;
        if panel:&lt;br /&gt;
            panel.prop(scene, &amp;quot;frame_start&amp;quot;)&lt;br /&gt;
            panel.prop(scene, &amp;quot;frame_end&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
        layout.label(text=&amp;quot;After&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
bpy.utils.register_class(LayoutDemoPanel)&lt;br /&gt;
bpy.types.Scene.show_demo_panel = BoolProperty(default=False)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:layout_panels_python.png|center]]&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
![](../../images/layout_panels_python.png)&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;span id=&amp;quot;breaking-changes&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;互換性の失われる変更 ==&lt;br /&gt;
&lt;br /&gt;
=== Foreach ===&lt;br /&gt;
* `foreach_get` と `foreach_set` が、8、16、64ビットの内部ストレージに最適化されました。([https://projects.blender.org/blender/blender/pulls/115761 PR#115761])&lt;br /&gt;
&lt;br /&gt;
* `foreach_set` が、より正確な境界チェックを行うようになり、従来こっそり不正な書き込みを行っていた場所では、`TypeError` が発生します。&lt;br /&gt;
&lt;br /&gt;
=== Light Probes ===&lt;br /&gt;
* Lightprobe タイプのアイテムがリネームされました。`bpy.types.LightProbe.type`、` bpy.types.BlendDataProbes.new()`、`bpy.ops.object.lightprobe_add()` に影響します。&lt;br /&gt;
** `CUBEMAP` → `SPHERE`&lt;br /&gt;
** `PLANAR` → `PLANE`&lt;br /&gt;
** `GRID` → `VOLUME`&lt;br /&gt;
&lt;br /&gt;
* `show_data` が廃止予定になりました。代わりに `use_data_display` を使用してください。&lt;br /&gt;
&lt;br /&gt;
* 各 `LightProbe` に、自身の `data_display_size` プロパティが付きました。&lt;br /&gt;
&lt;br /&gt;
=== Mesh ===&lt;br /&gt;
* スカルプトのマスク値が汎用属性に格納されるように。([https://projects.blender.org/blender/blender/commit/f2bcd73bd25625d6b5c1194a4199e96fc5fafa2e f2bcd73bd25625d6b5c1194a4199e96fc5fafa2e])&lt;br /&gt;
** 名前は &amp;quot;.sculpt_mask&amp;quot;（`FLOAT` タイプ）&lt;br /&gt;
** マスクのアクセス、追加、削除がシンプルになりました。&lt;br /&gt;
*** `Mesh.vertex_paint_mask` プロパティで集合（collection）ではなく、この属性が直接返ってきます。&lt;br /&gt;
*** `Mesh.vertex_paint_mask_ensure()` と、`Mesh.vertex_paint_mask_remove()` 関数で、属性の追加と削除が可能。&lt;br /&gt;
&lt;br /&gt;
* `Mesh` の `auto_smooth` プロパティがモディファイアーノードグループアセットで置き換えられました。([https://projects.blender.org/blender/blender/commit/89e3ba4e25c9ff921b2584c294cbc38c3d344c34 89e3ba4e25c9ff921b2584c294cbc38c3d344c34])&lt;br /&gt;
** `use_auto_smooth` は削除されました。スムーズとスムーズ以外のタグが混ざっている場合、面コーナーの法線が自動的に使用されます。メッシュはカスタム法線が存在していれば、常にそれを使うようになりました。&lt;br /&gt;
** `auto_smooth_angle` は削除されました。`&amp;quot;sharp_edge&amp;quot;` 属性をコントロールするモディファイアー（またはオペレーター）で置き換えられました。つまり、もう（オブジェクトなしの）メッシュ単体では、角度による自動スムージングに関することは何も知ることはできなくなったということです。&lt;br /&gt;
** `create_normals_split`、`calc_normals_split`、`free_normals_split` が削除され、もっとシンプルな `Mesh.corner_normals` 集合プロパティ（bpy_prop_collection）によって置き換えられました。これは法線のキャッシュへのアクセスを与えるため、関連データに変更がある時は自動的に更新されます。&lt;br /&gt;
** `MeshLoop.normal` が読み込み専用プロパティになりました。カスタム法線は `normals_split_custom_set` または `normals_split_custom_set_from_vertices` で作成してください。&lt;br /&gt;
&lt;br /&gt;
=== Material ===&lt;br /&gt;
* `displacement_method` プロパティが、`cycles.properties.CyclesMaterialSettings` から `bpy.types.Material` に移動しました。[https://projects.blender.org/blender/blender/commit/a001cf9f2b08a67aa3b20f1857eac5c915f5ef33 a001cf9f2b08a67aa3b20f1857eac5c915f5ef33]&lt;br /&gt;
&lt;br /&gt;
=== Sequencer ===&lt;br /&gt;
* ストリップの変換フィルタータイプの `SUBSAMPLING_3x3` が、`BOX` にリネームされました。`bpy.types.SequenceTransform.filter` に影響します。([https://projects.blender.org/blender/blender/pulls/117584 PR#117584])&lt;br /&gt;
&lt;br /&gt;
=== View Layer ===&lt;br /&gt;
* `Scene.view_layers.move()` メソッドを追加、ビューレイヤーを再配置できます。([https://projects.blender.org/blender/blender/pulls/117037 PR#117037])&lt;br /&gt;
&lt;br /&gt;
=== Nodes ===&lt;br /&gt;
* 一部ノード（`Store Named Attribute` など）が一度に存在するすべてのソケットタイプを持つ代わりに、動的なソケットタイプを使用するようになりました。つまり、`node.outputs[some_index]` のようなことをしても、もうこれらのノードでは同じ動作はしなくなってしまったということです。代わりにもっと信頼性の高い `node.outputs[some_socket_identifier]` を使用してください。([https://projects.blender.org/blender/blender/commit/8149678d5e1d6e0d00668c3f209736721401b4e9 8149678d5e1d6e0d00668c3f209736721401b4e9])&lt;br /&gt;
&lt;br /&gt;
== 追記 ==&lt;br /&gt;
* `Preferences.filepaths.asset_libraries.new/remove` メソッドを追加。([https://projects.blender.org/blender/blender/commit/0061f2f65030 0061f2f65030])&lt;br /&gt;
&lt;br /&gt;
* `ID.session_uid` 読み込み専用プロパティを追加。([https://projects.blender.org/blender/blender/commit/c68b22cfdf c68b22cfdf])&lt;br /&gt;
&lt;br /&gt;
* `NodesModifierBake.bake_id` 読み込み専用プロパティを追加。([https://projects.blender.org/blender/blender/commit/7149424087 7149424087])&lt;br /&gt;
&lt;br /&gt;
* `NodesModifierBake.node` 読み込み専用プロパティを追加。([https://projects.blender.org/blender/blender/commit/65b722bc3003 65b722bc3003])&lt;br /&gt;
&lt;br /&gt;
* 翻訳変更時に実行される `bpy.app.handlers.translation_update_post` アップデートハンドラを追加。([https://projects.blender.org/blender/blender/commit/8564e03cdf59fb2a71d545e81871411b82f561d9 8564e03cdf59fb2a71d545e81871411b82f561d9])&lt;br /&gt;
&lt;br /&gt;
* `Image.scale()` に、オプションの &amp;quot;frame&amp;quot; と &amp;quot;tile_index&amp;quot; 引数を追加。([https://projects.blender.org/blender/blender/commit/3d60209d3d30c9ac99fead690ceafc18d594fcb1 3d60209d3d30c9ac99fead690ceafc18d594fcb1])&lt;br /&gt;
&lt;br /&gt;
* `ShapeKey.points` プロパティを追加。([https://projects.blender.org/blender/blender/commit/7d77caab9b 7d77caab9b])&lt;br /&gt;
&lt;br /&gt;
* 複数入力のソケットにリンクする順序へのアクセスを追加。([https://projects.blender.org/blender/blender/commit/8f362817875a9b2bcdd77e53130672624dadb2da 8f362817875a9b2bcdd77e53130672624dadb2da])&lt;br /&gt;
&lt;br /&gt;
== シェイプキーのロック ==&lt;br /&gt;
シェイプキーをユーザーがロックし、スカルプトや編集モードによる不意の編集の防止が可能になりました ([https://projects.blender.org/blender/blender/commit/b350d7a4c311ec6a3065ac89febafc3ba6bd43a2 b350d7a4c311ec6a3065ac89febafc3ba6bd43a2])。アクティブシェイプをトポロジーの変更なしでトランスフォームするオペレーターを実装している、またはすでにこのチェックを行っている他のビルトインオペレーターを呼び出しているアドオンは、これらのコードにチェックを追加することを考えた方がいいかもしれません。&lt;br /&gt;
&lt;br /&gt;
ビルトインオペレーターの例：&lt;br /&gt;
&lt;br /&gt;
* `mesh.vertices_smooth` はアクティブシェイプをトランスフォームするためチェックします。&lt;br /&gt;
* `mesh.subdivide` はトポロジーを変更するのでチェックしません。&lt;br /&gt;
* `object.transform_apply` は（アクティブシェイプキーの選択がなんであれ）同じトランスフォームを全シェイプに適用するため、チェックしません。&lt;br /&gt;
* `mesh.polybuild_extrude_at_cursor_move` は、内部的に他のチェックを行うオペレーターを呼び出すため、チェックします。&lt;br /&gt;
&lt;br /&gt;
チェックの実装のサンプル：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;Python&amp;quot;&amp;gt;&lt;br /&gt;
from bpy_extras.object_utils import object_report_if_active_shape_key_is_locked&lt;br /&gt;
&lt;br /&gt;
def execute(self, context):&lt;br /&gt;
  if object_report_if_active_shape_key_is_locked(context.object, self):&lt;br /&gt;
    return {'CANCELLED'}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Yamyam</name></author>
		
	</entry>
</feed>