dA-tools.com

HOME > AfterFx > expression > 基礎 > 演算

2.演算

次は、一歩進んで演算です。

  • 不透明度のプロパティに [ 100 - 50 ]と入力してください。
  • 小学生の算数ですが、これでも立派な「演算」です。[ 100 - 50 ]の計算結果[ 50 ]がプロパティに渡され、半透明になります。一般的な計算式 50+125 とか (10*3)/5 などの計算式でもその計算結果がプロパティに渡されます。やってみてください。

例:観覧車

下図のように回転の元になるリングレイヤー"ring"を親にしたゴンドラをセットします。親子関係にしただけではオレンジのゴンドラのようになってしまいますね。

  • ここでゴンドラを常に水平に保つにはどうすればいいでしょう?
  • それにはゴンドラをリングレイヤーと同じ値だけ逆に「回転」すればいいですね。
  • リングレイヤーの回転値にマイナス1を掛けましょう。
  • 実際にはゴンドラの「回転」プロパティに次の式を書きます。

thisComp.layer("ring").rotation * -1

  • エクスプレッションを有効にして、リングを回転させるとその角度に合わせて式を適用した緑のゴンドラだけが水平を保ちます。
  • ごちゃごちゃして難しそうな thisComp.layer("ring").rotation の部分については後で説明しますので、ここでは[ -1]を掛けるだけでこんなことが出来るということを見てください。

続いてちょっと変わった演算です。

  • v-50b.gif不透明度のプロパティに[ value - 50 ]と入力してください。
  • 見ての通り[ value ]から[ 50 ]を引いています。これでもレイヤーが半透明になりますね。

Valueって何の値?

  • それはこのエクスプレッションを書いたパラメーターの現在の値です。不透明度のパラメーターに書いていますからこのレイヤーの不透明度の値です。
  • 現在デフォルトのままなので[ 100 ]ですね。ということは

[ Value - 50 ] は [ 100 - 50 ]と同じなのです。

  • その結果このレイヤーの不透明度は[ 50 ]になります。

ところでこのvalueってなんの役に立つんだ?

変化する value

次に「現在の値」を変化させてみましょう。

  • 不透明度の値にキーを打って1秒のフェードインにして下さい。

この作業をするにはまずエクスプレッションをOFFにする必要があります。

  • スタート(0Fr)が0%で1秒め(24Fr)を100%にしてエクスプレッションをOnにしてください。

varval.gif

  • 12Frまで何も現れませんね。[ value ]の値が[ 50 ]より小さいので計算結果がマイナスになっているのです。
  • 計算結果が不透明度の最小値[ 0 ]より小さくてもエラーにはならず、自動的に最小値[ 0 ]に置き換えられています。
  • 12Frから見えてきますね。1秒目で半透明[ =50% ]になります。
  • つまり[ value ]と言うのはタイムマーカーが現在あるフレームのプロパティ値という意味です。このように元の値がどんな数か解らなくてもその値をコントロールすることが出来るわけです。
  • グラフを見るとエクスプレッションの結果が一目瞭然です。

デフォルト式の利用

  • なお、エクスプレッションを有効にしたときに書き込まれるデフォルトの記述もここで説明した[ value ]と同じような使い方が出来ます。
  • この例の場合だと不透明度にエクスプレッションを適用したときには[ opacity ]又は[ transform.opacity ]と書き込まれるので[ value -50 ]でなくて[ opacity - 50 ]としても同じ結果になります。