「Dev:JA/Ref/Release Notes/2.80/Python API」の版間の差分

提供: wiki
移動先: 案内検索
(ページの作成:「= 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 の一貫性と信頼性を向上させるための変更への適合の、両面においてアップデートが必要です。
  
'''注意:'''現在、Blender 2.80の開発はベータ段階であり、最終リリースの準備中ですが、すでにコードが2.80で実行できるよう、アドオン作者の皆さんが更新できるようになっています。Python 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/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/Scene_and_Object_API Scene and Object API(英文)] ==
  
 
新しいビューレイヤー、コレクション、選択と依存グラフシステムになり、スクリプトの更新が必要です。
 
新しいビューレイヤー、コレクション、選択と依存グラフシステムになり、スクリプトの更新が必要です。
  
== [[https://wiki.blender.org/wiki/Reference/Release_Notes/2.80/Python_API/Mesh_API '''Mesh 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(英文)''']] ==
+
== [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_API User Interface API(英文)] ==
  
 
新しいツールバー、プロパティレイアウト、アイコンでアドオンの更新が必要です。
 
新しいツールバー、プロパティレイアウト、アイコンでアドオンの更新が必要です。
  
== [[https://wiki.blender.org/wiki/Reference/Release_Notes/2.80/Python_API/UI_DESIGN '''アドオンの2.8ユーザーインターフェイスへの適合(英文)''']] ==
+
== [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(英文)''']] ==
+
== [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(英文)''']] ==
+
== [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'''
+
2.7x
<pre>
+
<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)
</pre>
+
</syntaxhighlight>
  
'''2.8x'''
+
2.8x
<pre>
+
<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')
</pre>
+
</syntaxhighlight>
  
 
== 行列の乗算 ==
 
== 行列の乗算 ==
76行目: 78行目:
 
注意:将来的に * は要素ごとの積に使用される予定です。
 
注意:将来的に * は要素ごとの積に使用される予定です。
 
   
 
   
'''2.7x:'''
+
2.7x:
<pre>
+
<syntaxhighlight lang="Python">
 
mat = Matrix()
 
mat = Matrix()
 
vec = Vector()
 
vec = Vector()
 
result = mat * vec
 
result = mat * vec
</pre>
+
</syntaxhighlight>
  
'''2.8x:'''
+
2.8x:
<pre>
+
<syntaxhighlight lang="Python">
 
mat = Matrix()
 
mat = Matrix()
 
vec = Vector()
 
vec = Vector()
 
result = mat @ vec
 
result = mat @ vec
</pre>
+
</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 のリストなどの他のタイプと合わせました)。
  
新しい行列を作成するスクリプト、特に行列が関数の引数として渡され、不意に変更される場合、互換性が失われる変更となる可能性があるため、気をつけてください。
+
新しい行列を作成するスクリプトで、特に行列が関数の引数として渡され、予期せぬ変更が行われた場合、互換性が失われる可能性があります。
 
 
== オペレーターの更新 ==
 
 
 
<source>
 
削除:
 
object.select_by_layer
 
 
 
 
 
リプレース:
 
view3d.viewnumpad          (代わりに view3d.view_axis または view3d.view_camera を使用してください)
 
 
 
</source>
 
  
== プロパティの更新 ==
+
== テキストのインポート ==
  
<source>
+
Blender のテキストデータブロックをモジュールとしてインポートする機能が削除されました。({{GitCommit|dc8dd24351}}).
リプレース:
 
SpaceView3D.viewport_shader → SpaceView3D.shading.type
 
</source>
 
  
== その他 ==
+
テキストデータブロックをモジュールとして取得する必要があるときは、以下を使用してください。
  
* Bone と PoseBone に新しくボーン特有の計算と、Bボーン形状用のユーティリティメソッドが追加。({{GitCommit|a58f0eea4f}}、{{GitCommit|48a3f97b23}})
+
<syntaxhighlight lang="Python">
 +
my_module = bpy.data.text["my_module"].as_module()
 +
</syntaxhighlight>

2019年7月12日 (金) 01:12時点における最新版

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()