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_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)