Dev:JA/Ref/Release Notes/2.81/Library Overrides

提供: wiki
移動先: 案内検索

元記事:Reference/Release Notes/2.81/Library Overrides - Blender Developer Wiki

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

Library Overrides(ライブラリオーバーライド)は、Proxy(プロキシ) の代替として設計された、新しいシステムです。リンクされたデータブロックの大半のタイプがオーバーライド可能で、これらオーバーライド後のプロパティは編集が可能です。ライブラリデータが変更された時、オーバーライドの未変更のプロパティも適宜更新されます。

実験的機能であり、現在のプロキシシステムは今後のリリースで、しばらく平行して保持される予定です。プロキシからライブラリオーバーライドへの自動変換については、未定です。これを行う手動のオペレーターを予定していますが、複雑なキャラクターにおける結果は保証しません。

プロキシとライブラリオーバーライドの対応の比較:

  • 同じリンクデータ(例:キャラクター全体)の複数の個別のオーバーライド。
  • 新しいモディファイアーとコンストレイントの、スタック中の任意の部分への追加。
  • オーバーライドの再帰的チェーン(要は他のライブラリファイルなどからのオーバーライドの、リンクやオーバーライド)。
まだ解決すべき既知のTODOや問題が多数あります。詳細はこのプロジェクトの Phabricator のメインタスク(T53500)をチェックしてください。


ライブラリオーバーライドの使用方法の詳しい情報は、マニュアル(英文)をご覧ください。


実装に際しての技術的メモ

内部では、オーバーライドはそのリンク中の元データからコピーした「ローカル」データブロックであり、リンク元への参照を保持しています。また、ローカルで変更されたプロパティのリストも保持しています(RNA パスを使用)。

.blend ファイル保存時、両データブロック(ローカルオーバーライドとリンク元データ)を比較し、許容されたすべての差違を .blend ファイルに格納します。

この .blend ファイルの再読み出し時、リンク元データは再びローカルオーバーライドに複製され、このオーバーライドに差違データが再適用されます。

これはつまり「禁止」のプロパティを変更してしまっても、次回のファイル読み込み時、リンク中のデータブロックの値で元に戻されるということを意味します。

既知の制限と問題

もっと多くの物をオーバーライドできるようにする予定です。まず、最初の実作業のテストケースとして、キャラクターのオーバーライドを作成し、ポージングやアニメーション作業ができるようにし、そして直接プロキシの置き換えを可能にすることに集中しています。

現在、ドライバー制御のシェイプキーは「そのまま」では動作しないことに注意してください(詳細:T70319 )。

オーバーライドは基本的に Blender の大半の、特にツールとオペレーター用のローカルデータブロックであるため、オーバーライド不可のプロパティ編集に陥ってしまうケースが今も多々あります。これらのケースは追跡中ではありますが、いずれにせよ禁止されたプロパティの編集は、次回ファイル読み出し時にリンク中のデータの状態にリセットされてしまうことを忘れないでください。

パフォーマンスですが、特に「差違の探知(diffing)」プロセス(Blender によるオーバーライドとリンクのソースデータの比較と、オーバーライドに格納するのに必要なデータの生成)が遅くなる可能性があります。デフォルトではこれは Undo ステップの大半で実行されており、重い制作シーンでの作業が苦痛になる可能性があります。

現在、この問題に対処する一番簡単な方法は、少なくとも Armature オブジェクトだけでも 'auto override' (自動オーバーライド)機能を無効にすることです(Python コンソールから設定。API ドキュメント)。これにより、これらのデータブロックの編集された(そしてオーバーライドされた)プロパティの自動探知がすぐさま回避され、ファイル保存時のみ行うようになります。

プロキシ同様、ライブラリへのリンクが壊れたケースでは、(アウトライナー内の)Relocate 機能を使用してもあまりうまく動作しません。例えばボーン形状などは失われると思われます…現在、いくつかのデータは欠けたデータブロックの「プレースホルダー」段階で失われます。

形状オブジェクト(特にメッシュ)のオーバーライドは、そのデータすべてをローカルコピーしており、形状自身のオーバーライドはできません(そして今後も可能にする予定はありません)。

将来のアイデア

ライブラリオーバーライドへの将来的な拡張や改良の可能性はありますが、現在ユーザーには公開していません(部分的にそのいくつかは実装済ですが)

  • 差違オーバーライド(拡大縮小などで絶対値の代わりに、元の値の係数として差違を格納します)
  • プロパティの保護・ロック:オーバーライドデータブロック内のいくつかのプロパティの編集を(デフォルトで)禁止します。
  • テンプレート:与えられたデータブロックをオーバライドするデフォルトの方法を、ライブラリファイル内で定義(どのプロパティをオーバーライドし、どれを変更から保護するかなど)。