エクスプレッション制御の結合
PresetEffects.xmlに記述すると、エクスプレッション制御エフェクトを結合して1つのプラグインとして認識させることが出来る
エクスプレッション制御、スライダ制御を3つ追加した
1つにまとめるとこうなる
インストールフォルダのSupport Files内にPresetEffects.xmlというのがあるのでこれを編集する
<Effects>~</Effects>内に記述する
フォーマット
<Effect matchname="エフェクト識別する名前" name="エフェクトの名前=表示されるエフェクトの名前">
追加したい形式
</Effect>
名前はすべて英数文字で記述する
パラメータの名前=表示されるパラメータの名前部分は基本的に一緒でよい
<Effect matchname="MY Slider1" name="auto-SlideControl=auto-SlideControl">
形式の種類
<Color /> カラー制御
<Slider /> スライダ制御
<Checkbox /> チェックボックス制御
<Point /> ポイント制御
<Layer /> レイヤー制御
<Angle /> 角度制御
形式のフォーマット
パラメータの名前はそれぞれ英数文字で記述する。
xmlの文字コードをUTF-8にしても日本語文字(2バイト文字)は無効になり、エフェクトとして認識されなくなる
カラー制御
<Color name="パラメータの名前=表示されるパラメータの名前" default_red="赤の色" default_green="緑の色" default_blue="青の色"/>
色の値は8bitのみみたいなのでそれぞれ[0~255]で
スライダ制御
<Slider name="パラメータの名前=表示されるパラメータの名前" default="初期値" valid_min="最小値" valid_max="最大値" slider_min="エフェクトパネル上の最小値" slider_max="エフェクトパネル上の最大値"/>
値はAfterEffectsの制限内だと思うので[-30000~30000]の間
チェックボックス制御
<Checkbox name="パラメータの名前=表示されるパラメータの名前" default="最初からチェックしておくかどうか"/>
最初からチェックしておくかどうかは[true/false]のどちらか
ポイント制御
<Point name="パラメータの名前=表示されるパラメータの名前" default_x="横のポイントの初期値" default_y="縦のポイントの初期値"/>
値はピクセルではなく、レイヤーの縦、横の割合
よって[0~1]の間
たとえば中心にする場合、それぞれ0.5にする
レイヤー制御
<Layer name="パラメータの名前=表示されるパラメータの名前" default_self="最初から自分自身を選んでおくかどうか"/>
最初から自分自身を選んでおくかどうかは[true/false]だが、どちらにしても自分を選んでいるようなのでどちらでもよいかも
角度制御
<Angle name="パラメータの名前=表示されるパラメータの名前" default="初期値"/>
値は度数で90とか、360とか540とか
「パラメータの名前=表示されるパラメータの名前」の部分は
$$$/AE/Preset/BoxStepSpeed=Box Step Speed
などとすると、はじめから用意されているプリセットにローカライズされている名前がついているので、それで表示をローカライズされた名前にすることができる
ローカライズの名前のリストは
Support Files>zdictionariesフォルダ内にあるので参照。
after_effects_jp.datの一部を抜粋
"$$$/AE/Preset/Orbit=軌道"
"$$$/AE/Preset/Orbit3D=軌道 3D"
"$$$/AE/Preset/Oscillate=振動"
"$$$/AE/Preset/OscillateAtMarker=振動 (マーカー)"
"$$$/AE/Preset/OscillateOnBeat=振動 (ビート)"
"$$$/AE/Preset/OscillateRandom=振動 (ランダム)"
ローカライズのファイルには右辺にローカライズ名が入っているのだが、これを英語の名前にしないといけない
基本的には大文字になったところでスペースを空けてあげればいいみたい
$$$/AE/Preset/Orbit=軌道
↓
$$$/AE/Preset/Orbit=Orbit
$$$/AE/Preset/OscillateRandom=振動 (ランダム)
↓
$$$/AE/Preset/OscillateRandom=Oscillate Random
このあたりはエフェクトパネル上の見た目の問題なのでお好みで
エフェクトを適用するにはスクリプトからエフェクトを割り当てる必要がある
エフェクトの名前を
<Effect matchname="MY Slider1" name="auto-SlideControl">
としているのであれば
app.project.item(1).layer(1).property("ADBE Effect Parade").addProperty("MY Slider1");
のように記述して実行してエフェクトを可視化する
使うエクスプレッションを仕込んでffxとして保存する
記述例1
<Effect matchname="mySample" name="mySample=mySample">
<Slider name="Red=Red" default="0" valid_min="0" valid_max="255" slider_min="0" slider_max="255"/>
<Slider name="Green=Green" default="0" valid_min="0" valid_max="255" slider_min="0" slider_max="255"/>
<Slider name="Blue=Blue" default="0" valid_min="0" valid_max="255" slider_min="0" slider_max="255"/>
</Effect>
記述例2
<Effect matchname="MY Slider1" name="my_slider1=AutoSlider">
<Slider name="dpi=dpi" default="0" valid_min="120" valid_max="1000" slider_min="0" slider_max="360"/>
<Slider name="$$$/AE/Preset/Speed=Speed" default="0" valid_min="0" valid_max="1000" slider_min="0" slider_max="100"/>
<Angle name="$$$/AE/Preset/Direction=Direction" default="0"/>
<Slider name="$$$/AE/Preset/Delay=Delay" default="1" valid_min="1" valid_max="100" slider_min="1" slider_max="6"/>
</Effect>
利点としては、エクスプレッションが書きやすくなる。見た目がすっきり。
パラメータが複数あっても1つのプラグインなので、エクスプレッションで値を得るのが楽
不便なところは、ほかのコンピュータでレンダリングしたりするときはそのコンピュータのPresetEffects.xmlにも記述しないといけない