3つの課題と解決策
1. 値変更時のカーブ崩壊
After Effectsではタイムライン上で値を変更すると、イージングまで変わってしまいます。
従来のキーフレーム:
0s: [100] ――――→ 2s: [500]
↑
この値を変更すると...
0s: [100] ――――→ 2s: [150]
↑
値が変わるとカーブの形状も変わるこのため、「このイージングは完璧!でも到達値だけ変えたい」といった調整ができず、値を変更するたびにグラフエディターでの再調整が必要になります。
Nexanimの解決策
進行度コントロール:
0s: [0] ――イージングカーブ(不変)――→ 2s: [1]
値コントロール:
V1: [100] → V2: [500] // 値だけを自由に変更可能
V1: [100] → V2: [150] // カーブは一切変化しない進行度コントロールで定義したイージングと値が分離されているため、イージングに影響を与えることなく、値だけを独立して調整できます。
2. 値の固定性
タイムラインに配置した値は「その瞬間の固定値」でしかありません。
0s: [100] → 1s: [200] → 2s: [300]
↑ ↑ ↑
すべて固定値。計算式として定義できない複数の段階を持つアニメーションでは、各段階の値を計算式として定義できません。他のプロパティ・レイヤーとの連動や、関数を使った値の定義を実現するには、親子付けを挟むなど、回りくどい方法が必要になります。
Nexanimの解決策
V:Position_1: [thisComp.width/2, thisComp.height/2] // エクスプレッションによる計算式
V:Position_2: [960, 1200] // 静的な値
V:Position_3: [random(0, 1920), random(0, 1080)] // 別の計算式各段階の値コントロールには、エクスプレッションでも静的な値でも定義できます。各段階ごとに異なる計算式を使うことも、一部だけ静的な値にすることも可能です。
3. 同期の困難さ
当たり前ですが、ピックウィップ等を使ってプロパティを直接参照すると、時間と値が一体化した「アニメーション全体」が参照されます。
// 従来のピックウィップ
Layer A: Position
0s: [100, 100]
2s: [500, 500]
Layer B: Opacity
thisComp.layer("Layer A").transform.position[0]
// → Positionの「値」(100→500)が入ってしまう
// Opacityに500は意味がない!「同じタイミング・イージングで動かしたい」だけなのに値まで連動してしまいます。異なるプロパティで同じイージングを使うには、外部スクリプトでカーブをコピーするなどの手間が必要で、さらに一度コピーした後は同期されないため、カーブを変更するたびに再度コピーが必要になります。
Nexanimの解決策
// すべてのプロパティが同一のProgressを参照
Position: Progress [0→1]
Scale: Progress [0→1] // 自動同期
Rotation: Progress [0→1] // 自動同期
Opacity: Progress [0→1] // 自動同期進行度コントロールは常に0→1の正規化された値であるため、異なるプロパティでも同一の進行度コントロールを参照できます。1つの進行度コントロールを調整すれば、参照しているすべてのアニメーションが自動的に同期して変化します。
Last updated on