Dev:JA/Ref/Release Notes/3.10/Python API

提供: wiki
移動先: 案内検索

元記事: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_normalspolygon_normals プロパティが追加、値の配列への連続的なアクセスを提供します。(b7fe27314b25a7cfa53e0fbeed71)
    • 内部的には法線はもう MeshVertex に直接格納されなくなりました。MeshVertex.normal プロパティは今も利用可能です。
  • 新しく便利なプロパティ Object.children_recursiveCollection.children_recursive が追加。(7c568e7d36710ab)

互換性がなくなる変更

  • Action.frame_range が、利用可能であれば手動でセットしたフレーム範囲が返ってくるようになりました。アドオン作者にはこれがユースケースに適しているか、もしくは常にキーから計算した範囲が返ってくる Action.curve_frame_range に切り替える必要があるかどうかを確認することをお勧めします。(rB5d59b38605d6)