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_scaleEditBone.use_inherit_scale が、新しい inherit_scale enum プロパティの追加で非推奨になりました。(fcf2a712)
  • CopyRotationConstraint.use_offset が、新しい mix_mode enum プロパティの追加で非推奨に。(f4056e9e)
  • CyclesShaderWrapper が削除されました。開発者の皆さんは PrincipledBSDFWrapper を使用してください。(rBA19819fb1ce7e)
  • ShaderNodeMapping が動的入力を持つよう書き直され、translationrotationscale への直接アクセスが削除されました。現在は inputs['Location']inputs['Rotation']inputs['Scale'] で行ってください。
    また、minmax も完全に削除され、テクスチャノードの 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_softshadow_buffer_expshadow_buffer_bleed_biascontact_shadow_soft_size がすべてのライトデータタイプから削除されました。
  • SunLight.shadow_buffer_clip_startSunLight.shadow_buffer_clip_end は、サンライトに自動クリップ距離が付いたため削除されました。
  • SceneEEVEE.use_sss_separate_albedoSceneEEVEE.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_postframe_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)