コンセプト
Fluxのカーブは、プロパティの絶対値ではなくレベル(正規化した値)を表します。 このレベルが実際のプロパティ値に変換される仕組みを理解すると、Fluxの挙動はほぼすべて説明がつきます。
アフィン合成モデル
Section titled “アフィン合成モデル”ベイクとライブプレビューは、共通の処理でカーブをチャンネルごとのアフィン変換に通します。
out = a · authored + bauthoredはオーサリングしたカーブの値、outは実際に書き込まれる値です。
係数aとbは、ドライバの合成モード(ComposeMode)とbaselineから決まります。
ベイクとプレビューがこの一箇所を共有するため、プレビューで見た結果とベイク結果は一致します。
baselineは、プレビュー開始時やベイク時に対象コンポーネントから読み取った現在値です。 ベイクは実行時の値をその場で読み、プレビューは開始時に取った値(スナップショット)を使います。
3つの合成モード
Section titled “3つの合成モード”| モード | a | b | レベルの意味 | 例 |
|---|---|---|---|---|
| Multiply | baseline | 0 | レベル1.0がbaseline | Emission Rate |
| Absolute | 1 | 0 | カーブの値そのまま | Color / Position / Rotation |
| Additive | 1 | baseline | baseline+オフセット | Color |
Multiplyは、元の値(baseline)に対する倍率としてレベルを解釈します。 Absoluteはカーブの値をそのまま書き込み、baselineを参照しません。 Additiveはbaselineにオフセットを足します。
baselineが0のときの罠
Section titled “baselineが0のときの罠”この罠はMultiplyのときだけ起こります。
Multiplyではout = baseline · authoredなので、baselineが0だと、どんなレベルを描いても結果は0のままです。
たとえば放出レートが0の(最初から止まっている)エミッターは、乗算では立ち上げられません。
Fluxはこのチャンネルをベイクからスキップし、skippedZeroBaselineとして報告します(ベイク自体はブロックしません)。
AbsoluteとAdditiveはカーブの値を直接使うため、この罠には当たりません。
オーサリングとベイクは別物
Section titled “オーサリングとベイクは別物”カーブの編集と.animへの書き出しは、別の操作です。
カーブ(レベル)をいくら編集しても、クリップは変わりません。
.animに反映されるのは、ベイクを明示的に実行したときだけです。
ベイクはクリップのカーブを一度消してから書き直します(差分マージではありません)。
プレビューも同じ合成処理を使いますが、AnimationMode上に一時クリップを焼いて再生するだけで、セーブもクリップも変更しません。
Regionは読み出し時に非破壊で合成する
Section titled “Regionは読み出し時に非破壊で合成する”Regionは、区間にEffect(反復やノイズなどの効果)を積むための部品です。 Regionはカーブそのものを書き換えません。 読み出し時に合成カーブを生成するだけなので、ここでもベイク結果とプレビューは一致します。
手で置いたキーは、Effectの生成キーより構造的に優先されます。 Effectはアンカー(手置きキー)が占めるフレームには書き込めず、空いているフレームだけを埋めます。 そのため、どんなEffectを足しても手置きキーが上書きされることはありません。
現在のEffectは2種類です。
- Repeat:指定区間のキーを、Regionの区間に繰り返しタイルする。
- Noise:キャリア(それまでの合成結果)に決定的なノイズを加える。
決定的なノイズを使うのは、ベイクとプレビューを一致させるためです。 複数のEffectを1つのRegionに積むと、順に適用されます。 たとえばRepeatの後にNoiseを置くと、Noiseはタイルされた後の値を読んで揺らします。
1つのRegionは、既定でグループの全トラックに効きます。 トラックマスクで、効かせるトラックを一部に絞ることもできます(Regionの対象トラックを絞る)。
ドライバの役割
Section titled “ドライバの役割”ドライバは、トラックがどのコンポーネントのどのプロパティを駆動するかを決めます。 ドライバごとに、合成モード、チャンネル数、既定の値域、バインド先が決まっています。 利用できるドライバの一覧はリファレンスを参照してください。