推奨環境: Adobe After Effects CS5.5- (Win /Mac OS X 10.6-) スクリプト: KikakuUtility プラグイン: KikakuControls(カメラ、ライト、トランスフォームに関するエクスプレッション制御用エフェクトをまとめたもの) KikakuShapeControls(シェイプレイヤー用のエクスプレッション制御用エフェクトをまとめたもの) KikakuSwitchers(Switch関連のプラグインをまとめたもの)
スクリプト: KikakuUtils KikakuUIBuilder KikakuFilter KikakuCompFilter
5,000円也。
何でも一箇所からコントロールしよう、というのが当初目的。スクリプト及び、補助用のプラグインから構成される。スクリプトの方は"Comp"、 "Control"、 "Switch"の3つのコンポーネントからなる。
複数のフッテージをひとつのコンポジションにまとめ、そのコンポジションをソースとしたレイヤー(コンポジションをソースとしたレイヤーのことを以下コンポレイヤーと呼ぶ)から制御する。
選択したレイヤー群をプリコンポーズし、そのコンポジションをソースとしたコンポレイヤーに対して、
各レイヤーに掛けられたエフェクトやトラスフォームに関するコントロール制御エフェクト等を追加し、
それらを元のレイヤーのエフェクトやトランスフォームにエクスプレッションで紐つけることによって制御できるようにする。
基本的にはPrecompと同じであるが、Precompがアクティブなコンポジションを親、プリコンポーズしたコンポジションを子として扱っていると例えるならば、
Upcompはアクティブなコンポジションを子として扱い、親となるコンポジションを選択する形で操作を行う。
Precompは付け替えの操作がありプロジェクトが大きくなるにつれ処理が重くなるが、Upcompは単純に上から紐を垂らすだけなので処理は軽い。
Precomp、Upcompで作成したコンポレイヤーに対して処理を行う。その該当するコンポレイヤーに対してMoldをすると、そのコンポレイヤーをテンプレートとして新たにコンポレイヤーが生成される。
その際、コンポジションはディープコピーされる。
Fixed: エフェクトは基本的に制御用のエフェクトから制御したいが、一部エフェクトだけは紐付けずにおきたいというときに、
エフェクトの名前に" kfixed"(空白含む)をつければPrecompやUpcompする際にそのエフェクトを無視するように設計してある。
いちいち名前を変えるのは面倒だという際にエフェクトを選択しFixedボタンを押せば自動的に語尾に" kfixed"がつく。
Enable: エクスプレッションを全てenabledにする。
Disable: エクスプレッションを全てdisabledにする。
Delete: disabledなエクスプレッションを全て削除する。
メインとなるPick、Setという共通の処理を持つPickwhip、Value、Keyframeと、シェイプレイヤーのプロパティを平坦化する処理から構成される。
前者は対象となるプロパティを選びとり(Pick)、そのプロパティの情報を他のプロパティに設定する(Set)という処理が基本となっている。
Pickwhip、Value、Keyframeに共通する処理、パラメータから解説する。
PickしたプロパティをSetする際の処理について書く。
例えば、あるレイヤーにエフェクトのCC Compositeを追加し、そのパラメータのOpacityをPickしたとする。
Setする際に選択したレイヤーを順繰りに見ていくわけであるが、その各々のレイヤーにおいて選択されたプロパティが存在する場合
プロパティを順繰りに見ていきOpacityと同じタイプの(OneD)プロパティであればSetされる。選択されたプロパティがない場合は、エフェクト→CC Composite→Opacityと辿って行き
そのOpacityが存在すればSetされ、なければ基本何もしない。
上記の画像においても、#{value}、#{x}、#{y}、#{z}といった文字列が散見されるが、パラメータによってはこういったプレースホルダを用いることによってpromptで変数を代入することが出来る。 ただし、#{名前}(名前は一文字目がアルファベットかアンダーバー、二文字目以降がそれに加え数字)といった形である必要性があり、また予約済みの変数もあるので注意が必要。
複数のレイヤーに対してSetする際の、処理するレイヤーの順番の方法を決める。
Selected: 選択順に処理を行う。
Ascending: 昇順に処理を行う。
Descending: 降順に処理を行う。
Shuffle: ランダムの順で処理を行う。
どういう種類のパラメータに対して処理を行うかを決める。
All: 全てのパラメータに対して処理を行う。
OneD: 値が一次元のパラメータにのみ処理を行う。
TwoD: 値が二次元のパラメータにのみ処理を行う。
ThreeD: 値が三次元のパラメータにのみ処理を行う。
Color: 色に関するパラメータにのみ処理を行う。
Layer Index: レイヤーインデックスのパラメータにのみ処理を行う。
Mask Index: マスクインデックスのパラメータにのみ処理を行う。
基本的にはエクスプレッションにおけるピックウィップを拡張したもの。引っ張ってきたいプロパティ、プロパティグループをPickし、設定したいレイヤーやプロパティを選択しSetする。
ShiftにおいてManual以外はvalueAtTimeの取り扱いを決める。
Normal: valueAtTimeを付けない。
inPoint: valueAtTime(time - inPoint)をつける。
Constant: valueAtiTime(time - 定数)をつける。定数はOffsetで設定する。
Increment: valueAtTime(time - インデックス * 定数)をつける。定数はOffsetで設定する。
Manual: 基本なんでもあり。Expression部になんでも書ける。
#{value}にはpickしたプロパティの値が代入され、#{i}には何番目のレイヤーかが、#{total}には選択されたレイヤーの数が、#{rate}には(#{i} / (#{total} - 1))が代入される。
例えばExpression部に、
Pickwhipではエクスプレッションを取り扱っているが、Valueでは文字通り値を扱う。基本は入力に対して、どう出力するかを決める感じとなる。
どのような値を出力するかを決める。#{x}、#{y}、#{z}には入力された値が(モードにより取り扱いが異なる)、#{i}には何番目のレイヤーかが、
#{total}には選択されたレイヤーの数が、#{rate}には(#{i} / (#{total} - 1))が、#{w}、#{h}にはコンポジションの幅と高さが、#{lw}、#{lh}には各レイヤーの幅と高さが、
#{t}には時間が代入される。
モードにより入力の取り扱いがやや異なる。KeyframeをチェックするとSetする際にキーフレームが打たれる。
Selected: #{x}、#{y}、#{z}にはPickしたプロパティの値が代入される。
Inidividual: #{x}、#{y}、#{z}には処理を行うプロパティの値が代入される。
Individual Modeばかり。
文字通りキーフレームを取り扱う。基本的にはPickしたプロパティのキーフレームを(入力側)、選択したプロパティにコピーする(出力側)感じとなる。Output ModeがScaling Modeの場合は、 扱いがやや異なる。
Slope X, Y, Zは傾きを、Intercept X, Y, Zも切片を表す。単純に式に表すと
Output = Slope * Input + Intercept
こんな感じとなる。デフォルトでは各Slopeに1、各Interceptに0が代入されているので入力がそのまま出力される感じとなる。
#{i}には何番目のレイヤーかが、#{total}には選択されたレイヤーの数が、#{rate}には(#{i} / (#{total} - 1))が、
#{w}、#{h}にはコンポジションの幅と高さが、#{lw}、#{lh}には各レイヤーの幅と高さが、
#{t}には時間が代入される。
入力、出力の振る舞いを決める。
Input Modeは入力をどう扱うかを決める。
Absolute: 入力を絶対値として扱う。
Relative: 入力を相対値として扱う。
例えば一次元のプロパティに3つのキーフレームが打たれており、一つ目のキーフレームから値が40, 20, 90だったとする。
この場合、Absoluteだとそのまま、40, 20, 90という値が入力として与えられ、Relativeの場合は最初のキーフレームの値との差分、すなわち0, -20, 50という値が入力として与えられる。
Output Modeは出力をどう扱うかを決める。
Absolute: 出力された値をそのままプロパティに設定する。
Relative: 出力された値にプロパティの値を加えたものを最終的に設定する。
再び一次元のプロパティで考える。例えば0, -20, 50という値が出力として与えられ、対象のプロパティの値が40であったとする。Absoluteの場合は、そのまま0, -20, 50という値がセットされる。
一方、Relativeの場合は、元の40という値に出力の値が足され、40, 20, 90という値がセットされる。
Scaling Modeは他とは違い、既存のキーフレームに対してスケーリング処理を行う。
A Scaling: 単純にスケーリングする。
R Scaling: 最初のキーフレームの値からの差分値をスケーリングする。
一次元のプロパティで考える。3つキーフレームが有り、30, 80, 20という値だったとして2倍にスケーリングすることを考える。Absoluteの場合は、単純に60, 160, 40となる。一方Relative Scalingの場合は、
始めのキーフレームの値との差分が0, 50, -10となるのでこれを2倍すると0, 100, -20。これに最初のキーフレームの値である30を足した、30, 130, 10が最終的な値となる。
Setする際に、時間方向にどれだけずらすかを決める。
Current: 現在時刻を基準にSetする。
Same: Pickしたプロパティと同じ時間にSetする。
Constant: ある定数時間だけずらしてSetする。定数はOffsetで設定する。
Increment: ある定数時間を決めその値をインクリメントしつつSetする。定数はOffsetで設定する。
Manual: Offsetに何でも書ける。#{i}には何番目のレイヤーかが、#{total}には選択されたレイヤーの数が、#{rate}には(#{i} / (#{total} - 1))が、
#{w}、#{h}にはコンポジションの幅と高さが代入される。下記の例ではOffsetにMath.random()を設定している。
シェイプレイヤーのプロパティ群を制御用のエフェクトに紐付けて平坦化する。
Convert: シェイプレイヤーのプロパティ群を制御用のエフェクトに紐つける。
Bake: Convertで生成した制御用のエフェクトの値を逆にシェイプレイヤーのプロパティにベイクする。
カメラやレイヤー、パスをスイッチングする。
カメラをスイッチングする。エフェクトの"KikakuCameraSwitcher"に対して使う。
アクティブカメラを無理やり切り替える。使う際は、一番上に調整レイヤーを置いてそれにこのエフェクトを適用するのが賢明のように思われる。
Camera Layer Index: アクティブにしたいカメラのインデックス。インデックスはカメラレイヤーのみが対象で下から順に1, 2と数える。0の時は何もしない。
KikakuCameraSwitcherはレンダリング時に無理やりカメラを切り替えているわけなので、キャッシュの問題を引き起こす可能性がある。従って、KikakuCameraSwitcherのCamera Layer Indexの値に従って、 実際にカメラを配置していけばそのような問題も生じることはなくなる。また、Convertによって生成されたカメラには" kcamera"という名前が付け加えられるので、それを頼りにカメラを削除する。
レイヤーをスイッチングする。エフェクトの"KikakuLayerSwitcher"に対して使う。
Layersにレイヤーを設定して、Layerで切り替える。
Mode: どのように描写するかを決める。
Layer: どのレイヤーを描写するかを決める。
Layer 1-20: 対象となるレイヤーを設定する。
KikakuLayerSwitcherのLayerの値に従って、実際にレイヤーを配置する。Promptでトランジション時間を聞かれるので、そこで0秒より大きい値を与えるとトランジションさせることも出来る。 また、Convertによって生成されたカメラには" klayer"という名前が付け加えられるので、それを頼りにレイヤーを削除する。
レイヤーパラメータは時間変動させることが出来ないがそれを無理やり切り替える。このエフェクトの一つ下に置かれたエフェクトに作用する。
On: 作用するか決める。
Index: レイヤーパラメータの位置を設定する。
Layer: どのレイヤーを選択するか決定する。
Layer 1-20: 対象となるレイヤーを設定する。
Cache: キャッシュ対策用。
KikakuLayerSwitcherはやや汎用的であるので、スライドショー的表現に特化したエフェクト。
Mode: どのように描写するかを決める。
Time: どのレイヤーを表示するかを決める。
Waiting Time: 待ち時間。例えば、Timeを1から2に変動させた場合、Layer 1からLayer 2へ変遷していくわけであるが、Waitiv Timeが0だとすぐトランジションし始め、例えば0.5だと1から1.5まではLayer 1が表示され、1.5から2にかけてトランジションしていく。
Number: 全対象レイヤーの数。
Layer 1-30: 対象となるレイヤーを設定する。
マスクパスをスイッチングする。エフェクトの"KikakuPathSwitcher"に対して使う。
Pathsにパスを設定して、Pathで切り替える。このエフェクト自体は何の処理も行わない。
Path: どのパスを選択するか決定する。
Path 1-20: 対象となるパスを設定する。
参照したいKikakuPathSwitcherをPickして、PathにSetする。
パスパラメータは時間変動させることが出来ないがそれを無理やり切り替える。このエフェクトの一つ下に置かれたエフェクトに作用する。
On: 作用するか決める。
Index: パスパラメータの位置を設定する。
Path: どのパスを選択するか決定する。
Path 1-20: 対象となるパスを設定する。
Cache: キャッシュ対策用。
AEにおいてスクリプトはグローバルを共有しており、APIを設定すれば他のスクリプトから機能を呼び出すことが出来、自由度が広がる。 KikakuUtiliyにおいてはKIKAKU.Utility以下に下記のAPIを設定している。
パラメータに値をセットする。
@param {string} type - どのパラメータに設定したいか。
@param {(bool|string)} value - パラメータに何を代入するか。
@return {KIKAKU.Utility} - メソッドチェーン用。
type | value | 説明 |
---|---|---|
Comp_Camera | bool | "Comp"の"Camera"のチェックボックスを設定する。 |
Comp_Light | bool | "Comp"の"Light"のチェックボックスを設定する。 |
Comp_Transform | bool | "Comp"の"Transform"のチェックボックスを設定する。 |
Comp_Effect | bool | "Comp"の"Effect"のチェックボックスを設定する。 |
Control_Mode | string | "Control"の"Mode"を設定する。 value: "Pickwhip", "Value" or "Keyframe" |
Control_Order | string | "Control"の"Order"を設定する。 value: "Selected", "Ascending", "Descending" or "Shuffle" |
Control_Filter | string | "Control"の"Filter"を設定する。 value: "All", "OneD", "TwoD", "ThreeD", "Color", "LayerIndex" or "MaskIndex" |
Pickwhip_Expression | string | "Control"の"Pickwhip"モードにおける"Expression"を設定する。 |
Pickwhip_Shift | string | "Control"の"Pickwhip"モードにおける"Shift"を設定する。 value: "Normal", "inPoint", "Constant", "Increment" or "Manual" |
Pickwhip_Offset | string | "Control"の"Pickwhip"モードにおける"Offset"を設定する。 |
Value_X | string | "Control"の"Value"モードにおける"Value X"を設定する。 |
Value_Y | string | "Control"の"Value"モードにおける"Value Y"を設定する。 |
Value_Z | string | "Control"の"Value"モードにおける"Value Z"を設定する。 |
Value_Mode | string | "Control"の"Value"モードにおける"Mode"を設定する。 value: "Selected" or "Individual" |
Value_Keyframe | bool | "Control"の"Value"モードにおける"Keyframe"のチェックボックスを設定する。 |
Keyframe_SlopeX | string | "Control"の"Keyframe"モードにおける"Slope X"を設定する。 |
Keyframe_SlopeY | string | "Control"の"Keyframe"モードにおける"Slope Y"を設定する。 |
Keyframe_SlopeZ | string | "Control"の"Keyframe"モードにおける"Slope Z"を設定する。 |
Keyframe_InterceptX | string | "Control"の"Keyframe"モードにおける"Intercept X"を設定する。 |
Keyframe_InterceptY | string | "Control"の"Keyframe"モードにおける"Intercept Y"を設定する。 |
Keyframe_InterceptZ | string | "Control"の"Keyframe"モードにおける"Intercept Z"を設定する。 |
Keyframe_InputMode | string | "Control"の"Keyframe"モードにおける"Input Mode"を設定する。 value: "Absolute", or "Relative" |
Keyframe_OutputMode | string | "Control"の"Keyframe"モードにおける"Output Mode"を設定する。 value: "Absolute", "Relative", "AbsoluteScaling", or "RelativeScaling" |
Keyframe_Shift | string | "Control"の"Keyframe"モードにおける"Shift"を設定する。 value: "Current", "Same", "Constant", "Increment" or "Manual" |
Keyframe_Offset | string | "Control"の"Keyframe"モードにおける"Offset"を設定する。 |
スクリプトを実行する。
@param {string} type - どのスクリプトを実行したいか。
@param {(number|string)} value
type | value | 説明 |
---|---|---|
Comp_Precomp | string | "Comp"の"Precomp"を実行する。プリコンポーズしたコンポジションの名前をvalueによって与えることが出来る。 |
Comp_Upcomp | string | "Comp"の"Upcomp"を実行する。親のコンポジションの名前をvalueによって与えることが出来る。 |
Comp_Mold | - | "Comp"の"Mold"を実行する。 |
Comp_Fixed | - | "Comp"の"Fixed"を実行する。 |
Comp_Unique | - | "Comp"の"Unique"を実行する。 |
Comp_Enable | - | "Comp"の"Enable"を実行する。 |
Comp_Disable | - | "Comp"の"Disable"を実行する。 |
Comp_Delete | - | "Comp"の"Delete"を実行する。 |
Comp_Rename | - | "Comp"の"Rename"を実行する。 |
Comp_Double | - | "Comp"の"Double"を実行する。 |
Control_Pick | - | "Control"の"Pick"を実行する。 |
Control_Set | - | "Control"の"Set"を実行する。 |
Pickwhip_Set | - | "Control"において"Pickwhip"モードとして"Set"を実行する。 |
Value_Set | - | "Control"において"Value"モードとして"Set"を実行する。 |
Keyframe_Set | - | "Control"において"Keyframe"モードとして"Set"を実行する。 |
Shape_Convert | - | "Control"の"Shape Layer"の"Convert"を実行する。 |
Shape_Bake | - | "Control"の"Shape Layer"の"Bake"を実行する。 |
CameraSwitcher_Convert | - | "Switch"の"Camera Switcher"の"Convert"を実行する。 |
CameraSwitcher_Delete | - | "Switch"の"Camera Switcher"の"Delete"を実行する。 |
LayerSwitcher_Convert | number | "Switch"の"Layer Switcher"の"Convert"を実行する。トランジションの時間をvalueで与えることが出来る。 |
LayerSwitcher_Delete | - | "Switch"の"Layer Switcher"の"Delete"を実行する。 |
PathSwitcher_Pick | - | "Switch"の"Path Switcher"の"Pick"を実行する。 |
PathSwitcher_Set | - | "Switch"の"Path Switcher"の"Set"を実行する。 |
最初に選択したレイヤーのプロパティをPickする。
dependencies: KikakuUtils
@param {(string|array)} path - プロパティのパス。(参照: KikakuUtils#appendix_path)
@returns {bool} - 選択できたらtrue、選択できなかったらfalseを返す。