dA-tools.com

HOME > AfterFx > expression > 実践 > エクスプレッション制御

エクスプレッション制御

エクスプレッションを助ける機能

  • ExpContr.gifVer5.5からエフェクトのカテゴリーに追加されたコントロールです。
  • エフェクトメニューに含まれていますがレイヤーには何も影響しません
  • エクスプレッションの変数をエクスプレッション制御に置き換えることでパラメーターをコントロールすることが出来るようになります。
  • またプロジェクト内の全てのエクスプレッションから参照できるので、グローバル変数や定数のように扱うことも出来ます。
  • 複数のレイヤーやプロパティを一度にコントロールしたり、ネストされたCompのプロパティを変更したりすることもできます。

値のコントロール

1.スライダー、角度制御

  • SliderCap.gifスライダーも角度制御も単一の値(スカラ量)を制御します。
  • スライダーでコントロールする値の範囲は自由に編集できます。
  • エクスプレッションの定数や変数のテストにも使えます。

エクスプレッションをコントロールする上で非常に便利なモノです。

記述の注意

  • CS4まで:effect("スライダ制御")("スライダ")
  • CS5から:effect("スライダー制御")("スライダー")
    • カタカナ語の表記が変更になりました。
  • Match NameLinkIconで記述するとCS5以前でも以降でもどちらでも使えます。
    • effect("ADBE Slider Control")(1)

2.スイッチ

チェックボックス

  • switch.gifエクスプレッション全体又は一部をON/OFFさせたい時に使います。
  • チェックしているときは「true=1」
  • チェックしていないときは「false=0」を返します。
  • この値を式やプロパティに乗算することでスイッチの役目をさせることができます。

例A:エフェクトのON<->OFF

  • コンポジションが多くなったりネストが深くなった場合、処理の重いエフェクトだけをOFFにしたい時があります。この例では次のエクスプレッションをエフェクトのブラー(方向)の「ブラーの長さ」に書いています。

sw=effect("チェックボックス制御").param("チェックボックス");
thisProperty * sw

例B:親のOn<>Off

  • チェックOnのときだけオレンジのレイヤーにペアレント(位置)
  • 下の式をグリーンの「位置」に書いています。

(effect("chBox")("チェックボックス").value)? thisComp.layer("Org").position:position

3.カラー

カラー制御

  • 色見本制御とスポイトが含まれています。
  • 任意の色をこのコントロールに登録することが出来ます。

例:距離によって変わる色

  • カラー制御に「赤」「オレンジ」「白」をセットしておきます。
  • 小さな四角が100pix以内に入ると「オレンジ」になり、さらに50pix以内になると「赤」に変化します。

  • エフェクト→レンダリング→「塗り」を適用して、そのパラメーターである「カラー」に次のエクスプレッションを書いています。

def=length(position, thisComp.layer("White").position);
if (def<50)
  color=effect("Red").param("カラー")
else if (def>=50 && def<100)
 color=effect("Org").param("カラー")
else
 color=effect("White").param("カラー")

4.位置

ポイント制御

  • 任意の位置を Pointとして指定できます。機能的にはNullを使うのと大差ありません。
  • メリットとしては
    • タイムラインの要素が増えない。(Nullと比較して)
    • エクスプレッションを書いてエフェクト・テンプレートに保存できる。

3Dポイント制御

  • ポイント制御の三次元版です。x,yに加えてzの制御が出来ます。

5.レイヤー

レイヤー制御

  • アクティブなコンポジション内の全てのレイヤーリストが表示されます
  • リストから参照先を変更できます。しかしExpressionでリストをコントロールすることができません。

例:情報表示 HUD風

  • [レイヤー制御]で選択したレイヤーの情報を画面に表示します。

LayInfo.jpg


  • 文字を表示する平面を追加して、エフェクトの「テキスト」→「番号」とレイヤー制御、カラー制御を適用します。
  • エフェクトの「テキスト」の「形式」→「値」に以下の式を記述。

effect("レイヤー制御").param("レイヤー").position[0] 

  • 参照の最後は表示したいプロパティを記述します。
  • 塗りと線」→「塗りつぶしの色」に以下の式を記述。

effect("カラー制御").param("カラー")

  • 「レイヤー制御」のリストから表示するレイヤーを選びます。
  • 「カラー制御」で表示するTextの色を指定します。
  • 上記の様にセットしたレイヤーを複製すると画面上で複数レイヤーのプロパティを比較することが出来ます。

dataOn.gif

乱数を揃える

  • 複数のレイヤーで同じ変数を使うために、エクスプレッション制御をグローバル変数的に扱う例です。

  • グローバル変数タイムライン上段の2つのレイヤーにはまったく同じエクスプレッションを書いています。しかしレイヤーが異なると違う値になるのでこのように違う動きになります。
  • これを同じ動きにするには乱数を発生させるレイヤーを別に作って、その値をそれぞれのレイヤーが参照するようにします。例では[ null ]にエクスプレッション制御の「ポイント制御」を適用して、そこに乱数のエクスプレッションを書いています。

  • エクスプレッション制御は其々扱える次元の違いで使い分けます。
    • スライダ:1次元
    • 角度制御:1次元
    • ポイント制御:2次元
    • チェックボックス制御:0 1 ,bool値

globalVar.png