「Dev:JA/Ref/Release Notes/2.80/Python API」の版間の差分
(ページの作成:「= Blender 2.80: Python API の変更 = Blender 2.80では API の互換性が失われています。アドオンとスクリプトを2.80で実行するには新機能…」) |
(→インプレース行列乗算) |
||
(同じ利用者による、間の2版が非表示) | |||
3行目: | 3行目: | ||
Blender 2.80では API の互換性が失われています。アドオンとスクリプトを2.80で実行するには新機能の処理と、API の一貫性と信頼性を向上させるための変更への適合の、両面においてアップデートが必要です。 | Blender 2.80では API の互換性が失われています。アドオンとスクリプトを2.80で実行するには新機能の処理と、API の一貫性と信頼性を向上させるための変更への適合の、両面においてアップデートが必要です。 | ||
− | + | == [https://wiki.blender.org/wiki/Reference/Release_Notes/2.80/Python_API/Addons Addoons API(英文)] == | |
− | |||
− | == | ||
モジュールとクラスの登録が変更され、全アドオンはこれらの処理を更新する必要があります。 | モジュールとクラスの登録が変更され、全アドオンはこれらの処理を更新する必要があります。 | ||
− | == | + | == [https://wiki.blender.org/wiki/Reference/Release_Notes/2.80/Python_API/Scene_and_Object_API Scene and Object API(英文)] == |
新しいビューレイヤー、コレクション、選択と依存グラフシステムになり、スクリプトの更新が必要です。 | 新しいビューレイヤー、コレクション、選択と依存グラフシステムになり、スクリプトの更新が必要です。 | ||
− | == | + | == [https://wiki.blender.org/wiki/Reference/Release_Notes/2.80/Python_API/Mesh_API Mesh API(英文)] == |
メッシュ API では主にトライアングルテッセレーション用のデータ構造について少し変更があります。 | メッシュ API では主にトライアングルテッセレーション用のデータ構造について少し変更があります。 | ||
− | == | + | == [https://wiki.blender.org/wiki/Reference/Release_Notes/2.80/Python_API/Preferences_API Preferences API(英文)] == |
リデザイン・再構成された Preferences の UI に合わせるため、Python API も更新されました。 | リデザイン・再構成された Preferences の UI に合わせるため、Python API も更新されました。 | ||
− | == | + | == [https://wiki.blender.org/wiki/Reference/Release_Notes/2.80/Python_API/UI_API User Interface API(英文)] == |
新しいツールバー、プロパティレイアウト、アイコンでアドオンの更新が必要です。 | 新しいツールバー、プロパティレイアウト、アイコンでアドオンの更新が必要です。 | ||
− | == | + | == [https://wiki.blender.org/wiki/Reference/Release_Notes/2.80/Python_API/UI_DESIGN アドオンの2.8ユーザーインターフェイスへの適合(英文)] == |
Blender 2.8は新しい UI になり、アドオンを適合させる必要があります。 | Blender 2.8は新しい UI になり、アドオンを適合させる必要があります。 | ||
− | == | + | == [https://wiki.blender.org/wiki/Reference/Release_Notes/2.80/Python_API/Draw_API Draw API(英文)] == |
Blender が OpenGL コアプロファイルにアップグレードされた影響を、アドオンも受けます。 | Blender が OpenGL コアプロファイルにアップグレードされた影響を、アドオンも受けます。 | ||
− | == | + | == [https://wiki.blender.org/wiki/Reference/Release_Notes/2.80/Python_API/Timer_API Timer API(英文)] == |
指定の時間の間隔で関数を実行させるための新しい API です。 | 指定の時間の間隔で関数を実行させるための新しい API です。 | ||
− | == [[https://wiki.blender.org/wiki/Reference/Release_Notes/2.80/Python_API/Modules | + | == [https://wiki.blender.org/wiki/Reference/Release_Notes/2.80/Python_API/Animation_API Animation & Rigging API(英文)] == |
+ | |||
+ | アニメーションとリギングに関するユーティリティメソッドが多数追加されました。 | ||
+ | |||
+ | == [https://wiki.blender.org/wiki/Reference/Release_Notes/2.80/Python_API/Modules Helper Modules(英文)] == | ||
様々なヘルパーモジュールが追加・削除・変更されました。 | 様々なヘルパーモジュールが追加・削除・変更されました。 | ||
51行目: | 53行目: | ||
== キーワードのみの引数 == | == キーワードのみの引数 == | ||
− | + | すべてのオプション引数はキーワードとして与える必要があり、位置によって渡すことはできなくなりました。 | |
− | + | 2.7x | |
− | < | + | <syntaxhighlight lang="Python"> |
context.scene.frame_set(10, 0.25) | context.scene.frame_set(10, 0.25) | ||
noise.noise(position, noise.types.BLENDER) | noise.noise(position, noise.types.BLENDER) | ||
− | </ | + | </syntaxhighlight> |
− | + | 2.8x | |
− | < | + | <syntaxhighlight lang="Python"> |
context.scene.frame_set(10, subframe=0.25) | context.scene.frame_set(10, subframe=0.25) | ||
noise.noise(position, noise_basis='BLENDER') | noise.noise(position, noise_basis='BLENDER') | ||
− | </ | + | </syntaxhighlight> |
== 行列の乗算 == | == 行列の乗算 == | ||
76行目: | 78行目: | ||
注意:将来的に * は要素ごとの積に使用される予定です。 | 注意:将来的に * は要素ごとの積に使用される予定です。 | ||
− | + | 2.7x: | |
− | < | + | <syntaxhighlight lang="Python"> |
mat = Matrix() | mat = Matrix() | ||
vec = Vector() | vec = Vector() | ||
result = mat * vec | result = mat * vec | ||
− | </ | + | </syntaxhighlight> |
− | + | 2.8x: | |
− | < | + | <syntaxhighlight lang="Python"> |
mat = Matrix() | mat = Matrix() | ||
vec = Vector() | vec = Vector() | ||
result = mat @ vec | result = mat @ vec | ||
− | </ | + | </syntaxhighlight> |
2.7xの構文を2.80以降で使用した場合、下記のエラーが出ます。 | 2.7xの構文を2.80以降で使用した場合、下記のエラーが出ます。 | ||
98行目: | 100行目: | ||
注意:従来 <tt>mat_a *= mat_b</tt> では元の行列を変更しませんでしたが、2.8では変更するようになりました(Vector や Python のリストなどの他のタイプと合わせました)。 | 注意:従来 <tt>mat_a *= mat_b</tt> では元の行列を変更しませんでしたが、2.8では変更するようになりました(Vector や Python のリストなどの他のタイプと合わせました)。 | ||
− | + | 新しい行列を作成するスクリプトで、特に行列が関数の引数として渡され、予期せぬ変更が行われた場合、互換性が失われる可能性があります。 | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | == | + | == テキストのインポート == |
− | + | Blender のテキストデータブロックをモジュールとしてインポートする機能が削除されました。({{GitCommit|dc8dd24351}}). | |
− | |||
− | |||
− | |||
− | + | テキストデータブロックをモジュールとして取得する必要があるときは、以下を使用してください。 | |
− | + | <syntaxhighlight lang="Python"> | |
+ | my_module = bpy.data.text["my_module"].as_module() | ||
+ | </syntaxhighlight> |
2019年7月12日 (金) 01:12時点における最新版
目次
- 1 Blender 2.80: Python API の変更
Blender 2.80: Python API の変更
Blender 2.80では API の互換性が失われています。アドオンとスクリプトを2.80で実行するには新機能の処理と、API の一貫性と信頼性を向上させるための変更への適合の、両面においてアップデートが必要です。
Addoons API(英文)
モジュールとクラスの登録が変更され、全アドオンはこれらの処理を更新する必要があります。
Scene and Object API(英文)
新しいビューレイヤー、コレクション、選択と依存グラフシステムになり、スクリプトの更新が必要です。
Mesh API(英文)
メッシュ API では主にトライアングルテッセレーション用のデータ構造について少し変更があります。
Preferences API(英文)
リデザイン・再構成された Preferences の UI に合わせるため、Python API も更新されました。
User Interface API(英文)
新しいツールバー、プロパティレイアウト、アイコンでアドオンの更新が必要です。
アドオンの2.8ユーザーインターフェイスへの適合(英文)
Blender 2.8は新しい UI になり、アドオンを適合させる必要があります。
Draw API(英文)
Blender が OpenGL コアプロファイルにアップグレードされた影響を、アドオンも受けます。
Timer API(英文)
指定の時間の間隔で関数を実行させるための新しい API です。
Animation & Rigging API(英文)
アニメーションとリギングに関するユーティリティメソッドが多数追加されました。
Helper Modules(英文)
様々なヘルパーモジュールが追加・削除・変更されました。
名前の変更
ユーザーインターフェイス内でいくつかの語句が変更され、Python API もこれに追従しています。主な物は、
- Lamp → Light
- Group → Collection
- Dupli → Instance
- Render Layer → View Layer
- User Preferences → Preferences
キーワードのみの引数
すべてのオプション引数はキーワードとして与える必要があり、位置によって渡すことはできなくなりました。
2.7x
context.scene.frame_set(10, 0.25)
noise.noise(position, noise.types.BLENDER)
2.8x
context.scene.frame_set(10, subframe=0.25)
noise.noise(position, noise_basis='BLENDER')
行列の乗算
従来の行列の乗算は * を使用していましたが、現在スクリプトは @ を乗算に使用してください(PEP 465 より)。これは以下に適用されます。
- Vector * Vector
- Quaternion * Vector
- Matrix * Vector
- Vector * Matrix
- Matrix * Matrix
注意:将来的に * は要素ごとの積に使用される予定です。
2.7x:
mat = Matrix()
vec = Vector()
result = mat * vec
2.8x:
mat = Matrix()
vec = Vector()
result = mat @ vec
2.7xの構文を2.80以降で使用した場合、下記のエラーが出ます。
TypeError: Element-wise multiplication: not supported between 'xxx' and 'yyy' types
インプレース行列乗算
注意:従来 mat_a *= mat_b では元の行列を変更しませんでしたが、2.8では変更するようになりました(Vector や Python のリストなどの他のタイプと合わせました)。
新しい行列を作成するスクリプトで、特に行列が関数の引数として渡され、予期せぬ変更が行われた場合、互換性が失われる可能性があります。
テキストのインポート
Blender のテキストデータブロックをモジュールとしてインポートする機能が削除されました。(dc8dd24351).
テキストデータブロックをモジュールとして取得する必要があるときは、以下を使用してください。
my_module = bpy.data.text["my_module"].as_module()