ファイル/プロジェクト設定を選択します。
- After Effects ユーザガイド
- ベータ版のリリース
- はじめに
- Workspaces
- プロジェクトとコンポジション
- フッテージの読み込み
- テキストとグラフィック
- テキスト
- モーショングラフィック
- 描画、ペイント、パス
- レイヤー、マーカー、カメラ
- アニメーション、キーフレーム、モーショントラッキング、キーイング
- アニメーション
- キーフレーム
- モーショントラッキング
- キーイング
- 透明度と合成
- カラーの調整
- エフェクトおよびアニメーションプリセット
- エクスプレッションと自動化
- イマーシブビデオ、VR、3D
- After Effects での VR 環境の作成
- イマーシブビデオエフェクトの適用
- VR/360 度ビデオの合成ツール
- 高度 3D レンダラー
- 3D モデルを読み込んでコンポジションに追加
- Creative Cloud ライブラリからの 3D モデルの読み込み
- 画像ベースの照明
- 3D モデルからのライトとカメラの抽出およびアニメーション化
- 3D カメラの移動のトラッキング
- シャドウを落とすおよび受ける
- 埋め込まれた 3D モデルアニメーション
- シャドウキャッチャー
- 3D 深度データ抽出
- 3D レイヤーのマテリアルプロパティの変更
- 3D デザインスペースでの作業
- 3D 変形ギズモ
- 3D アニメーションによるその他の操作
- Mercury 3D エンジンを使用した、3D デザインへのリアルタイムのプレビュー変更
- グラフィックへのレスポンシブデザインの追加
- ビューとプレビュー
- レンダリングと書き出し
- その他のアプリケーションの使用
- 共同作業:Frame.io と Team Projects
- メモリ、ストレージおよびパフォーマンス
- ナレッジベース
After Effects の時間変換メソッド、ベクトル演算メソッドなど、エクスプレッションおよびエクスプレッションリファレンスについて学習します。
After Effects のエクスプレッションを使用したキーフレームのループ
エクスプレッションを作成する際には、標準 JavaScript 要素のほかに、After Effects のエクスプレッション要素を使用します。エクスプレッションにメソッドや属性を挿入するにはエクスプレッション言語メニューを、プロパティを挿入するにはピックウイップをいつでも使用できます。
引数の説明に等号(=)と値が含まれている場合(t=time や width=.2 など)は、別の値を指定しない限り、ここに含まれるデフォルト値が引数の値として使用されます。
引数の説明には、角括弧で囲まれた数値が含まれていることがあります。この数値は、想定されるプロパティまたは配列のディメンションを示します。
戻り値の説明の中には角かっこで囲まれた数値が使われていることがあります。この数値は返されるプロパティまたは配列の次元を示します。特にディメンションが示されていない場合、返される配列のサイズは入力のディメンションに応じて変わります。
標準の JavaScript 言語に関する情報が W3Schools JavaScript リファレンスの web サイトで公開されています。ここには、JavaScript の Math および String オブジェクトに関するページも含まれています。
エクスプレッション: JavaScript エンジン
After Effects はエクスプレッションの評価に JavaScript エンジンを使用します。レンダリング時のエクスプレッション評価のパフォーマンスが、以前の ExtendScript エンジンよりも最大 5 倍高速になりました。
Windows 版の After Effects では、V8 オープンソース JavaScript エンジンを使用します。これは、ExtendScript で使用できる JavaScript よりも新しいバージョンの JavaScript(ECMA-262 標準の第 3 版のみをサポート)を提供しています。
プロジェクト設定 を使用して、プロジェクトで JavaScript エンジンを使用するか、従来の ExtendScript を使用するかを選択できます。
-
-
「エクスプレッション」タブを選択し、エクスプレッションエンジンを JavaScript または従来の ExtendScript として選択します。
注意:以前のバージョンの After Effects で保存されたプロジェクトでは、デフォルトで従来の ExtendScript が使用されます。
JavaScript エンジンによる改善点
- 浮動小数点演算の数値計算精度が向上しました。
- 最新の JavaScript の配列メソッドと文字列メソッドを使用できます。
- 型付き配列などのその他の新しい JavaScript オブジェクトや「let」および「const」キーワードの使用など、最新版の ECMA-262 標準に追加された多数の機能を利用できるようになりました。
JavaScript エンジンと ExtendScript の違い
- if/else ステートメントの構文は JavaScript エンジンでは厳密になっており、標準化された JavaScript に対応するように記述する必要があります。
- テキストレイヤーの文字列を配列と見なして、そのインデックスにアクセスするときは、text.sourceText[i] の代わりに text.sourceText.value[i] を使用します。
- 古い snake_case エクスプレッションメソッド(ExtendScript で既に廃止された this_comp や to_world など)はサポートされていません。
- 簡略化された「this(arg)」構文はサポートされていません。
グローバルオブジェクト、属性、メソッド(エクスプレッションのリファレンス)
comp(name)
返されるタイプ:Comp。
引数のタイプ: name は 文字列です。
名前を指定して別のコンポジションを取得します。
footage(name)
返されるタイプ:Footage。
引数のタイプ:name は 文字列です。
名前を指定してフッテージアイテムを取得します。
thisComp
返されるタイプ:Comp。
エクスプレッションを含む コンポジションを表します。
thisLayer
返されるタイプ:Layer、Light、Camera。
エクスプレッションを含む レイヤーを表します。thisLayer は デフォルトオブジェクトなので、これを使用するかどうかは任意です。例えば、エクスプレッションを 「thisLayer.width」で始めても、「width」で始めても、 結果は同じです。
thisProperty
返されるタイプ:プロパティ。
エクスプレッションを 含むプロパティを表します。例えば、回転プロパティのエクスプレッションを作成する場合は、 回転プロパティを参照するように エクスプレッションを「thisProperty」で始めます。
time
返されるタイプ:Number。
エクスプレッションが評価されている コンポジション時間を秒単位で表します。
colorDepth
返されるタイプ:Number。
プロジェクトの色深度の値を 返します。例えば、プロジェクトの色深度が 16 bit/チャンネルの場合、 colorDepth は 16 を返します。
posterizeTime(framesPerSecond)
返されるタイプ:Number。
引数のタイプ:framesPerSecond は 数値です。
framesPerSecond 値は、 残りのエクスプレッションで使用されるフレームレートを示します。この エクスプレッションを使用すると、プロパティのフレームレートを コンポジションのフレームレートよりも低く設定できます。例えば、以下の エクスプレッションは、1 秒あたり 1 回、ランダムな値でプロパティ値を更新します。
posterizeTime(1); random()value
返されるタイプ:Number、Array、String。
エクスプレッションを含むプロパティの 現時点での値を表します。
Time Conversion のメソッド(エクスプレッションのリファレンス)
timeToFrames(t = time + thisComp.displayStartTime, fps = 1.0 / thisComp.frameDuration, isDuration = false)
返されるタイプ:Number。
引数のタイプ:t と fps は 数値、isDuration はブール関数です。
デフォルトでは 現在のコンポジション時間である t の値を フレーム数を表す整数に変換します。1 秒あたりの フレーム数は fps 引数に指定します。 デフォルトでは、現在のコンポジションのフレームレート(1.0 / thisComp.frameDuration)です。 isDuration 引数は、デフォルトでは false ですが、 t 値が絶対時間ではなく 2 つの時間の差を表す場合は true にする必要があります。絶対時間は 負の無限大に近づくように切り捨てられます。 長さはゼロではなく正の値になるように切り上げられます。
framesToTime(frames, fps = 1.0 / thisComp.frameDuration)
返されるタイプ:Number。
引数のタイプ:frames と fps は 数値です。
timeToFrames の反転で、必須引数である frames に 対応する時間を返します。整数である必要はありません。fps 引数については timeToFrames を参照してください。
timeToTimecode(t = time + thisComp.displayStartTime, timecodeBase = 30, isDuration = false)
返されるタイプ:String。
引数のタイプ:t と timecodeBase は 数値、isDuration はブール関数です。
t の 値をタイムコードを表す文字列に変換します。 t 引数と isDuration 引数については、timeToFrames を参照してください。 timecodeBase 値(デフォルトでは 30)は、 1 秒あたりのフレーム数を指定します。
timeToNTSCTimecode(t = time + thisComp.displayStartTime, ntscDropFrame = false, isDuration = false)
返されるタイプ:String。
引数のタイプ:t は 数値、ntscDropFrame と isDuration は ブール関数です。
t を NTSC タイムコードを表す 文字列に変換します。t 引数と isDuration 引数については、 timeToFrames を参照してください。 ntscDropFrame が false(デフォルト)の場合は、 返される String はノンドロップフレームの NTSC タイムコードです。ntscDropFrame が true の場合、 返される文字列はドロップフレームの NTSC タイムコードです。
timeToFeetAndFrames(t = time + thisComp.displayStartTime, fps = 1.0 / thisComp.frameDuration, framesPerFoot = 16, isDuration = false)
返されるタイプ:String。
引数のタイプ:t、fps、 および framesPerFoot は数値、isDuration は ブール関数です。
t の値を フィルムのフィート数とフレーム数を表す文字列に変換します。t、fps、 isDuration 引数については、 timeToFrames を参照してください。framesPerFoot 引数には、 フィルムの 1 フィートあたりのフレーム数を指定します。デフォルトでは、 35mm フッテージで最も一般的なレートである 16 です。
timeToCurrentFormat(t = time + thisComp.displayStartTime, fps = 1.0 / thisComp.frameDuration, isDuration = false)
返されるタイプ:String。
引数のタイプ:t と fps は Number で、isDuration は Boolean です。
t の値を、現在のプロジェクト設定の表示形式で時間を表す String に変換します。すべての引数の定義については、timeToFrames を参照してください。
オプションの ntscDropFrame 引数が After Effects CS5.5 以降の timeToCurrentFormat() 機能に追加されました(初期設定:ntscDropFrame = thisComp.ntscDropFrame)。
フッテージのタイムコードの表示方法を制御するには、タイムコードエフェクトや番号エフェクトではなく、 timeToCurrentFormat メソッドやその他の timeTo メソッドを使用して、タイムコードを生成します。テキストレイヤーを作成し、エクスプレッションをソーステキストプロパティに追加して、エクスプレッションフィールドに「timeToCurrentFormat() 」と入力します。このメソッドを使用して、タイムコードテキストの書式設定やアニメートが可能です。タイムコードは現在のプロジェクト設定で定義されている表示形式を使用します。
Vector Math のメソッド(エクスプレッションのリファレンス)
ベクトル演算関数(Vector Math)は配列に対して演算を実行するグローバルメソッドで、配列を数学上のベクトルとして扱います。Math.sin などの組み込み JavaScript と異なり、これらのメソッドは Math プレフィックスでは使用しません。特に記述がない限り、Vector Math のメソッドは次元に関してあまり厳しくなく、欠落している要素にはゼロを指定した状態で最大の入力配列オブジェクトの次元の値を返します。例えば、エクスプレッション add([10, 20], [1, 2, 3]) は [11, 22, 3] を返します。
add(vec1, vec2)
返されるタイプ:配列。
引数のタイプ:vec1 および vec2 は 配列です。
2 つのベクトルを加算します。
sub(vec1, vec2)
返されるタイプ:配列。
引数のタイプ:vec1 および vec2 は 配列です。
2 つのベクトルを減算します。
mul(vec, amount)
返されるタイプ:配列。
引数のタイプ:vec は 配列、amount は数値です。
ベクトルの すべての要素を amountで乗算します。
div(vec, amount)
返されるタイプ:配列。
引数のタイプ:vec は 配列、amount は数値です。
ベクトルの すべての要素を amount で除算します。
clamp(value, limit1, limit2)
返されるタイプ:数値または配列。
引数のタイプ:value、limit1 および limit2 は、Number または配列です。
value の各コンポーネントの値は、limit1 と limit2 との間の値に制限されます。
dot(vec1, vec2)
返されるタイプ:Number。
引数のタイプ:vec1 および vec2 は 配列です。
ベクトル引数のドット積(内積)を返します。
cross(vec1, vec2)
返されるタイプ:配列 [2 または 3]。
引数のタイプ:vec1 および vec2 は 配列 [2 または 3] です。
vec1 および vec2 のベクターのクロス積を返します。 詳しくは、数値演算のリファレンスまたは JavaScript の関連文書を参照してください。
normalize(vec)
返されるタイプ:配列。
引数のタイプ:vec は 配列です。
長さが 1.0 になるようにベクターを正規化します。 normalize メソッドを使用すると、div(vec, length(vec)) 操作を 簡単に実行できます。
length(vec)
返されるタイプ:Number。
引数のタイプ:vec は 配列です。
ベクトル vec の長さを返します。
length(point1, point2)
返されるタイプ:Number。
引数のタイプ:point1 および point2 は 配列です。
2 点間の距離を返します。point2 引数は オプションです。例えば、length(point1, point2) は length(sub(point1, point2)) と同等です。
例えば、 次のエクスプレッションをカメラの「フォーカス距離」プロパティに追加して、 フォーカルプレーンをカメラの目標点に固定し、 目標点にピントが合うようにします。
length(position, pointOfInterest)lookAt(fromPoint, atPoint)
返されるタイプ:配列 [3]。
引数のタイプ:fromPoint および atPoint は配列 [3] です。
引数 fromPoint は、方向を設定するレイヤーのワールド空間における位置です。引数 atPoint は、レイヤーの方向として設定するワールド空間内のポイントです。戻り値を、方向プロパティ用のエクスプレッションとして使用して、レイヤーの Z 軸上のポイントを atPoint にできます。このメソッドは、カメラやライトで使用するととても便利です。このエクスプレッションをカメラに対して使用する場合は、自動方向をオフにします。例えば、スポットライトの方向プロパティに対するこのエクスプレッションでは、レイヤー番号 1 のアンカーポイントでのライトの位置を同じコンポジションとし、 lookAt(position, thisComp.layer(1).position) と記述します。
乱数メソッド(エクスプレッションのリファレンス)
プロパティ値をランダムに変化させる場合に使用する wiggle メソッドは、プロパティの属性とメソッドカテゴリに含まれています。詳しくは、プロパティの属性とメソッド(エクスプレッションリファレンス)を参照してください。
seedRandom(offset, timeless=false)
返されるタイプ:なし。
引数のタイプ:offset は 数値、timeless はブール関数です。
random メソッドと gaussRandom メソッドでは、 数値のシーケンスを制御するシード値を使用します。デフォルトでは、 シードは、一意のレイヤー識別子、レイヤー内のプロパティ、現在の時間、 オフセット値 0 の関数として計算されます。別のランダムシーケンスを 作成するには、seedRandom を呼び出して、 offset を 0 以外の値に設定します。
現在の時間を ランダムシードへの入力に使用しない場合は、 timeless 引数に true を使用します。timeless 引数に true を使用すると、評価の時間によって 変化しない乱数を生成できます。
offset 値は、 wiggle 関数の初期値を制御するためにも使用されます (timeless 値は使用されません)。
例えば、 次のエクスプレッションを「不透明度」プロパティに適用して、不透明度値を 時間によって変化しない乱数値に設定します。
seedRandom(123456, true); random()*100この例では、 100 を乗算して random メソッドから返される 0 ~ 1 の範囲の値を 0 ~ 100 の範囲の数値に変換しています。 この範囲は、0 ~ 100%の値で示される「不透明度」プロパティに 対応しています。
random()
返されるタイプ:Number。
0 ~ 1 の範囲の乱数を返します。
After Effects CC および CS6 では、random() の動作が変更され、レイヤーの識別子が非常に近い場合の無作為性が高くなりました。wiggle() エクスプレッションには影響しません。
random(maxValOrArray)
返されるタイプ:数値または配列。
引数のタイプ:maxValOrArray は 数値または配列です。
maxValOrArray が数値の場合、 このメソッドは 0 ~ maxValOrArray の範囲の数値を返します。 maxValOrArray が配列の場合、このメソッドは、 maxValOrArray と同じディメンションで、各コンポーネントの値が 0 から maxValOrArray の対応するコンポーネントまでの範囲内にある配列を返します。
random(minValOrArray, maxValOrArray)
返されるタイプ:数値または配列。
引数のタイプ:minValOrArray および maxValOrArray は 数値または配列です。
minValOrArray と maxValOrArray が数値の場合、 このメソッドは minValOrArray ~ maxValOrArray の範囲の数値を返します。 引数が配列の場合、このメソッドは、ディメンションが大きい引数と 同じディメンションで、各コンポーネントの値が minValOrArray の対応するコンポーネントから maxValOrArray の対応する コンポーネントまでの範囲内にある配列を返します。 例えば、エクスプレッション random([100, 200], [300, 400]) は、 最初の値が 100 ~ 300 の範囲、2 番目の値が 200 ~ 400 の範囲にある 配列を返します。2 つの入力配列のディメンションが 一致しない場合、短い配列のより大きいディメンションに ゼロが追加されます。
gaussRandom()
返されるタイプ:Number。
乱数を返します。結果は ベルの形をしたガウス分布になります。結果の 約 90%は 0 ~ 1 の範囲内、残りの 10%は この範囲外にあります。
gaussRandom(maxValOrArray)
返されるタイプ:数値または配列。
引数のタイプ:maxValOrArray は 数値または配列です。
maxValOrArray が数値の場合は、 乱数を返します。結果の約 90%は 0 ~ maxValOrArray の範囲内、 残りの 10%はこの範囲外にあります。maxValOrArray が配列の場合は、 maxValOrArray と同じディメンションの 乱数値の配列を返します。値の 90%は 0 ~ maxValOrArray の範囲内、 残りの 10%はこの範囲外にあります。結果はベルの形をした ガウス分布になります。
gaussRandom(minValOrArray, maxValOrArray)
返されるタイプ:数値または配列。
引数のタイプ:minValOrArray および maxValOrArray は 数値または配列です。
minValOrArray および maxValOrArray が数値の場合、 このメソッドは乱数を返します。結果の約 90%は minValOrArray から maxValOrArray までの範囲内、 残りの 10%はこの範囲外にあります。引数が配列の場合、 このメソッドはディメンションが大きい引数と同じディメンションの 乱数の配列を返します。各コンポーネントで、 結果の約 90%は minValOrArray の対応する コンポーネントから maxValOrArray の対応する コンポーネントまでの範囲内、 残りの 10%はこの範囲外にあります。結果はベルの形をしたガウス分布に なります。
noise(valOrArray)
返されるタイプ:Number。
引数のタイプ:valOrArray は Number または配列 [2 または 3] です。
-1 ~ 1 の範囲の数値を返します。ノイズは実際にはランダムではなく、パーリンノイズに基づいています。つまり、お互いに近い 2 つの入力値の戻り値は、近い値になる傾向があります。このようなノイズは、さほど差がなく一見ランダムなように見えるシーケンスを作成できるため、自然な動作をアニメートしたい場合に便利です。例えば、rotation + 360*noise(time) のように記述します。
Interpolation のメソッド(エクスプレッションのリファレンス)
すべての Interpolation のメソッドでは、引数 t は通常、time または value ですが、他の値にすることもできます。t が time の場合は、時間に対して補間が行われます。t が value の場合、エクスプレッションは新しい値の範囲に 1 つの値の範囲をマッピングします。
linear(t, tMin, tMax, value1, value2)
返されるタイプ:数値または配列。
引数のタイプ:t、tMin および tMax は Number で、value1 および value2 は Number または配列です。
t <= tMin の場合、value1 を返します。t >= tMax の場合、value2 を返します。tMin < t < tMax の場合は、value1 ~ value2 のリニア補間を返します。
例えば、「不透明度」プロパティに次のエクスプレッションを指定すると、不透明度の値が 0 秒から 6 秒の間で 20% から 80% に直線的に変化します。
linear(time, 0, 6, 20, 80)
すべての Interpolation メソッドと同じように、このメソッドは、値の範囲を別の値の範囲に変換するときにも使います。例えば、「不透明度」プロパティに次のエクスプレッションを指定すると、不透明度の値 0 ~ 100% が 20 ~ 80% に変換されます。
linear(value, 0, 100, 20, 80)
linear(t, value1, value2)
返されるタイプ:数値または配列。
引数のタイプ:t は 数値、value1 および value2 は 数値または配列です。
t が 0 ~ 1 の範囲にある場合は、 value1 から value2 までリニア補間した 値を返します。t <=0 の場合は value1 を返します。 t >=1 の場合は value2 を 返します。
ease(t, value1, value2)
返されるタイプ:数値または配列。
引数のタイプ:t は Number で、value1 および value2 は Number または配列です。
引数や処理が linear と似ていますが、開始ポイントと終了ポイントの速度が 0 になるように補間がイーズインおよびイーズアウトされます。このメソッドを使用すると、アニメーションの結果が滑らかになります。
ease(t, tMin, tMax, value1, value2)
返されるタイプ:数値または配列。
引数のタイプ:t、tMin および tMax は Number で、value1 および value2 は Number または配列です。
引数や処理が linear と似ていますが、開始ポイントと終了ポイントの速度が 0 になるように補間がイーズインおよびイーズアウトされます。このメソッドを使用すると、アニメーションの結果が滑らかになります。
easeIn(t, value1, value2)
返されるタイプ:数値または配列。
引数のタイプ:t は 数値、value1 および value2 は 数値または配列です。
ease と同じような値が返されますが、 value1 サイドでのみ正接が 0 になり、 value2 サイドではリニア補完されます。
easeIn(t, tMin, tMax, value1, value2)
返されるタイプ:数値または配列。
引数のタイプ:t、tMin、 tMax は数値、value1 および value2 は数値 または配列です。
ease と同じような値が返されますが、 tMin サイドでのみ正接が 0 になり、 tMax サイドではリニア補完されます。
easeOut(t, value1, value2)
返されるタイプ:数値または配列。
引数のタイプ:t は 数値、value1 および value2 は 数値または配列です。
ease と同じような値が返されますが、 value2 サイドでのみ正接が 0 になり、 value1 サイドではリニア補完されます。
easeOut(t, tMin, tMax, value1, value2)
返されるタイプ:数値または配列。
引数のタイプ:t、tMin、 tMax は数値、value1 および value2 は数値 または配列です。
ease と同じような値が返されますが、 tMax 側でのみ正接が 0 になり、 tMin 側ではリニア補完されます。
Color Conversion のメソッド(エクスプレッションのリファレンス)
rgbToHsl(rgbaArray)
返されるタイプ:配列 [4]。
引数のタイプ:rgbaArray は 配列 [4] です。
RGBA 空間の色を HSLA 空間の色に変換します。 入力は、正規化した赤、緑、青、アルファチャネルの値からなる配列であり、 すべての値を 0.0 ~ 1.0 の範囲で指定します。また、結果として得られる値も、 色相、彩度、明度、アルファチャネルの値からなる配列で、 すべての値が 0.0 ~ 1.0 の範囲になります。例えば、次のようになります。
rgbToHsl.effect("Change Color")("Color To Change")hslToRgb(hslaArray)
返されるタイプ:配列 [4]。
引数のタイプ:hslaArray は 配列 [4] です。
HSLA 空間の色を RGBA 空間の色に変換します。 この変換は、rgbToHsl メソッドによる変換の逆です。
その他の演算メソッド(エクスプレッションのリファレンス)
degreesToRadians(degrees)
返されるタイプ:Number。
引数のタイプ:degrees は 数値です。
度をラジアンに変換します。
radiansToDegrees(radians)
返されるタイプ:Number。
引数のタイプ:radians は 数値です。
ラジアンを度に変換します。
Comp の属性とメソッド(エクスプレッションのリファレンス)
layer(index)
返されるタイプ:Layer、Light、Camera。
引数のタイプ:index は Number です。
レイヤーを番号指定(タイムラインパネルに表示されている順序)で取得します。例えば、「thisComp.layer(3)」のように記述できます。
layer(name)
返されるタイプ:Layer、Light、Camera。
引数のタイプ:name は String です。
名前を指定してレイヤーを取得します。名前はレイヤー名で照合されます。レイヤー名がない場合はソース名で照合されます。レイヤー名が重複している場合は、タイムラインパネルの最初(最も上)のレイヤーが返されます。例:
thisComp.layer("Solid 1")
layer(otherLayer, relIndex)
返されるタイプ:Layer、Light、Camera。
引数のタイプ:otherLayer は Layer オブジェクトで、relIndex は Number です。
otherLayer から relIndex 分上または下のレイヤーを取得します。例えば、thisComp.layer(thisLayer, 1).active は、タイムラインパネルで 1 つ下のレイヤーがアクティブな場合に、true を返します。
marker
返されるタイプ:MarkerProperty。
マーカー番号でコンポジションマーカーにアクセスすることはできません。旧バージョンの After Effects を使って作成したプロジェクトのエクスプレッションにコンポジションマーカー番号が含まれている場合は、番号の代わりに marker.key(name) を使用するように呼び出しを変更する必要があります。コンポジションマーカーの初期設定名は番号であるため、名前を使用するように参照を変換するのは、通常は、これらの番号を引用符で囲むだけで済みます。
marker.key(index)
返されるタイプ:MarkerKey。
引数のタイプ:index は Number です。
指定したインデックスに一致するマーカーの MarkerKey オブジェクトを返します。このインデックスは、マーカー名ではなく、コンポジション時間でのマーカーの順番を表します。例えば、次のエクスプレッションでは、最初のコンポジションマーカーの時刻が返されます。
thisComp.marker.key(1).time
marker.key(name)
返されるタイプ:MarkerKey。
引数のタイプ:name は 文字列です。
指定したマーカー名に一致するマーカーの MarkerKey オブジェクトを返します。name 値は、マーカーダイアログボックスのコメントフィールドに入力されているマーカーの名前 (例:「marker.key("1")」)です。 コンポジションマーカーの初期設定名は 数値です。コンポジションに同じ名前のマーカーが 複数ある場合は、コンポジション時間で 最初のマーカーが返されます。マーカーキーの値は 文字列で、数値ではありません。例えば、次のエクスプレッションでは、 マーカー名が「0」のコンポジションマーカーの時刻が返されます。
thisComp.marker.key("0").timemarker.nearestKey(t)
返されるタイプ:MarkerKey。
引数のタイプ:t は 数値です。
時刻が t に最も近いマーカーを返します。 例えば、次のエクスプレッションでは、時刻 1 秒に最も近いコンポジション マーカーの時刻を返します。
thisComp.marker.nearestKey(1).timeこの エクスプレッションでは、現在の時刻に最も近いコンポジションマーカーの時刻が 返されます。
thisComp.marker.nearestKey(time).timemarker.numKeys
返されるタイプ:Number。
コンポジションに含まれるコンポジションマーカーの 総数が返されます。
numLayers
返されるタイプ:Number。
コンポジション内のレイヤーの 数を返します。
activeCamera
返されるタイプ:Camera。
現在のフレームでコンポジションをレンダリングするカメラからカメラオブジェクトを取得します。このカメラは、必ずしもコンポジションパネルに表示されているイメージを写しているカメラであるとは限りません。
width
返されるタイプ:Number。
コンポジションの幅をピクセル単位で返します。
次のエクスプレッションをレイヤーの位置プロパティに適用して、レイヤーをコンポジションフレームの中央に配置します。
[thisComp.width/2, thisComp.height/2]
height
返されるタイプ:Number。
コンポジションの高さをピクセル単位で 返します。
duration
返されるタイプ:Number。
コンポジションのデュレーション値を秒単位で 返します。
ntscDropFrame
返されるタイプ:Boolean。
タイムコードがドロップフレーム形式の 場合は true を返します(After Effects CS5.5 以降)。
displayStartTime
返されるタイプ:Number。
コンポジションの開始時間を秒単位で 返します。
frameDuration
返されるタイプ:Number。
フレームのデュレーションを秒単位で 返します。
shutterAngle
返されるタイプ:Number。
コンポジションのシャッター角度の値(単位:度)を 返します。
shutterPhase
返されるタイプ:Number。
コンポジションのシャッターフェーズの値(単位:度)を 返します。
bgColor
返されるタイプ:配列 [4]。
コンポジションの背景色を 返します。
pixelAspect
返されるタイプ:Number。
コンポジションのピクセル縦横比を 返します。
name
返されるタイプ:String。
コンポジション名を返します。
コンポジションマーカー保護領域の属性
コンポジションマーカーの保護領域オプションは、protectedRegion コンポジションマーカー属性で読み取ることができます。
フッテージの属性とメソッド(エクスプレッションのリファレンス)
プロジェクトパネルにあるフッテージアイテムをエクスプレッションでオブジェクトとして使用する場合は、グローバルな footage メソッドを使用して「footage("file_name")」のように記述します。フッテージアイテムをソースに持つレイヤーの source 属性を使用して、フッテージオブジェクトにアクセスすることもできます。
width
返されるタイプ:Number。
フッテージアイテムの幅をピクセル単位で 返します。
height
返されるタイプ:Number。
フッテージアイテムの高さをピクセル単位で 返します。
duration
返されるタイプ:Number。
フッテージアイテムのデュレーションを秒単位で 返します。
frameDuration
返されるタイプ:Number。
フッテージアイテムのフレームのデュレーションを 秒単位で返します。
ntscDropFrame
返されるタイプ:Boolean。
タイムコードがドロップフレーム形式の 場合は true を返します(After Effects CS5.5 以降)。
pixelAspect
返されるタイプ:Number。
フッテージアイテムのピクセル縦横比を 返します。
name
返されるタイプ:String。
プロジェクトパネルに表示されるフッテージアイテムの名前を返します。
Layer サブオブジェクトの属性とメソッド(エクスプレッションのリファレンス)
source
返されるタイプ:Comp または Footage。
レイヤーのソース Comp または ソースフッテージオブジェクトを返します。初期設定の時間は、ソースの時間に 調整されます。例えば、「source.layer(1).position」のように記述できます。
sourceTime(t = time)
返されるタイプ:Number。
時間 t に対応するレイヤーソースを返します(After Effects CS5.5 以降)。
sourceRectAtTime(t = time, includeExtents = false)
返されるタイプ:4 つの属性([top, left, width, height])から成る JavaScript オブジェクト。エクステントは、必要に応じてレイヤーの境界線を太くするシェイプレイヤー、およびパラグラフボックスの境界線を返すパラグラフテキストレイヤー (After Effect 15.1以降) に限って適用されます。例:myTextLayer.sourceRectAtTime().width。
effect(name)
返されるタイプ:Effect。
引数のタイプ:name は文字列です。
After Effect では、エフェクトコントロールパネルから、名前でエフェクトを検索します。name には、初期設定名またはユーザー定義名を指定できます。複数のエフェクトの名前が同じである場合、エフェクトコントロールパネルで一番上にあるエフェクトが使用されます。例:
effect("Fast Blur")("Blurriness")
effect(index)
返されるタイプ:Effect。
引数のタイプ:index は Number です。
After Effects は、エフェクトコントロールパネルからインデックスでエフェクトを検索します。検索は、一番上の 1 から順に行われます。
mask(name)
返されるタイプ:Mask。
引数のタイプ:name は文字列です。
name には、初期設定名またはユーザー定義名を指定できます。複数のマスクの名前が同じである場合、最初(一番上)にあるマスクが使用されます。例:
mask("Mask 1")
mask(index)
返されるタイプ:Mask。
引数のタイプ:index は Number です。
After Effects は、タイムラインパネルからインデックスでマスクを検索します。検索は、一番上の1 から順に行われます。
Layer General の属性とメソッド(エクスプレッションのリファレンス)
width
返されるタイプ:Number。
レイヤーの幅(単位:ピクセル)を 返します。source.width と同じです。
height
返されるタイプ:Number。
レイヤーの高さ(単位:ピクセル)を 返します。source.height と同じです。
index
返されるタイプ:Number。
コンポジション内のレイヤーの インデックス番号を返します。
parent
返されるタイプ:Layer、Light、Camera。
レイヤーに親レイヤーがある場合は、 その親レイヤーオブジェクトを返します。例えば、「position[0] + parent.width」のように記述できます。
hasParent
返されるタイプ:Boolean。
レイヤーに親がある場合は true、 ない場合は false を返します。
hasParent 属性は、 レイヤーに親レイヤーがあるかどうかの判断に使用します。この属性は、 レイヤーに現在、親レイヤーがない場合にも使用できます。例えば、次の エクスプレッションは、親の位置に基づいてウィグルを適用する レイヤーを示しています。レイヤーに親がない場合は、 そのレイヤー自体の位置に基づいてウィグルを行います。レイヤーに親レイヤーが指定されると、 それに応じてレイヤーの動作が変わります。
idx = index; if (hasParent) { idx = parent.index; } thisComp.layer(idx).position.wiggle(5,20)inPoint
返されるタイプ:Number。
レイヤーのインポイントを秒単位で返します。
通常は、outPoint の値が inPoint の値よりも大きくなりますが、レイヤーの時間の流れを逆にした場合は、inPoint の値が outPoint の値よりも大きくなります。同様に、startTime の値が inPoint の値よりも大きくなることもあります。
outPoint
返されるタイプ:Number。
レイヤーのアウトポイント(単位:秒)を 返します。
startTime
返されるタイプ:Number。
レイヤーの開始時間(単位:秒)を 返します。
hasVideo
返されるタイプ:Boolean。
レイヤーにビデオがある場合は true、 ビデオがない場合は false を返します。
hasAudio
返されるタイプ:Boolean。
レイヤーにオーディオがある場合は true、 オーディオがない場合は false を返します。
active
返されるタイプ:Boolean。
レイヤーのビデオスイッチ がオンになっていて、現在の時間が、レイヤーのインポイントからアウトポイントの範囲にある場合は true、それ以外の場合は false を返します。
enabled
返されるタイプ:Boolean。
レイヤーのビデオスイッチ がオンになっている場合は true、それ以外の場合は false を返します。
audioActive
戻り値のタイプ:Boolean。
レイヤーのオーディオスイッチ がオンになっていて、現在の時間がレイヤーのインポイントからアウトポイントの範囲にある場合は true、それ以外の場合は false を返します。
sampleImage(point, radius = [.5, .5], postEffect=true, t=time)
返されるタイプ:配列 [4]。
引数のタイプ:point は配列 [2]、radius は配列 [2]、postEffect は Boolean、t は Number です。
レイヤーのカラーとアルファチャンネル値を抽出し、指定した範囲内のアルファがゼロでないピクセルの平均値を配列 [赤, 緑, 青, アルファ] で返します。postEffect が true の場合はそのレイヤーのマスクとエフェクトのレンダリング後、false の場合はマスクとエフェクトのレンダリング前のレイヤーから値が抽出されます。入力値 point は、レイヤー空間内の値です。レイヤーの左上隅のピクセルの中心が [0,0] です。入力値 radius は、値を抽出する中心点から、抽出範囲を示す長方形の各辺までの水平方向と垂直方向の距離を表します。初期設定値では、1 ピクセルのみ抽出されます。
postEffect パラメーターは、調整レイヤーによる間接的に適用されたエフェクトではなく、レイヤーに直接適用されたエフェクトを参照します。
エクスプレッションで sampleImage を使用しても、マルチプロセス機能が無効にならなくなりました。
次の例では、レイヤーの左上隅から右と下にそれぞれ 100 ピクセルの位置にあるポイントを中心とし、幅が 4 ピクセル、高さが 3 ピクセルの長方形の範囲から値が抽出されます。
thisComp.layer(1).sampleImage([100, 100], [2, 1.5])
レイヤープロパティの属性とメソッド(エクスプレッションのリファレンス)
レイヤーにマスク、エフェクト、ペイント、またはテキストを追加した場合は、タイムラインパネルに新しいプロパティが追加されます。ここにリストアップするにはプロパティの数が多すぎるので、プロパティを参照するための構文を学習する場合はエクスプレッションでピックウイップを使用してください。
anchorPoint
戻り値のタイプ:Property [2 または 3]。
レイヤーのアンカー ポイント値をレイヤーの座標系(レイヤー 空間)で返します。
position
返されるタイプ:Property [2 または 3]。
レイヤーに親がない場合は、レイヤーの位置の値をワールド空間で返します。レイヤーに親がある場合は、レイヤーの位置の値を、親レイヤーの座標系(親レイヤーのレイヤー空間)で返します。
scale
返されるタイプ:Property [2 または 3]。
レイヤーのスケール値(単位:パーセント)を 返します。
rotation
返されるタイプ:プロパティ。
レイヤーの回転値(単位:度)を 返します。3D レイヤーの場合は、Z 回転値(単位:度)を 返します。
opacity
返されるタイプ:プロパティ。
レイヤーの不透明度の値(単位:パーセント)を 返します。
audioLevels
戻り値のタイプ:Property [2]。
レイヤーのオーディオレベルプロパティの値(単位:デシベル)を返します。これは 2D 値です。最初の値はオーディオの左チャンネルの値、2 番目の値は右チャンネルの値です。この値はソースマテリアルのオーディオトラックの振幅ではありません。この値は、オーディオレベルプロパティの値で、キーフレームの影響を受ける場合があります。
timeRemap
返されるタイプ:プロパティ。
タイムリマップが使用可能な場合に、タイムリマッププロパティの値(単位:秒)を返します。
marker.key(index)
返されるタイプ:MarkerKey。
引数のタイプ:index は 数値です。
指定したインデックスに一致するレイヤーマーカーの MarkerKey オブジェクトを返します。
marker.key(name)
返されるタイプ:MarkerKey。
引数のタイプ:name は 文字列です。
指定した名前に一致するレイヤーマーカーの MarkerKey オブジェクトを返します。name 値は、マーカー ダイアログボックスのコメントフィールドに入力されている マーカーの名前(例:「marker.key("ch1")」)です。レイヤーに 同じ名前のマーカーが複数ある場合は、 レイヤー時間で最初のマーカーが返されます。マーカーキーの値は 文字列で、数値ではありません。
プロパティに 次のエクスプレッションを適用すると、名前で識別された 2 つのマーカーの間が 0 から 100 の範囲 になるようにプロパティの値が線形補間されます。
m1 = marker.key("Start").time; m2 = marker.key("End").time; linear(time, m1, m2, 0, 100);marker.nearestKey(t)
返されるタイプ:MarkerKey。
引数のタイプ:t は 数値です。
時刻が t に最も近いレイヤーマーカーを 返します。例えば、次のエクスプレッションでは、1 秒の時刻に 最も近いレイヤーマーカーの時刻を返します。
marker.nearestKey(1).timeこの エクスプレッションでは、現在の時刻に最も近いレイヤーマーカーの時刻が 返されます。
marker.nearestKey(time).timemarker.numKeys
返されるタイプ:Number。
レイヤー上のマーカーの総数 が返されます。
name
返されるタイプ:String。
レイヤー名を返します。
Layer 3D の属性とメソッド(エクスプレッションのリファレンス)
orientation
戻り値のタイプ:Property [3]。
3D 方向の値を 3D レイヤーの度数で 返します。
rotationX
返されるタイプ:プロパティ。
X 回転の値を 3D レイヤーの度数で 返します。
rotationY
返されるタイプ:プロパティ。
Y 回転の値を 3D レイヤーの度数で 返します。
rotationZ
返されるタイプ:プロパティ。
Z 回転の値を 3D レイヤーの度数で 返します。
lightTransmission
返されるタイプ:プロパティ。
3D レイヤーのライト透過プロパティの値を返します。
castsShadows
返されるタイプ:プロパティ。
レイヤーがシャドウを落とす場合は 値 1.0 を返します。
acceptsShadows
返されるタイプ:プロパティ。
レイヤーがシャドウを受け入れる場合は 値 1.0 を返します。
acceptsLights
返されるタイプ:プロパティ。
レイヤーがライトを受け入れる場合は 値 1.0 を返します。
ambient
返されるタイプ:プロパティ。
アンビエントコンポーネントの値(単位:パーセント)を 返します。
diffuse
返されるタイプ:プロパティ。
拡散コンポーネントの値(単位:パーセント)を 返します。
specular
返されるタイプ:プロパティ。
スペキュラコンポーネントの値(単位:パーセント)を 返します。
shininess
返されるタイプ:プロパティ。
光沢コンポーネントの値(単位:パーセント)を 返します。
metal
返されるタイプ:プロパティ。
メタルコンポーネントの値(単位:パーセント)を 返します。
Layer Space Transforms のメソッド(エクスプレッションのリファレンス)
Layer Space Transforms のメソッドは、レイヤーの空間からワールドの空間にトランスフォームするなど、ある空間の値を別の空間の値にトランスフォームする場合に使用します。「from」メソッドは、指定した空間(コンポジションまたはワールド)からレイヤー空間に値をトランスフォームします。「to」メソッドは、レイヤー空間から指定した空間(コンポジションまたはワールド)に値をトランスフォームします。各トランスフォームメソッドでは、トランスフォームの計算時刻を決定するオプション引数を指定できます。ただし、ほとんどの場合は、現在時刻(デフォルト)を使用できます。
Vec トランスフォームメソッドは、2 つの位置の値の違いなどの方向ベクトルをトランスフォームする場合に使用します。位置などのポイントをトランスフォームする場合は、通常の(Vec ではない)トランスフォームメソッドを使用します。2D レイヤーでは、コンポジション空間とワールド空間は同じです。しかし、3D レイヤーでは、コンポジション空間はアクティブカメラに依存し、ワールド空間はカメラから独立しています。
toComp(point, t=time)
戻り値のタイプ:配列 [2 または 3]。
引数のタイプ:point は 配列 [2 または 3]、t は数字です。
レイヤー空間から コンポジション空間へポイントをトランスフォームします。
fromComp(point, t=time)
返されるタイプ:配列 [2 または 3]。
引数のタイプ:point は 配列 [2 または 3] で、t は数字です。
コンポジション空間から レイヤー空間へポイントをトランスフォームします。3D レイヤーの結果のポイントは、 レイヤー空間にある場合でもゼロ以外の値になる 可能性があります。例えば、「fromComp(thisComp.layer(2).position)」のように記述できます。
toWorld(point, t=time)
返されるタイプ:配列 [2 または 3]。
引数のタイプ:point は Array [2 または 3] で、t は Number です。
レイヤー空間からビューに依存しないワールド空間へポイントをトランスフォームします。例:
toWorld.effect("Bulge")("Bulge Center")
fromWorld(point, t=time)
返されるタイプ:配列 [2 または 3]。
引数のタイプ:point は配列 [2 または 3] で、t は Number です。
ワールド空間からレイヤー空間へポイントをトランスフォームします。例えば、「fromWorld(thisComp.layer(2).position)」のように記述できます。
このメソッドの使用例については、エクスプレッションの例:2 つのレイヤー間のバルジを作成するを参照してください。
toCompVec(vec, t=time)
返されるタイプ:配列 [2 または 3]。
引数のタイプ:vec は 配列 [2 または 3]、t は数字です。
レイヤー空間からワールド空間へベクトルを トランスフォームします。例えば、「toCompVec([1,0])」のように記述できます。
fromCompVec(vec, t=time)
返されるタイプ:配列 [2 または 3]。
引数のタイプ:vec は 配列 [2 または 3]、t は数字です。
コンポジション空間から レイヤー空間へベクトルをトランスフォームします。例えば、2D レイヤーの場合、次のように指定します。
dir=sub(position, thisComp.layer(2).position); fromCompVec(dir)toWorldVec(vec, t=time)
返されるタイプ:配列 [2 または 3]。
引数のタイプ:vec は配列 [2 または 3] で、t は Number です。
レイヤー空間からワールド空間へベクトルをトランスフォームします。例:p1 = effect("Eye Bulge 1")("Bulge Center"); p2 = effect("Eye Bulge 2")("Bulge Center"); toWorld(sub(p1, p2))
fromWorldVec(vec, t=time)
返されるタイプ:配列 [2 または 3]。
引数のタイプ:vec は 配列 [2 または 3]、t は数字です。
ワールド空間から レイヤー空間へベクトルをトランスフォームします。例えば、「fromWorld(thisComp.layer(2).position)」のように記述できます。
fromCompToSurface(point, t=time)
返されるタイプ:配列 [2]。
引数のタイプ:point は配列 [2 または 3] で、t は Number です。
コンポジション空間上のポイントをレイヤーの表面上のポイント(Z 値ゼロ)へ、アクティブカメラから写したときに見える位置に投影します。このメソッドは、エフェクトコントロールポイントを設定するときに便利です。この要素は 3D レイヤーにのみ使用します。
Camera の属性とメソッド(エクスプレッションのリファレンス)
Camera オブジェクトには Layer オブジェクトと同じ属性とメソッドがあります。ただし、source、effect、mask、width、height、anchorPoint、scale、opacity、audioLevels、timeRemap の各プロパティとすべてのマテリアルプロパティを除きます。
pointOfInterest
戻り値のタイプ:Property [3]。
カメラの目標点の値を ワールド空間で返します。
zoom
返されるタイプ:プロパティ。
カメラのズーム値をピクセル単位で返します。
レイヤーの z 位置(深度)またはカメラのズーム値を変更した場合に、フレーム内のレイヤーの相対サイズを維持するために使用する、レイヤーのスケールプロパティのエクスプレッションを次に示します。
cam = thisComp.activeCamera; distance = length(sub(position, cam.position)); scale * distance / cam.zoom;
depthOfField
返されるタイプ:プロパティ。
カメラの被写界深度プロパティがオンの場合は 1、被写界深度プロパティがオフの場合は 0 を返します。
focusDistance
返されるタイプ:プロパティ。
カメラのフォーカス距離の値(単位:ピクセル)を 返します。
aperture
返されるタイプ:プロパティ。
カメラの絞り値(単位:ピクセル)を 返します。
blurLevel
返されるタイプ:プロパティ。
カメラのブラーレベルの値(単位:パーセント)を 返します。
active
戻り値のタイプ:Boolean。
カメラが現時点でコンポジションのアクティブなカメラである場合、つまり、カメラレイヤーの ビデオ スイッチ がオンで、現在の時間がカメラレイヤーのインポイントからアウトポイントの範囲にあり、カメラレイヤーが タイムライン パネル内で最初(一番上)にある場合に、true を返します。それ以外の場合は false を返します。
Light の属性とメソッド(エクスプレッションのリファレンス)
Light オブジェクトには Layer オブジェクトと同じ属性とメソッドがあります。ただし、source、effect、mask、width、height、anchorPoint、scale、opacity、audioLevels、timeRemap の各プロパティとすべてのマテリアルプロパティを除きます。
pointOfInterest
戻り値のタイプ:Property [3]。
ワールド空間のライトの 目標点の値を返します。
intensity
返されるタイプ:プロパティ。
ライトの強度の値(単位:パーセント)を 返します。
color
戻り値のタイプ:Property [4]。
ライトのカラー値を 返します。
coneAngle
返されるタイプ:プロパティ。
ライトの円錐角(単位:度)を 返します。
coneFeather
返されるタイプ:プロパティ。
ライトの円錐ぼかし値(単位:パーセント)を 返します。
shadowDarkness
返されるタイプ:プロパティ。
ライトのシャドウの暗さ値(単位:パーセント)を 返します。
shadowDiffusion
返されるタイプ:プロパティ。
ライトのシャドウの拡散の値(単位:ピクセル)を 返します。
Effect の属性とメソッド(エクスプレッションのリファレンス)
active
戻り値のタイプ:Boolean。
エフェクトがオンになっている場合に(エフェクト スイッチ が選択されている場合に)、true を返します。
param(name)
返されるタイプ:プロパティ。
引数のタイプ:name は 文字列です。
エフェクト内のプロパティを返します。エフェクトコントロール ポイントは常にレイヤー空間に含まれます。例:
effect("Bulge").param("Bulge Height")param(index)
返されるタイプ:プロパティ。
引数のタイプ:index は 数値です。
エフェクト内のプロパティを返します。エフェクトコントロール ポイントは常にレイヤー空間に含まれます。例えば、「effect("Bulge").param(4)」のように記述すると、 バルジの高さプロパティが返されます。
Mask の属性とメソッド(エクスプレッションのリファレンス)
マスクパスプロパティは、他のパスプロパティ(シェイプレイヤーやブラシストロークなどのパス)とリンクさせることができますが、このプロパティの数値をエクスプレッションで直接操作することはできません。
MaskOpacity
返されるタイプ:プロパティ。
マスクの不透明度の値(単位:パーセント)を 返します。
MaskFeather
返されるタイプ:プロパティ。
マスクのぼかしの値(単位:ピクセルを 返します。
maskExpansion
返されるタイプ:プロパティ。
マスクの拡張の値(単位:ピクセル)を 返します。
invert
返されるタイプ:Boolean。
マスクが反転されている場合は true 、 そうでない場合は false を返します。
value
返されるタイプ:Number、Array、String。
現在の時刻における プロパティの値を返します。
valueAtTime(t)
返されるタイプ:数値または配列。
引数のタイプ:t は Numberです。
秒単位で指定した時間でのプロパティの値を返します。
例えば、各フレームのプロパティ値を一連の 4 つの値からランダムに選択するには、4 つの値をそれぞれ 0、1、2 および 3 秒のキーフレームとして設定し、次のエクスプレッションをプロパティに適用します。
valueAtTime(random(4))
velocity
返されるタイプ:数値または配列。
現在の時間での時間速度の値を返します。位置などの空間プロパティの場合は、接線ベクトルの値を返します。その結果は、プロパティと同じ次元になります。
velocityAtTime(t)
返されるタイプ:数値または配列。
引数のタイプ:t は 数値です。
指定された時間での時間速度の値を 返します。
speed
返されるタイプ:Number。
デフォルトの時間でプロパティが 変化しているときの速度に等しい 1D の正の速度値を返します。この要素は空間プロパティでのみ使用できます。
speedAtTime(t)
返されるタイプ:Number。
引数のタイプ:t は 数値です。
指定された時間での空間速度の値を 返します。
wiggle(freq, amp, octaves=1, amp_mult=.5, t=time)
返されるタイプ:数値または配列。
引数のタイプ:freq、amp、octaves、amp_mult および t は Number です。
プロパティ値を不規則に変動(ウィグリング)させます。
freq 値は、1 秒あたりの変動の回数です。
amp 値は適用先のプロパティを単位とする振幅です。
octaves は加算するノイズのオクターブの数を表します。この値は、変動の細かさを制御します。この値に初期設定値の 1 より大きい値を設定すると高い周波数が含まれ、小さい値を設定すると変動に振幅ハーモニックが含まれます。
amp_mult は、各オクターブの amp の倍数です。この値は、ハーモニックのドロップオフの速度を制御します。初期設定値は 0.5 です。値を 1 に近づけるとハーモニックは基本周波数として同じ振幅で追加され、値を 0 に近づけるとディテールが荒い状態で追加されます。
t は基本となる開始時刻です。初期設定値は現在の時刻です。別の時刻にサンプリングしたプロパティ値のウィグルを出力する場合は、このパラメーターを使用します。
例:position.wiggle(5, 20, 3, .5) を実行すると、平均サイズが 20 ピクセルのウィグルが 1 秒間に 5 つ作成されます。メインウィグルの他に、サイズが 10 ピクセルと 5 ピクセルの 2 つのレベルの詳細ウィグルが 1 秒間にそれぞれ 10 回と 20 回発生します。
次の例では、スケール などの 2 次元のプロパティで、両方の次元が同じだけ変動(ウィグル)します。
v = wiggle(5, 10); [v[0], v[0]]
次の例では、2 次元のプロパティで、Y 軸方向に沿ってのみ変動(ウィグル)します。
freq = 3; amp = 50; w = wiggle(freq,amp); [value[0],w[1]];
temporalWiggle(freq, amp, octaves=1, amp_mult=.5, t=time)
返されるタイプ:数値または配列。
引数のタイプ:freq、amp、octaves、amp_mult、 および t は Number です。
ウィグリングする時間で プロパティをサンプリングします。freq 値は 1 秒あたりの変動の周波数、 amp は適用先のプロパティを単位とする振幅、 octaves は加算するノイズのオクターブの数、 amp_mult は各オクターブについて amp が乗算される数、 t は基本となる開始時間です。この関数はサンプリングの時間だけを変更し、 値は変更しないので、この関数に意味を持たせるには、 サンプリングの対象となるプロパティがアニメートされている必要があります。例えば、「scale.temporalWiggle(5, .2)」のように記述できます。
smooth(width=.2, samples=5, t=time)
返されるタイプ:数値または配列。
引数のタイプ:width、samples および t は数値です。
特定の時間範囲内でプロパティの値をならし、 短時間の大きな偏差を小さくして、 偏差を均一に分散させます。このスムージングは、 指定された時間でのプロパティの値にボックスフィルターを適用することによって 実行されます。width 値は、 フィルターが平均化される時間の範囲(秒単位)です。samples 値には、 時間をいくつに等分するかを指定します。大きい数を指定すると 滑らかになりますが、処理速度は遅くなります。 一般的には、samples を奇数にして、 平均に現在の時間の値が含まれるようにします。 例えば、「position.smooth(.1, 5)」のように記述できます。
loopIn(type="cycle", numKeyframes=0)
返されるタイプ:数値または配列。
レイヤーの先頭キーフレームからレイヤーのアウトポイントに向かって数えた時間のセグメントがループします。ループはレイヤーのインポイントから再生します。numKeyframes に、ループするセグメントを指定します。レイヤー内の先頭のキーフレームから numKeyframes+1 番目のキーフレームまでのセグメントがループします。例えば、「loopIn("cycle", 3)」と指定すると、先頭のキーフレームから 4 番目のキーフレームまでのセグメントがループします。初期設定値の 0 では、すべてのキーフレームがループします。
キーフレームループメソッドを使用して、一連のキーフレームを繰り返すことができます。これらのメソッドは、ほとんどのプロパティで使用できます。ただし、ソーステキストプロパティ、パスシェイププロパティ、レベルエフェクトのヒストグラムプロパティなど、タイムラインパネルで単純な数値で表現できないプロパティでは使用できません。キーフレームまたはデュレーションの値が大きすぎる場合は、有効な最大値に縮小されます。値が小さすぎる場合は、一定のループとなります
ループの種類 |
結果 |
---|---|
cycle |
(初期設定)指定したセグメントを繰り返します。 |
pingpong |
指定したセグメントの先頭から末尾へ、次に末尾から先頭へと、交互に繰り返します。 |
offset |
指定したセグメントを繰り返しますが、セグメントの最初と最後のプロパティの値の差にセグメントがループした回数を掛けた値だけ、各サイクルをオフセットします。 |
continue |
指定したセグメントを繰り返さずに、最初または最後のキーフレームの速度に基づき、プロパティのアニメートを継続します。例えば、レイヤーのスケールプロパティの最後のキーフレームが 100%の場合は、そのレイヤーはアウトポイントへ向かって 100%でスケールされ、ループが直接アウトポイントへ戻ることはありません。この種類のループでは、keyframes または duration 引数は使用できません。 |
loopOut(type="cycle", numKeyframes=0)
返されるタイプ:数値または配列。
レイヤーの最後のキーフレームからレイヤーのインポイントに向かって数えた時間のセグメントがループします。ループはレイヤーのアウトポイントまで再生します。指定されたキーフレームの数に応じてループするセグメントが決定されます。numKeyframe には、ループさせるキーフレームセグメントの数を設定します。指定範囲は最後のキーフレームから逆に数えます。例えば、「loopOut("cycle", 1)」と指定すると、最後のキーフレームと最後から 2 番目のキーフレームで区切られたセグメントがループします。初期設定値の 0 では、すべてのキーフレームがループします。詳しくは、loopIn の説明を参照してください。
loopInDuration(type="cycle", duration=0)
返されるタイプ:数値または配列。
レイヤーの先頭キーフレームからレイヤーのアウトポイントに向かって数えた時間のセグメントがループします。ループはレイヤーのインポイントから再生します。指定されたデュレーションに応じてループするセグメントが決定されます。duration 値は、ループさせるセグメント内のコンポジションの数を設定します。指定範囲は先頭キーフレームから数えます。例えば、「loopInDuration("cycle", 1)」と指定すると、アニメーション全体の最初の 1 秒がループします。初期設定値の 0 は、ループさせるセグメントがレイヤーのアウトポイントから始まることを意味します。詳しくは、loopIn の説明を参照してください。
loopOutDuration(type="cycle", duration=0)
返されるタイプ:数値または配列。
レイヤーの最後のキーフレームからレイヤーのインポイントに向かって数えた時間のセグメントがループします。ループはレイヤーのアウトポイントまで再生します。指定されたデュレーションに応じてループするセグメントが決定されます。duration 値は、ループさせるセグメント内のコンポジションの数を設定します。指定範囲は最後のキーフレームから逆に数えます。例えば、「loopOutDuration("cycle", 1)」と指定すると、アニメーション全体の最初の 1 秒をループします。初期設定値の 0 は、ループさせるセグメントがレイヤーのインポイントから始まることを意味します。詳しくは、loopIn の説明を参照してください。
key(index)
返されるタイプ:Key または MarkerKey。
引数のタイプ:index は 数値です。
指定した番号に一致する Key または MarkerKey オブジェクトを返します。 例えば、「key(1)」は、最初のキーフレームを返します。
key(markerName)
返されるタイプ:MarkerKey。
引数のタイプ:markerName は 文字列です。
指定した名前に一致する MarkerKey オブジェクトを返します。この要素は マーカープロパティに対してのみ使用できます。
nearestKey(t)
返されるタイプ:Key または MarkerKey。
指定した時刻に最も近い Key または MarkerKey オブジェクトを返します。
numKeys
返されるタイプ:Number。
プロパティのキーフレーム数を返します。マーカープロパティのマーカー数を返します。
「次元に分割」コマンドを使用して位置プロパティの次元を個別のコンポーネントに分割した場合、キーフレーム数が変わるため、このメソッドで返される値が変わります。
propertyGroup(countUp = 1)
返されるタイプ:Group。
エクスプレッションが記述されるプロパティと関連するプロパティグループを返します。例えば、ブラシストロークの回転」プロパティに propertyGroup(1) エクスプレッションを追加すると、エクスプレッションは回転プロパティが含まれているトランスフォームプロパティグループをターゲットにします。propertyGroup(2) を追加すると、エクスプレッションはブラシプロパティグループをターゲットにします。このメソッドにより、プロパティ階層で、名前に依存しない関係が確立できます。このメソッドは、エクスプレッションが含まれたプロパティを複製するときに特に役立ちます。
propertyGroup の numProperties メソッドは、プロパティグループ内のプロパティ数を返します。
この例では、エクスプレッションが記述されているプロパティが含まれるグループ内のプロパティ数が返されます。
thisProperty.propertyGroup(1).numProperties
propertyIndex
返されるタイプ:Number。
マスク、エフェクト、テキストアニメーター、 セレクター、シェイプ、トラッカー、トラックポイント内のプロパティグループなど、同じプロパティ グループに含まれるその他のプロパティに関連のある プロパティのインデックスを返します。
name
返されるタイプ:String。
プロパティまたはプロパティグループの名前を 返します。
プロジェクトプロパティ(エクスプレッションのリファレンス)
エクスプレッションメソッド:
- thisProject オブジェクト thisProject - エクスプレッションを含むプロジェクトを表します。
タイプ:
Project オブジェクト、読み取り専用
- プロジェクトの fullPath 属性 thisProject.fullPath - プラットフォーム固有の絶対ファイルパス(プロジェクトファイル名を含む)。プロジェクトが保存されていない場合は、空の文字列を返します。
タイプ:文字列、読み取り専用。
- プロジェクトの bitsPerChannel 属性 thisProject.bitsPerChannel - プロジェクト設定/カラーマネジメントで設定されたプロジェクトの色深度(bit/チャンネル(bpc))。8、16 または 32 のいずれか。スクリプトプロジェクトの app.project.bitsPerChannel 属性と同等。
タイプ 数値、読み取り専用。
- プロジェクトの linearBlending 属性 thisProject.linearBlending - プロジェクト設定/カラーマネジメントの「ガンマ値 1.0 でカラーをブレンド」オプションの状態。スクリプトプロジェクトの app.project.linearBlending 属性と同等。
タイプ:Boolean、読み取り専用。
主な属性とメソッド(エクスプレッションのリファレンス)
Key オブジェクトにアクセスすると、time、index、および value プロパティを取得できます。例えば、position.key(3).value というエクスプレッションでは、3 番目の位置キーフレームの値が返されます。
キーフレームを適用した不透明度プロパティに次のようなエクスプレッションを指定すると、キーフレームの値は使用されず、キーフレームの時間上の配置のみに基づいて、フラッシュが起きる場所が決まります。 d = Math.abs(time - nearestKey(time).time); easeOut(d, 0, .1, 100, 0)
d = Math.abs(time - nearestKey(time).time); easeOut(d, 0, .1, 100, 0)
value
返されるタイプ:数値または配列。
キーフレームの値を 返します。
time
返されるタイプ:Number。
キーフレームの時間を返します。
index
返されるタイプ:Number。
キーフレームのインデックスを返します。
MarkerKey の属性(エクスプレッションのリファレンス)
コンポジションマーカーとレイヤーマーカーの値に、同じメソッドを使用してアクセスできます。レイヤーマーカーの場合は thisLayer.marker オブジェクトを、コンポジションマーカーの場合は thisComp.marker オブジェクトをそれぞれ使用します。
マーカーは Key オブジェクトの一種であるため、エクスプレッションを使用してマーカーにアクセスするには nearestKey(time) などのメソッドを使用します。また、マーカーには time 属性と index 属性があります。index 属性は、マーカーの番号(名前)ではなく、時間スケール内でのマーカーの順番を表すキーフレームのインデックス番号です。
エクスプレッションを使用して、コンポジションマーカーやレイヤーマーカーの各ダイアログボックスで設定可能なマーカーのすべての値にアクセスできます。テキストレイヤーのソーステキストプロパティに次のエクスプレッションを指定すると、現在の時刻に最も近いレイヤーマーカーの時刻、デュレーション、インデックス、コメント(名前)、チャプター、URL、フレームターゲット、キューポイント名と、そのマーカーがイベントキューポイント用であるかどうかが表示されます。
m = thisLayer.marker.nearestKey(time); s = "time:" + timeToCurrentFormat(m.time) + "\r" + "duration: " + m.duration + "\r" + "key index: " + m.index + "\r" + "comment:" + m.comment + "\r" + "chapter:" + m.chapter + "\r" + "URL:" + m.url + "\r" + "frame target: " + m.frameTarget + "\r" + "cue point name: " + m.cuePointName + "\r" + "Event cue point?" + m.eventCuePoint + "\r"; for (param in m.parameters){ s += "parameter: " + param + " value: " + m.parameters[param] + "\r"; } s
フッテージアイテム内の XMP メタデータは、そのアイテムに基づいてレイヤーのレイヤーマーカーに変換できるため、エクスプレッションは XMP メタデータと連動できます。詳しくは、After Effects の XMP メタデータを参照してください。
duration
返されるタイプ:Number。
マーカーのデュレーション(秒単位)。
comment
返されるタイプ:String。
マーカーダイアログボックスの「コメント」 フィールドの値です。
chapter
返されるタイプ:String。
マーカーダイアログボックスの「チャプター」 フィールドの値です。
url
返されるタイプ:String。
マーカーダイアログボックスの「URL」 フィールドの値です。
frameTarget
返されるタイプ:String。
マーカーダイアログボックスの「フレームターゲット」 フィールドの値です。
eventCuePoint
返されるタイプ:Boolean。
マーカーダイアログボックスに設定されているキューポイントの種類です。 イベントの場合は true が、ナビゲーションの場合は false が返されます。
cuePointName
返されるタイプ:String。
マーカーダイアログボックスの「キューポイント名」 フィールドの値です。
parameters
返されるタイプ:パラメーターに関連する String 値の配列。
マーカーダイアログボックスの「パラメーター名」と「パラメーター値」フィールドの値です。
例えば、「background color」というパラメーターの値を直近のマーカーから取得するには、次のエクスプレッションを使用します。
thisComp.marker.nearestKey(time).parameters["background color"]
MarkerValue.protectedRegion(エクスプレッションのリファレンス)
エクスプレッションのメソッド:
thisComp.marker.key(index).protectedRegion
説明:
true の場合、コンポジションマーカーは保護領域として動作します。
タイプ:
Boolean。読み取り専用。
エクスプレッションによるシェイプ、マスクおよびブラシストロークのパスポイントへのアクセス(エクスプレッションのリファレンス)
エクスプレッションを使用して、次の要素のパスポイントや頂点の X および Y 座標を読み取ったり書き込んだりすることができます。
- レイヤーマスク
- ベジェシェイプ
- ペイントエフェクトおよびロトブラシとエッジを調整エフェクトのブラシストローク
エクスプレッションのメソッド:
- パスの points() メソッド:{pathProperty}.points(t = time) パス上のすべてのポイントの X、Y 座標を取得します。レイヤーマスクのパスポイントの座標は、レイヤーの左上隅の原点を基準とした相対座標で表されます。ベジェシェイプのパスポイントの座標は、パスのシェイプグループのアンカーポイントを基準にしています(例えば、変形:シェイプ 1 > アンカーポイント)。ブラシストロークのパスポイントの座標はストロークの始点を基準とした相対座標で表され、最初のポイントは [0,0] になります。必要に応じてパスをサンプリングする時間も指定できます。パスを複製するとき、このメソッドを createPath() メソッドに points パラメーターとして渡すことができます。
パラメーター:
t |
Number(オプション)。パスをサンプリングするコンポジション時間(秒単位)を指定します。初期設定値は time(現在の時刻)です。 |
戻り値:
小数点第 4 位未満を四捨五入した数値ペアの配列の Array。
- パスの inTangents() メソッド:{pathProperty}.inTangents(t = time) パス上のすべてのポイントについて、入ってくる接線ハンドルの X、Y 座標を取得します。接線の座標値は親ポイントの座標を基準としたオフセットで表されます。値が [0,0] の場合、入ってくる接線で湾曲は発生しません。このメソッドを createPath() メソッドに inTangents パラメーターとして渡すと、パスを複製できます。必要に応じてパスをサンプリングする時間も指定できます。
パラメーター:
t |
Number(オプション)。パスをサンプリングするコンポジション時間(秒単位)を指定します。初期設定値は time(現在の時刻)です。 |
戻り値:
小数点第 4 位未満を四捨五入した数値ペアの配列の Array。
- パスの outTangents() メソッド:{pathProperty}.outTangents(t = time) パス上のすべてのポイントについて、出ていく接線ハンドルの X、Y 座標を取得します。接線の座標値は親ポイントの座標を基準としたオフセットで表されます。値が [0,0] の場合、出ていく接線で湾曲は発生しません。パスを複製するとき、このメソッドを createPath() メソッドに outTangents パラメーターとして渡すことができます。必要に応じてパスをサンプリングする時間も指定できます。
パラメーター:
t |
Number(オプション)。パスをサンプリングするコンポジション時間(秒単位)を指定します。初期設定値は time(現在の時刻)です。 |
戻り値:
小数点第 4 位未満を四捨五入した数値ペアの配列の Array。
- パスの isClosed() メソッド:{pathProperty}.isClosed()パスが開いているか閉じているかを確認します。パスが閉じている場合は true を、開いている場合は false を返します。パスを複製するとき、このメソッドを createPath() メソッドに is_closed パラメーターとして渡すことができます。
パラメーター:
なし
戻り値:
Boolean
- パスの pointOnPath() メソッド:{pathProperty}.pointOnPath(percentage = 0.5, t = time)パス上の任意のポイントの X、Y 座標を取得します。ポイントはパスの弧の長さのパーセンテージで表されます。0%は始点を表し、100%は終点を表します。パスが閉じている場合、0%と 100%は同じ座標を返します。弧の長さのパーセンテージを使用する理由は、パス上の移動速度が一定になるからです。0%および 100%以外のパーセンテージは必ずしもパス上のベジェポイントとは一致しません。3 つのポイントが存在するパスの場合、2 番目のポイントは必ずしも 50%の位置にあるとは限りません。また、ポイントがまったく同じでも開いているパスと閉じているパスでは、閉じているパスの方が長くなるので、同じパーセンテージを指定しても、開いているパスと閉じているパスでは返される座標が異なります。必要に応じてパスをサンプリングする時間も指定できます。
パラメーター:
percentage |
0 から 1 までの Number(オプション)。サンプリングするパスの弧の長さのパーセンテージを指定します。0 未満の値と 1 を超える値は切り詰められます。初期設定値は 0.5 です。 |
t |
Number(オプション)。パスをサンプリングするコンポジション時間(秒単位)を指定します。初期設定値は time(現在の時刻)です。 |
戻り値:
数値ペアの配列。
- パスの tangentOnPath() メソッド:{pathProperty}.tangentOnPath(percentage = 0.5, t = time) パス上の任意のポイントの出ていく接線ハンドルの計算された X、Y 座標を取得します。接線の座標値は親ポイントの座標を基準としたオフセットで表されます。値が [0,0] の場合、出ていく接線で湾曲は発生しません。入ってくる接線ハンドルはこの値の逆数(このメソッドで返される X、Y 座標に -1 を掛けた値)になります。接線の親ポイントはパスの弧の長さのパーセンテージで表されます。tangentOnPath() によって返される座標は親ポイントを基準に計算されるので、弧の長さのパーセンテージで指定された位置にユーザーが定義したポイントも存在する場合は、outTangents() によって返される座標と異なります。親ポイントの座標から tangentOnPath() の座標までの直線距離は常に 1 になります。返された座標を乗算することで、長い接線を作成できます(例:(myPath.tangentOnPath() * 100)。必要に応じてパスをサンプリングする時間も指定できます。
パラメーター:
percentage |
0 から 1 までの Number(オプション)。サンプリングするパスの弧の長さのパーセンテージを指定します。0 未満の値と 1 を超える値は切り詰められます。初期設定値は 0.5 です。 |
t |
Number(オプション)。パスをサンプリングするコンポジション時間(秒単位)を指定します。初期設定値は time(現在の時刻)です。 |
戻り値:
数値ペアの配列。
- パスの normalOnPath() メソッド:{pathProperty}.normalOnPath(percentage = 0.5, t = time) パス上の任意のポイントについて、法線の計算された X、Y 座標を取得します。法線の座標値は親ポイントの座標を基準としたオフセットで表されます。値 [0,0] は親ポイントと同じです。法線の親ポイントはパスの弧の長さのパーセンテージで表されます。弧の長さのパーセンテージについて詳しくは、pointOnPath() メソッドの参照してください。 normalOnPath() によって返される座標は親ポイントを基準に計算されます。親ポイントの座標から normalOnPath() の座標までの直線距離は常に 1 になります。返された座標を乗算することで、長い法線を作成できます(例:(myPath.normalOnPath() * 100))。必要に応じてパスをサンプリングする時間も指定できます。
パラメーター:
percentage |
0 から 1 までの Number(オプション)。サンプリングするパスの弧の長さのパーセンテージを指定します。0 未満の値と 1 を超える値は切り詰められます。初期設定値は 0.5 です。 |
t |
Number(オプション)。パスをサンプリングするコンポジション時間(秒単位)を指定します。初期設定値は time(現在の時刻)です。 |
戻り値:
数値ペアの配列。
- パスの createPath() メソッド:{pathProperty}.createPath(points = [[0,0], [100,0], [100,100], [0,100]], inTangents = [], outTangents = [], is_closed = true)一連のポイントと接線からパスオブジェクトを作成します。ポイントは、X、Y 座標を表す数値ペア配列の配列によって定義されます。配列の長さは 1 以上にする必要があり、それ以上の長さにすることもできます。ポイントの入ってくるおよび出ていく接線ハンドルは、x、y オフセット座標を表す数値ペア配列の配列によって定義されます。接線の配列の長さは points パラメーターと完全に一致している必要があります。接線の座標値は親ポイントの座標を基準としたオフセットで表されます。値が [0,0] の場合、入ってくる接線で湾曲は発生しません。パスの points()、inTangents()、outTangents()、isClosed() メソッドを points、inTangents、outTangents、is_closed パラメーターに渡してパスを複製できます。同じパスのポイントと接線を変更して createPath() に渡すと、別の結果が生成されます。例えば、inTangents または outTangents パラメーターを渡さずに次のエクスプレッションを使用すると、Mask 1 から曲線が削除されます。
myMask = mask("Mask 1").path;
myMask.createPath(myMask.points());
次の例では、Mask 1 のポイントと接線を渡し、is_closed を false に設定することで、パスが開いたパスに変換されます。
myMask = mask("Mask 1").path;
myMask.createPath(myMask.points(), myMask.inTangents(), myMask.outTangents(), false);
points |
パス上のポイントの X、Y 座標を表す数値ペアの配列を含む長さ 1 以上の配列。パラメーターを何も渡さない場合(createPath())を除いて必須です。初期設定値は [[0,0], [100,0], [100,100], [0,100]] です。 |
is_closed |
ブール値(オプション)。マスクを閉じるかどうかを指定します。true を指定すると、終点が始点に接続されます。初期設定値は true です。 |
inTangents |
パス上のポイントを基準とした、出ていく接線ハンドルの X、Y オフセット座標を表す数値ペアの配列を含む配列。パラメーターを何も渡さない場合(createPath())を除いて必須です。この配列の長さは points と同じにする必要がありますが、空の配列([])を渡すこともできます(空の場合は points と同じ長さと見なされ、すべての接線が [0,0] になります)。初期設定値は空の配列です。 |
outTangents |
パス上のポイントを基準とした、入ってくる接線ハンドルの X、Y オフセット座標を表す数値ペアの配列を含む配列。パラメーターを何も渡さない場合(createPath())を除いて必須です。この配列の長さは points と同じにする必要がありますが、空の配列([])を渡すこともできます(空の場合は points と同じ長さと見なされ、すべての接線が [0,0] になります)。初期設定値は空の配列です。 |
戻り値:
パスオブジェクト。
例:
- 例 1
この例では、time=0 においてレイヤー Shape Layer 1 にある Shape 1 の Path 1 のポイントと接線の座標のリストが文字列に書き込まれます。シェイプの座標と入ってくる接線および出ていく接線を読み出すには、これをテキストレイヤーのソーステキストプロパティに適用します。
pointsList = "";
sampleTime = 0;
myShape = thisComp.layer("Shape Layer 1").content("Shape 1").content("Path 1").path;
for (i = 0; i < myShape.points(sampleTime).length; i++) {
pointsList += "c: " + myShape.points(sampleTime)[i].toString() + " i: " + myShape.inTangents(sampleTime)[i].toString() + " o: " + myShape.outTangents(sampleTime)[i].toString() + "\n";
}
pointsList;
- 例 2
この例では、Dark Gray Solid 1 にある Mask 1 の最初の頂点の座標が読み取られ、その座標がコンポジション座標に変換されます。ブラシアニメーションや CC Particle Systems II などのエフェクトがアニメーションマスクの最初のポイントをトレースまたは追跡するようにするには、これをエフェクトの 2D ポイントコントロールに適用します。マスクの他のポイントをトレースまたは追跡する場合は、エフェクトを複製してパスのポイントのインデックス値([0])を変更します。
myLayer = thisComp.layer("Dark Gray Solid 1");
myLayer.toComp(myLayer.mask("Mask 1").maskPath.points()[0]);
データ駆動型アニメーション(エクスプレッションのリファレンス)
エクスプレッションのメソッド:
- Footage の sourceText 属性 {footageItem}.sourceText:.JSON ファイルの内容を文字列として返します。eval() メソッドを使用すると、この文字列を sourceData オブジェクトの配列に変換できます。この配列は sourceData 属性の結果と同じであり、この配列から個々のデータストリームをデータの階層的属性として参照できます。以下に例を示します。
var myData = eval(footage("sample.json").sourceText);
myData.sampleValue;
タイプ:
文字列。.JSON ファイルの内容。読み取り専用。
- Footage の sourceData 属性 {footageItem}.sourceData:.JSON ファイルのデータを sourceData オブジェクトの配列として返します。配列のサイズと複雑度は .JSON ファイルの構造によって決まります。個々のデータストリームをデータの階層的属性として参照できます。例えば、Color という名前のデータストリームがある場合、次のコードは、最初のデータオブジェクトから Color の値を返します。footage("sample.json").sourceData[0].Color
.JSON ファイルの sourceData を変数に割り当てた後に特定のデータストリームを参照するために使用するのが一般的な使い方です。以下に例を示します。
var myData = footage("sample.json").sourceData;
myData[0].Color;
タイプ:
sourceData オブジェクトの配列。読み取り専用。
- Footage の dataValue() メソッド {footageItem}.dataValue(dataPath):.mgJSON ファイル内の指定された静的または動的データストリームの値を返します。階層内の目的のデータストリームへのパスを定義する配列値を 1 つだけ受け入れます。以下に例を示します。
footage("sample.mgjson").dataValue([0]):最初の子のデータを返します。
footage("sample.mgjson").dataValue([1][0]):2 番目のグループの最初の子のデータを返します。
パラメーター:
dataPath |
配列。必須。階層内の静的または動的データストリームへのパス。 |
戻り値:
データストリームの値。
- Footage の dataKeyCount() メソッド {footageItem}.dataKeyCount(dataPath):.mgJSON ファイル内の指定された動的データストリーム内のサンプルの数を返します。階層内の目的の動的データストリームへのパスを定義する配列値を 1 つだけ受け入れます。
以下に例を示します。
- footage("sample.mgjson").dataKeyCount([0]):最初の子のサンプルの数を返します。
- footage("sample.mgjson").dataKeyCount([1][0]):2 番目のグループのサンプルの数を返します。
パラメーター:
dataPath |
配列。必須。階層内の静的または動的データストリームへのパス。 |
戻り値:
動的データストリーム内のサンプルの数。
- Footage の dataKeyTimes() メソッド {footageItem}.dataKeyTimes(dataPath, t0 = startTime, t1=endTime):.mgJSON ファイル内の指定された動的データストリームのサンプルの時間を秒単位で返します。必要に応じてサンプルを返す期間も指定できます。初期設定では、.mgJSON ファイル内のデータストリームの samplesTemporalExtent プロパティの定義に従って、動的データストリームの startTime から endTime までのすべてのサンプルの時間が返されます。階層内の目的の動的データストリームへのパスを定義する配列値を 1 つだけ受け入れます。
次の例は、最初の子の 1 秒目から 3 秒目までのサンプルの時間を返します。
footage("sample.mgjson").dataKeyTimes([0], 1, 3)
パラメーター:
dataPath |
配列。必須。階層内の動的データストリームへのパス。 |
t0 |
Number(オプション)。サンプルを返す期間の開始時間(秒単位)。初期設定値は startTime です。 |
t1 |
Number(オプション)。サンプルを返す期間の終了時間(秒単位)。初期設定値は endTime です。 |
戻り値:
サンプルの時間を表す数値の配列。
- Footage の dataKeyValues() メソッド {footageItem}.dataKeyValues(dataPath, t0 = startTime, t1=endTime):.mgJSON ファイル内の指定された動的データストリームのサンプルの値を返します。必要に応じてサンプルを返す期間も指定できます。初期設定では、.mgJSON ファイル内のデータストリームの samplesTemporalExtent プロパティの定義に従って、動的データストリームの startTime から endTime までのすべてのサンプルの時間が返されます。階層内の目的の動的データストリームへのパスを定義する配列値を 1 つだけ受け入れます。
以下に例を示します。
footage("sample.mgjson").dataKeyValues([0], 1, 3):最初の子の 1 秒目から 3 秒目までのサンプルの値を返します。
パラメーター:
dataPath |
配列。必須。階層内の動的データストリームへのパス。 |
t0 |
Number(オプション)。サンプルを返す期間の開始時間(秒単位)。初期設定値は startTime です。 |
t1 |
Number(オプション)。サンプルを返す期間の終了時間(秒単位)。初期設定値は endTime です。 |
戻り値:
サンプルの値を表す数値の配列。
16 進数から RGB へのカラー変換メソッド(エクスプレッションのリファレンス)
この hexToRgb() カラー変換メソッドは 16 進カラー値(例: #FF00FF)を RGBA カラー値に変換します。これは、カラーパラメーターを JSON や CSV/TSV データソースでは 16 進文字列として表現されるカラー値にリンクするのに役立ちます。
エクスプレッションメソッド:
hexToRgb(hexString) は 16 進トリプレットスペースのカラーを RGB に、または 16 進カルテットスペースを RGBA スペースに変換します。16 進トリプレットでは、アルファはデフォルトで 1.0 になります。
パラメーター:
hexString |
数字または A~F の文字のみを含む 16 進トリプレット(6 桁、アルファチャンネルなし)またはカルテット(8 桁、アルファチャネルを含む)を表現する文字列。オプションの先頭文字の 0x、0X、または # は無視されます。8 桁を超えた文字は無視されます。 |
戻り値:
RGBA カラー値の配列。
例:
次のいずれもが [1.0, 0.0, 1.0, 1.0] を返します。
- hexToRgb("FF00FF")
- hexToRgb("#FF00FF")
- hexToRgb("0xFF00FF")
- hexToRgb("0XFF00FFFF") 注意:8 桁の 16 進カルテット:最後の 2 桁はアルファを 1.0 に設定します。