「Dev:JA/Ref/Release Notes/2.90/Animation-Rigging」の版間の差分
< Dev:JA | Ref/Release Notes | 2.90
(→Library Overrides(ライブラリオーバーライド)) |
(→Dependency Graph(依存グラフ)からの取得) |
||
57行目: | 57行目: | ||
このドライバーが `is_view_layer_1(depsgraph)` を式内で使用可能になりました。 | このドライバーが `is_view_layer_1(depsgraph)` を式内で使用可能になりました。 | ||
− | '''注意:''' 大雑把に言えば、ドライバー内で `bpy.context` を使用しないでください。例えば、Blender | + | '''注意:''' 大雑把に言えば、ドライバー内で `bpy.context` を使用しないでください。例えば、Blender があるウィンドウでレンダリング中、別のウィンドウで3Dビューポートを表示するなどでは、ドライバーが複数のコンテクストで同時に評価される可能性があります。そしてこの場合、`bpy.context` は大抵間違った答えを返してしまいます。一方、ドライバーに `depsgraph` を渡す方法では常に正しくなります。 |
2020年9月16日 (水) 05:51時点における最新版
元記事: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(ドライバー)
- 新しい
lerp
、clamp
、smoothstep
関数。GLSL のmix
、clamp
、smoothstep
から着想を得ました。(f8cc01595d)
- Simple Expression(単純な式)サブセットに
lerp
、clamp
、smoothstep
、round
、log(val,base)
が入りました。(f8cc01595d)
Dependency Graph(依存グラフ)からの取得
ドライバーが現在の依存グラフを、新しい depsgraph
変数で取得可能に(現在のビューレイヤーの取得など)。これはドライバーの式内で使用可能で、さらにカスタムドライバー関数に渡すこともできます(必要なら下記のように、bpy.app.driver_namespace
内に登録してください)。
次の T75553 からのサンプルは、現在のビューレイヤーの名前が View Layer 1
かどうかを調べるのにドライバー関数を使用しています。
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
を渡す方法では常に正しくなります。