Dev:JA/Ref/Release Notes/2.90/Animation-Rigging

提供: wiki
< Dev:JA‎ | Ref/Release Notes‎ | 2.90
2020年9月16日 (水) 05:51時点におけるYamyam (トーク | 投稿記録)による版 (Dependency Graph(依存グラフ)からの取得)
(差分) ← 古い版 | 最新版 (差分) | 新しい版 → (差分)
移動先: 案内検索

元記事:Reference/Release Notes/2.90/Animation-Rigging - Blender Developer Wiki

Blender 2.90: アニメーションとリギング

Library Overrides(ライブラリオーバーライド)

  • より多くのプロパティとデータがオーバーライド可能に(全コンストレイントとモディファイアー、カメラオブジェクトデータなど)。
  • オーバーライドしたデータブロックのコピー時、オーバーライドも複製されるように(例:オブジェクトの階層全体を選択し、3Dビューポートで複製した場合、同じリンクデータの新しいオーバーライドが得られます)。
  • Python 定義のプロパティとカスタムプロパティもオーバーライド可能に(オーバーライド可能として定義されており、属しているデータもオーバーライド可能な場合に限る)。
  • 3Dビューポートからの、オブジェクトやコレクションのオーバーライドの作成時、依存を完璧にチェックし、必要な物すべてをオーバーライドするように(注意:これは典型的な、込み入った制作キャラクターなどでは、多数のデータブロックをオーバーライドします)。
  • アウトライナーからは、選択物までリンクしているデータブロックの階層のオーバーライドが可能です。また、単一のオブジェクトやコレクションに適用する場合は、3Dビューポートでの操作と同様の挙動をします。
  • 3Dビューポートの 'Make Library Override(ライブラリオーバーライドを作成)' オペレーターがアップグレードしました。
    • インスタンス化コレクションのオーバーライドに「メイン」オブジェクトを選択する必要がなくなりました(いずれにせよ、もう使うことはなくなりました)。
    • リンク中でも、オブジェクトインスタンスや、そのコレクション以外のオーバーライドが可能に。3Dビューポートでオブジェクトのうち一つを選択し、オペレーターを呼び出してください。(訳注:未検証)
  • オーバーライドをアウトライナーからリセット可能に(設定したオーバーライドプロパティを ID 間の関係の確保を除き、すべて削除し、オーバーライドデータブロックを再読み込みします)。単独でも階層全体でも可能です。
  • リンクしたライブラリの参照の再読み込み時、オーバーライドが再読み込みされるように。

コンストレイント

  • 負のスケールのある行列を正しく補間可能に。つまり、例えば、Copy Transform(トランスフォームコピー)コンストレイントと、スケール X が -1 のオブジェクトをターゲットにする場合、Influence(影響)スライダーを下げても動作がおかしくなりません。(a5e176a8ed8aと、デモ動画が D8048にあります)

Graph Editor(グラフエディター)

  • スクラビング領域を使用した現在のフレームの変更時、カーソルではなく、フレームだけを変更するように。(fc59febb1b30)

Drivers(ドライバー)

  • 新しい lerpclampsmoothstep 関数。GLSL の mixclampsmoothstep から着想を得ました。(f8cc01595d)
  • Simple Expression(単純な式)サブセットに lerpclampsmoothsteproundlog(val,base) が入りました。(f8cc01595d)

Dependency Graph(依存グラフ)からの取得

ドライバーが現在の依存グラフを、新しい depsgraph 変数で取得可能に(現在のビューレイヤーの取得など)。これはドライバーの式内で使用可能で、さらにカスタムドライバー関数に渡すこともできます(必要なら下記のように、bpy.app.driver_namespace 内に登録してください)。

次の T75553 からのサンプルは、現在のビューレイヤーの名前が View Layer 1 かどうかを調べるのにドライバー関数を使用しています。

式の中で depsgraph を使用するドライバー例
import bpy

def is_view_layer_1(depsgraph: bpy.types.Depsgraph) -> bool:
    print(f"depsgraph={depsgraph.mode} VL={depsgraph.view_layer.name}")
    return "View Layer 1" in depsgraph.view_layer.name

bpy.app.driver_namespace['is_view_layer_1'] = is_view_layer_1

このドライバーが is_view_layer_1(depsgraph) を式内で使用可能になりました。

注意: 大雑把に言えば、ドライバー内で bpy.context を使用しないでください。例えば、Blender があるウィンドウでレンダリング中、別のウィンドウで3Dビューポートを表示するなどでは、ドライバーが複数のコンテクストで同時に評価される可能性があります。そしてこの場合、bpy.context は大抵間違った答えを返してしまいます。一方、ドライバーに depsgraph を渡す方法では常に正しくなります。