Dev:JA/Ref/Release Notes/2.81/Python API
元記事: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が渡されたのと同様の挙動になります。(c70f975d5c3b961)
Bone.use_inherit_scaleとEditBone.use_inherit_scaleが、新しいinherit_scaleenum プロパティの追加で非推奨になりました。(fcf2a712)
CopyRotationConstraint.use_offsetが、新しいmix_modeenum プロパティの追加で非推奨に。(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)