Adobe AfterEffectsでは、エクスプレッションというJavascriptエンジンのプログラミング言語を使えます。
エクスプレッションの説明は、Adobe公式の「エクスプレッション言語リファレンス」に記載してありますが、実際の動作を見ないと理解するのはなかなか難しいです。
そこで、動作を直感的に理解できるように、約80本の動画にエクスプレッションの動作をまとめてみましたのでご紹介します。
・「Ae全エクスプレッション」動画は、「Layer>Sub-objects」「Layer>Space Transforms」「Project properties」など、現時点で対象外のものがあります。
・「Aeエクスプレッション」動画も、現時点で制作していないものもありますのでご了承ください。
動画の活用方法
カテゴリ毎の全エクスプレッションをまとめた「Ae全エクスプレッション」動画と、エクスプレッションのメソッド全引数を説明した「Aeエクスプレッション」動画に分けて制作しました。
動画の活用方法や、アイコンの意味などについては、以下の記事にまとめましたのでご覧ください。
関連記事
YouTube「COLOR CODE - AE」チャンネルで公開している、AfterEffectsのエクスプレッション動画を最大限に活用する方法についてご紹介したいと思います。
この記事を活用することで、エクスプレッションを「探す」[…]
エクスプレッション動画
各エクスプレッションのリンクと説明を表にまとめてみました。説明はなるべくわかりやすく簡潔にまとめてみました。
※ リンクが無いメソッドは現時点で未制作のエフェクト動画です。
※ プロパティは「Ae全エクスプレッション」動画でご確認ください。
※ エクスプレッションの正確な説明はAdobe公式の「
エクスプレッション言語リファレンス」をご確認ください。
Global
Ae全エクスプレッション
Aeエクスプレッション
Time Conversion
Ae全エクスプレッション
Aeエクスプレッション
| エクスプレッション名 | 説明 |
| timeToFrames(t, fps, isDuration) | 時間(秒)をフレームに変換 |
| framesToTime(frames, fps) | フレームを時間(秒)に変換 |
| timeToTimecode(t, timecodeBase, isDuration) | 時間(秒)をタイムコードに変換 |
| timeToNTSCTimecode(t, ntscDropFrame, isDuration) | 時間(秒)をNTSCタイムコードに変換 |
| timeToFeetAndFrames(t, fps, framesPerFoot, isDuration) | 時間(秒)をフィート数とフレーム数に変換 |
| timeToCurrentFormat(t, fps, isDuration) | 時間(秒)を現在の表示形式に変換 |
※ 記述が長くなってしまうので、各引数の初期値は省略しています
Vector Math
Ae全エクスプレッション
Aeエクスプレッション
| エクスプレッション名 | 説明 |
| add(vec1, vec2) | ベクトルを加算 |
| sub(vec1, vec2) | ベクトルを減算 |
| mul(vec, amount) | ベクトルを乗算 |
| div(vec, amount) | ベクトルを除算 |
| clamp(value, limit1, limit2) | ベクトルの範囲制限 |
| dot(vec1, vec2) | ベクトルの内積 |
| cross(vec1, vec2) | ベクトルの外積 |
| normalize(vec) | ベクトルを正規化 |
| length(vec) | ベクトルの長さ |
| length(point1, point2) | 2点間の長さ |
| lookAt(fromPoint, atPoint) | レイヤーの向きをコントロール |
Random Numbers
Ae全エクスプレッション
Aeエクスプレッション
Interpolation
Ae全エクスプレッション
Aeエクスプレッション
| エクスプレッション名 | 説明 |
| linear(t, value1, value2) | tが0~1で値1~値2にリニア補間 |
| linear(t, tMin, tMax, value1, value2) | tがtMin~tMaxで値1~値2にリニア補間 |
| ease(t, value1, value2) | tが0~1で値1~値2にリニア補間(イーズイン、イーズアウト) |
| ease(t, tMin, tMax, value1, value2) | tがtMin~tMaxで値1~値2にリニア補間(イーズイン、イーズアウト) |
| easeIn(t, value1, value2) | tが0~1で値1~値2にリニア補間(イーズイン) |
| easeIn(t, tMin, tMax, value1, value2) | tがtMin~tMaxで値1~値2にリニア補間(イーズイン) |
| easeOut(t, value1, value2) | tが0~1で値1~値2にリニア補間(イーズアウト) |
| easeOut(t, tMin, tMax, value1, value2) | tがtMin~tMaxで値1~値2にリニア補間(イーズアウト) |
Color Conversion
Ae全エクスプレッション
Aeエクスプレッション
Other Math
Ae全エクスプレッション
Aeエクスプレッション
JavaScript Math
Ae全エクスプレッション
Aeエクスプレッション
| エクスプレッション名 | 説明 |
| Math.cos(value) | 角度(ラジアン)から正弦 (サイン) を取得 |
| Math.acos(value) | 逆余弦 (アークコサイン)を角度(ラジアン)で取得 |
| Math.tan(value) | 角度(ラジアン)から正接(タンジェント)を取得 |
| Math.atan(value) | 角度(ラジアン)から正接(タンジェント)を取得 |
| Math.atan2(y,x) | 原点から点(x, y)までのベクトルとx軸(正)の角度 (ラジアン) を返す |
| Math.sin(value) | 角度(ラジアン)から正弦(サイン)を取得 |
| Math.sqrt(value) | 平方根(ルート)を取得 |
| Math.exp(value) | 自然対数の底のべき乗を取得 |
| Math.pow(value, exponent) | べき乗を取得(valueのexponent乗) |
| Math.log(value) | 数値の自然対数を取得 |
| Math.abs(value) | 数値の絶対値を取得 |
| Math.round(value) | 小数点以下を四捨五入 |
| Math.ceil(value) | 小数点以下の値を切り上げ |
| Math.floor(value) | 小数点以下の値を切り捨て |
| Math.min(value1, value2) | 引数の中で最も小さい値を返す |
| Math.max(value1, value2) | 引数の中で最も大きい値を返す |
| Math.PI | 円周率を取得 |
| Math.E | 自然対数の底を取得 |
| Math.LOG2E | 2を底としたeの対数を取得 |
| Math.LOG10E | 10を底としたeの対数を取得 |
| Math.LN2 | 2の自然対数を取得 |
| Math.LN10 | 10の自然対数を取得 |
| Math.SQRT2 | 2の平方根を取得 |
| Math.SQRT1_2 | 1/2の平方根を取得 |
Comp
Ae全エクスプレッション
Aeエクスプレッション
| エクスプレッション名 | 説明 |
| layer(index) | レイヤー取得(レイヤー番号指定) |
| layer(name) | レイヤー取得(レイヤー名指定) |
| layer(otherLayer, relIndex) | レイヤー取得(他レイヤーからの位置指定) |
| marker.key(index) | マーカー取得(番号指定) |
| marker.key(name) | マーカー取得(名前指定) |
| marker.nearestKey(t) | マーカー取得(t(秒)に最も近いマーカー) |
| marker.numKeys | マーカーの数を取得 |
| numLayers | レイヤーの数を取得 |
| activeCamera | レンダリングするカメラを取得 |
| width | コンポジションの幅を取得 |
| height | コンポジションの高さを取得 |
| duration | コンポジションのデュレーション値(秒)を取得 |
| ntscDropFrame | ドロップフレーム情報(Boolean)を取得 |
| displayStartTime | コンポジションの開始時間(秒)を取得 |
| frameDuration | フレームのデュレーション(秒)を取得 |
| shutterAngle | コンポジションのシャッター角度(度数)を取得 |
| shutterPhase | コンポジションのシャッターフェーズ(度数)を取得 |
| bgColor | コンポジションの背景色(配列)を取得 |
| pixelAspect | コンポジションのピクセル縦横比を取得 |
| name | コンポジション名を取得 |
Footage
Ae全エクスプレッション
Aeエクスプレッション
| エクスプレッション名 | 説明 |
| width | フッテージの幅を取得 |
| height | フッテージの高さを取得 |
| duration | フッテージのデュレーション(秒)を取得 |
| frameDuration | フッテージのフレームデュレーション(秒)を取得 |
| ntscDropFrame | フッテージのドロップフレーム情報(Boolean)を取得 |
| pixelAspect | フッテージのピクセル縦横比を取得 |
| name | フッテージ名を取得 |
Layer>Sub-objects
Ae全エクスプレッション
Aeエクスプレッション
Layer>General
Ae全エクスプレッション
Aeエクスプレッション
| エクスプレッション名 | 説明 |
| width | レイヤーの幅を取得 |
| height | レイヤーの高さを取得 |
| index | レイヤー番号を取得 |
| parent | 親レイヤーを取得 |
| hasParent | 親レイヤーの有無(Boolean)を取得 |
| inPoint | レイヤーのインポイント(秒)を取得 |
| outPoint | レイヤーのアウトポイント(秒)を取得 |
| startTime | レイヤーの開始時間(秒)を取得 |
| hasVideo | レイヤーのビデオ有無(Boolean)を取得 |
| hasAudio | レイヤーのオーディオ有無(Boolean)を取得 |
| active | レイヤーのアクティブ状態(Boolean)を取得 |
| enabled | レイヤーの有効無効(Boolean)を取得 |
| audioActive | レイヤーの音声アクティブ状態(Boolean)を取得 |
| sampleImage(point, radius, postEffect, t) | レイヤーの指定位置から色取得 |
※ sampleImageのみ、表記を短くするため引数の初期値は省略しています
Layer>Properties
Ae全エクスプレッション
Aeエクスプレッション
| エクスプレッション名 | 説明 |
| anchorPoint | レイヤーのアンカーポイントを取得 |
| position | レイヤーの位置を取得 |
| scale | レイヤーのスケールを取得 |
| rotation | レイヤーの回転を取得 |
| opacity | レイヤーの不透明度を取得 |
| audioLevels | レイヤーのオーディオレベル(デシベル)を取得 |
| timeRemap | レイヤーのタイムリマップ’(秒)を取得 |
| marker.key(index) | レイヤーマーカーを取得(番号指定) |
| marker.key(name) | レイヤーマーカーを取得(名前指定) |
| marker.nearestKey(t) | レイヤーマーカーを取得(t(秒)に最も近いマーカー) |
| marker.numKeys | レイヤーマーカーの数を取得 |
| name | レイヤーの名前を取得 |
Layer>3D
Ae全エクスプレッション
Aeエクスプレッション
| エクスプレッション名 | 説明 |
| orientation | 3Dレイヤーの3D方向(度数)を取得 |
| rotationX | 3DレイヤーのX回転を取得 |
| rotationY | 3DレイヤーのY回転を取得 |
| rotationZ | 3DレイヤーのZ回転を取得 |
| lightTransmission | 3Dレイヤーのライト透過を取得 |
| castsShadows | 3Dレイヤーのシャドウを受ける(0 or 1)を取得 |
| acceptsShadows | 3Dレイヤーのシャドウを落とす(0 or 1)を取得 |
| acceptsLights | 3Dレイヤーのライトを受ける(0 or 1)を取得 |
| ambient | 3Dレイヤーのアンビエントを取得 |
| diffuse | 3Dレイヤーの拡散を取得 |
| specular | 3Dレイヤーの鏡面を取得 |
| shininess | 3Dレイヤーの光沢を取得 |
| metal | 3Dレイヤーの金属を取得 |
Layer>Space Transforms
Ae全エクスプレッション
Aeエクスプレッション
| エクスプレッション名 | 説明 |
| toComp(point, t=time) | 座標変換(レイヤー空間→コンポジション空間) |
| fromComp(point, t=time) | 座標変換(コンポジション空間→レイヤー空間) |
| toWorld(point, t=time) | 座標変換(レイヤー空間→ワールド空間) |
| fromWorld(point, t=time) | 座標変換(ワールド空間→レイヤー空間) |
| toCompVec(vec, t=time) | ベクトル変換(レイヤー空間→コンポジション空間) |
| fromCompVec(vec, t=time) | ベクトル変換(コンポジション空間→レイヤー空間) |
| toWorldVec(vec, t=time) | ベクトル変換(レイヤー空間→ワールド空間) |
| fromWorldVec(vec, t=time) | ベクトル変換(ワールド空間→レイヤー空間) |
| fromCompToSurface(point, t=time) | コンポジション空間からレイヤー表面へアクティブカメラ撮影方向に投影 |
Camera
Ae全エクスプレッション
Aeエクスプレッション
| エクスプレッション名 | 説明 |
| pointOfInterest | カメラの目標点(ワールド空間)を取得 |
| zoom | カメラのズーム値を取得 |
| depthOfField | カメラの被写界深度設定(0 or 1)を取得 |
| focusDistance | カメラのフォーカス距離を取得 |
| aperture | カメラの絞りを取得 |
| blurLevel | カメラのブラーを取得 |
| active | カメラのアクティブ状態(Boolean)を取得 |
Light
Ae全エクスプレッション
Aeエクスプレッション
| エクスプレッション名 | 説明 |
| pointOfInterest | ライトの目標点を取得 |
| intensity | ライトの強度を取得 |
| color | ライトの色を取得 |
| coneAngle | ライトの円錐頂角(度数)を取得 |
| coneFeather | ライトの円錐ぼかしを取得 |
| shadowDarkness | ライトのシャドウの暗さを取得 |
| shadowDiffusion | ライトのシャドウの拡散を取得 |
Effect
Ae全エクスプレッション
Aeエクスプレッション
| エクスプレッション名 | 説明 |
| active | エフェクトのアクティブ状態(Boolean)を取得 |
| param(name) | エフェクトのパラメーターを取得(名前指定) |
| param(index) | エフェクトのパラメーターを取得(上からの順番指定) |
| name | エフェクトの名前を取得 |
Mask
Ae全エクスプレッション
Aeエクスプレッション
| エクスプレッション名 | 説明 |
| MaskOpacity | マスクの不透明度を取得 |
| MaskFeather | マスクの境界線のぼかしを取得 |
| maskExpansion | マスクの拡張を取得 |
| invert | マスクの反転状態(Boolean)を取得 |
Property
Ae全エクスプレッション
Aeエクスプレッション
| エクスプレッション名 | 説明 |
| value | 現在時刻のプロパティ値を取得 |
| valueAtTime(t) | 指定時刻のプロパティ値を取得 |
| velocity | 現在時刻の時間速度を取得 |
| velocityAtTime(t) | 指定時刻の時間速度を取得 |
| speed | 現在時刻の空間速度を取得 |
| speedAtTime(t) | 指定時刻の空間速度を取得 |
| wiggle(freq, amp, octaves, amp_mult, t) | プロパティ値を不規則に変動 |
| temporalWiggle(freq, amp, octaves, amp_mult, t) | 時間軸上を不規則に変動 |
| smooth(width=.2, samples=5, t=time) | 時間範囲内でプロパティ値をなだらかに |
| loopIn(type=”cycle”, numKeyframes=0) | 最初のキーフレーム前をループ(キーフレーム数指定) |
| loopOut(type=”cycle”, numKeyframes=0) | 最後のキーフレーム後をループ(キーフレーム数指定) |
| loopInDuration(type=”cycle”, duration=0) | 最初のキーフレーム前をループ(時間(秒)指定) |
| loopOutDuration(type=”cycle”, duration=0) | 最後のキーフレーム後をループ(時間(秒)指定) |
| key(index) | キーフレーム、又はマーカー取得(番号指定) |
| key(markerName) | マーカー取得(名前指定) |
| nearestKey(t) | キーフレーム、又はマーカー取得(t(秒)に最も近いもの) |
| numKeys | キーフレームの数 |
| propertyGroup(countUp = 1) | 関連するプロパティグループを取得 |
| propertyIndex | プロパティのインデックスを取得 |
| name | プロパティ、又はプロパティグループの名前を取得 |
※ 表記を短くするため、wiggleとtemporalWiggleの引数の初期値は省略しています
Project properties
Ae全エクスプレッション
Aeエクスプレッション
| エクスプレッション名 | 説明 |
| thisProjec | プロジェクトオブジェクトを取得 |
| thisProject.fullPath | ファイル名を含む絶対パスを取得 |
| thisProject.bitsPerChannel | プロジェクトの色深度(bpc)を取得 |
| thisProject.linearBlending | 「ガンマ値 1.0 でカラーをブレンド」の設定を取得 |
Key
Ae全エクスプレッション
Aeエクスプレッション
| エクスプレッション名 | 説明 |
| value | キーフレームの値を取得 |
| time | キーフレームの時間を取得 |
| index | キーフレームのインデックスを取得 |
MarkerKey
Ae全エクスプレッション
Aeエクスプレッション
| エクスプレッション名 | 説明 |
| duration | マーカーのデュレーション(秒)を取得 |
| comment | マーカーの「コメント」を取得 |
| chapter | マーカーの「チャプター」を取得 |
| url | マーカーの「URL」を取得 |
| frameTarget | マーカーの「フレームターゲット」を取得 |
| eventCuePoint | マーカーのキューポイントの種類(Boolean)を取得 |
| cuePointName | マーカーの「名前」を取得 |
| parameters | マーカーの「パラメーター名」と「パラメーター値」を取得 |
※ 「」内は、マーカーダイアログボックスのフィールド名です。
まとめ
エクスプレッションには便利なものがたくさんあり、難しいことでも簡単に実現出来るなど、非常に大きなメリットがあります。
一方、デメリットは結果をイメージしにくいハードルの高さだと思います。
この記事では、難しくならないように、なるべく簡潔に説明を記載し、動画で動作結果も確認できるようにしました。
この記事でエクスプレッションのハードルが少しでも下がり、読んでいただいた方の映像制作がより快適になれば嬉しいです。
この記事の動画は全てYouTubeの「COLOR CODE – AE」チャンネルで公開しています。目的別にエクスプレッションを探せるようにもなっているので、チャンネル登録をお待ちしています。