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

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

元記事:Reference/Release Notes/2.81/Python API - Blender Developer Wiki


Blender 2.81: Python API

Python のアップグレード

Python がバージョン3.7.0から3.7.4にアップグレードされました。

API の変更

  • `IDMaterials.clear()` と `IDMaterials.pop()` から `update_data` パラメーターがなくなりました。今は常に `update_data=True` が渡されたのと同様の挙動になります。(c70f975d5c3b961e0c)
  • `Bone.use_inherit_scale` と `EditBone.use_inherit_scale` が、新しい `inherit_scale` enum プロパティの追加で非推奨になりました。(fcf2a712)
  • `CopyRotationConstraint.use_offset` が、新しい `mix_mode` enum プロパティの追加で非推奨に。(f4056e9e)
  • `CyclesShaderWrapper` が削除されました。開発者の皆さんは `PrincipledBSDFWrapper` を使用してください。(rBA19819fb1ce7e)
  • `ShaderNodeMapping` が動的入力を持つよう書き直され、`translation`、`rotation`、`scale` への直接アクセスが削除されました。現在は `inputs['Location']`、`inputs['Rotation']`、`inputs['Scale']` で行ってください。
    また、`min` と `max` も完全に削除され、テクスチャノードの `Extension` パラメーターへのアクセスで置き換えてください。([1], [2])
  • `Bone` の位置と方向に関するプロパティにコードから予期せぬ変更が行われるとつじつまが合わない状態になるため、読み込みのみになりました。レストポーズの変更は `EditBone` を通じてのみにしてください。(d4f8bc80)

Mesh Replacement

メッシュが `mesh.clear_geometry()` (6d2f9b1dfa98)の呼び出しで全形状をクリア可能に。これにより、`mesh.clear_geometry()` によるクリアと、それに続く `mesh.from_pydata()` などで再生成することで、現存のメッシュデータブロックの再利用が可能になりました。

新規メッシュを作成し既存の物と交換するのに比べて、高速になるだけでなく、エクスポーターも(フレーム毎に違う静的メッシュをエクスポートするのではなく)、これが実際に同じ論理メッシュを表わしているのだと簡単に判断できるようになります。

シェイプキーはこの関数では解放されません。解放には関係を更新するための依存グラフのタグ付けという、コストの高いオペレーションが必要です。もし不要であれば、明示的に削除してください。

マテリアルスロットもこの関数でクリアはされません。手動ですべての形状をメッシュから削除する時、クリアされないのと同じです。

ノード

  • 新しい `NodeSocket.display_shape` プロパティを使用による、ノードソケットの四角形やダイアモンドの形状での表示に対応しました。(2ba233a)

リギング

  • オブジェクトやボーンの Constraint に、スタックの順番を変える `move()` メソッドが追加されました。(36e23c95)
  • ボーンの `length` プロパティが C で実装され、ドライバーと UI から利用可能になりました。(d4f8bc80)

EEVEE

シャドウマップのリファクタリングでいくつかのプロパティが API から削除されました。(d8aaf25c23fa)

  • `shadow_buffer_soft`、`shadow_buffer_exp`、`shadow_buffer_bleed_bias`、`contact_shadow_soft_size` がすべてのライトデータタイプから削除されました。
  • `SunLight.shadow_buffer_clip_start` と `SunLight.shadow_buffer_clip_end` は、サンライトに自動クリップ距離が付いたため削除されました。
  • `SceneEEVEE.use_sss_separate_albedo` と `SceneEEVEE.shadow_method` も削除されました。

オペレーター

オペレーターがコンテクストやオペレーターのパラメーターを元に変更を行う、動的ツールチップを持つことができるようになりました。(9ecbd67d)

オペレーターでは以下のように定義します(無関係な部分は省略):

class WM_OT_tooltip_test(bpy.types.Operator):
    arg: bpy.props.StringProperty()

    @classmethod
    def description(cls, context, properties):
        return "Arg is: " + properties.arg

次のボタンには、"Arg is: FOO" と書かれたツールチップを持たせています。

layout.operator('wm.tooltip_test').arg = 'FOO'

これは主に、同様だが個別の複数のオペレーションが技術的理由で、一つのオペレーターにモードスイッチパラメーターによって実装された時用に作成されています。

ハンドラ

`depsgraph_update_post` と `frame_change_post` ハンドラが、対応する依存グラフ内の評価済データブロックへのアクセスを可能にする、オプションの `depsgraph` 引数を受け取るようになりました。これは例えば、レンダリングされるシーンの優先順位を変更するのに使用できます。

新しい関数のシグネチャは以下の通りです。

def depsgraph_update_post_handler(scene, depsgraph):
    pass

def frame_change_post_handler(scene, depsgraph):
    pass

注意: `depsgraph` 引数はオプションであり、省略可能です。これは従来のスクリプトとの互換性を保つためです。

評価済みデータブロックのアクセスについての詳細は API ドキュメンテーションにてどうぞ。


Mathutils - Geometry

新しい `mathutils.geometry.delaunay_2d_cdt(vert_coords, edges, faces, output_type, epsilon)` 関数は、2Dの点、辺、面のセットの、制約付きドロネー三角形分割(Constrained Delaunay Triangulation)を行います。この類の三角形分割は、入力した辺や面が(恐らく複数のピースに分割されて)確実に三角形の中にある、いい(長かったりぺっちゃんこではない)三角形を生成します。

副次的な効果として、入力したすべての形状で自身と他の入力形状が交差するため、一般的な2Dの交差や、すべての退化のケースをスマートに処理するのにも使用できます。(b91643c71135)