Dev:JA/Ref/Release Notes/3.10/Python API
< Dev:JA | Ref/Release Notes | 3.10
元記事:Reference/Release Notes/3.1/Python API - Blender Developer Wiki
目次
Blender 3.1: Python API
バンドル Python
Python 3.10
Python が3.9から3.10に更新されました。一部の変更がスクリプト作者に影響を与える可能性があります。
- Python 3.10ではもう float から int への暗黙的変換を行いません(issue linked)。つまり、従来は float タイプの値を受け入れていた関数で、タイプエラーが発生するということです。
浮動小数点数の引数は明示的に整数に変換する必要があります(コミットのサンプルを参照)。(rBAbb62f10715a8, rBA7476c1ac2484)
Text Editor(テキストエディター)
- Prefences(プリファレンス)に括弧と引用符を自動的に閉じるオプションを追加。(c4ea5cb1a3811cb)
Crazy space(クレイジースペース)
crazy space は、デフォーム空間(デフォーム前のオブジェクトとシェイプキーとデフォームモディファイアーを適用したオブジェクト間の、頂点毎の位置の写像)と呼ばれる物の実装の一つです。
crazy space はデフォームされたメッシュでのスカルプトなどの機能で、ブラシストロークにおけるメッシュの変形を「キャンセル」し、ベースメッシュに適用するのに内部的に使用されていました。
この crazy space が Python API から利用可能になりました(196da819ba4)下記はサンプルです。
object.crazyspace_eval(depsgraph, scene)
# 二つの頂点間に違いがあり
# 格納する空間(シェイプキー)に変換したい場合
delta_in_orig_space = rigged_ob.crazyspace_displacement_to_original(
vertex_index=i, displacement=delta)
# 上の逆
delta_in_deformed_space = rigged_ob.crazyspace_displacement_to_deformed(
vertex_index=i, displacement=delta)
object.crazyspace_eval_clear()
これにはデフォームメッシュでのスカルプトと同じ制限があります。主にシェイプキーがある場合に、アクティブシェイプキーが未デフォーム空間用の basis を定義していると仮定して空間の変換が計算されるなどです。 (訳注:この辺はあまり自信がないので元記事を参照されたし)
Demeter Dzadik 氏がリガーにとってどう役に立つかを、解説とデモの動画で行っています。
その他の追加
Mesh
に新しくvertex_normals
とpolygon_normals
プロパティが追加、値の配列への連続的なアクセスを提供します。(b7fe27314b25a7、cfa53e0fbeed71)- 内部的には法線はもう
MeshVertex
に直接格納されなくなりました。MeshVertex.normal
プロパティは今も利用可能です。
- 内部的には法線はもう
- 新しく便利なプロパティ
Object.children_recursive
とCollection.children_recursive
が追加。(7c568e7d36710ab)
互換性がなくなる変更
Action.frame_range
が、利用可能であれば手動でセットしたフレーム範囲が返ってくるようになりました。アドオン作者にはこれがユースケースに適しているか、もしくは常にキーから計算した範囲が返ってくるAction.curve_frame_range
に切り替える必要があるかどうかを確認することをお勧めします。(rB5d59b38605d6)