After Effects の時間変換メソッド、ベクトル演算メソッドなど、エクスプレッションおよびエクスプレッションリファレンスについて学習します。

エクスプレッションを作成する際には、標準 JavaScript 要素のほかに、After Effects のエクスプレッション要素を使用します。エクスプレッションにメソッドや属性を挿入するにはエクスプレッション言語メニューを、プロパティを挿入するにはピックウイップをいつでも使用できます。

引数に等号(=)と値が含まれている場合(t=time または width=.2 など)は、別の値を指定しない限り、ここに含まれる初期設定値が引数として使用されます。

引数の説明の中には、角かっこで囲まれた数値が使われていることがあります。この数値は返されるプロパティまたは配列の次元を示します。

戻り値の説明の中には角かっこで囲まれた数値が使われていることがあります。この数値は返されるプロパティまたは配列の次元を示します。特に次元が示されていない場合、返される配列の次元は入力の次元に応じて変わります。

W3Schools JavaScript リファレンスの Web サイトで、標準の JavaScript 言語に関する情報が公開されています。ここには、JavaScript Math および String オブジェクトに関するページも含まれています。

エクスプレッション: JavaScript エンジン

After Effects はエクスプレッションの評価に JavaScript エンジンを使用します。レンダリング中のエクスプレッション評価のパフォーマンスは、従来の ExtendScript エンジンよりも最大 5 倍高速になりました。

Windows では、After Effects はV8 オープンソース JavaScript エンジンを使用します。これは、ExtendScript で使用できる JavaScript よりも新しいバージョンの JavaScript を提供しています。これは、ECMA-262 Standard の第 3 版のみでサポートされています。

プロジェクトで JavaScript エンジンまたは従来の ExtendScript を使用するかどうかを選択するには、プロジェクト設定ダイアログで、新しい「エクスプレッション」タブをクリックし、「エクスプレッションエンジン」オプションを変更します。以前のバージョンの After Effects で保存したプロジェクトは、デフォルトで従来の ExtendScript が使用されます。

JavaScript と以前の ExtendScript のエクスプレッションエンジンの特定の構文の違いについて詳しくは、JavaScript と以前の ExtendScript のエクスプレッションエンジンの構文の違いを参照してください。

JavaScript エンジンによって提供される改善

  • 浮動小数点演算の数字的精度が改善されました。
  • 新しい JavaScript の配列および文字列メソッドを使用できます。
  • 型付き配列、「let」や「const」のキーワードの使用、最新バージョンの ECMA-262 Standard のその他の追加要素など、その他の新しい JavaScript オブジェクトが利用できるようになりました。

JavaScript エンジンと ExtendScript の違い

  • if/else ステートメントの構文は新しい JavaScript エンジンでより厳密になっており、標準化された JavaScript に対して記述する必要があります。
  • 配列としてテキストレイヤーの文字列のインデックスにアクセスするときは、text.sourceText[i] の代わりに text.sourceText.value[i]を使用します。
  • 古い snake_case エクスプレッションメソッド(前に ExtendScript で廃止された this_compto_world など)はサポートされていません。
  • 簡略化された「this(arg)」構文はサポートされていません。

グローバルオブジェクト、属性、メソッド(エクスプレッションのリファレンス)

comp(name)

返されるタイプ:Comp。

引数のタイプ:name は String です。

名前を指定して別のコンポジションを取得します。

footage(name)

返されるタイプ:Footage。

引数のタイプ:name は String です。

名前を指定してフッテージアイテムを取得します。

thisComp

返されるタイプ:Comp。

そのエクスプレッションを含むコンポジションを表します。

thisLayer

返されるタイプ:Layer、Light、Camera。

そのエクスプレッションを含むレイヤーを表します。thisLayer は初期設定オブジェクトなので、これを使用するかどうかはオプションです。例えば、エクスプレッションを「thisLayer.width」で始めても、「width」で始めても、結果は同じです。

thisProperty

返されるタイプ:Property。

そのエクスプレッションを含むプロパティを表します。例えば、「回転」プロパティのエクスプレッションを作成する場合は、「回転」プロパティを参照するようにエクスプレッションを「thisProperty」で始めます。

time

返されるタイプ:Number。

エクスプレッションが評価されているコンポジション時間を秒単位で表します。

colorDepth

返されるタイプ:Number。

プロジェクトの色深度の値を返します。例えば、プロジェクトの色深度が 16 bit/チャンネルの場合、colorDepth は 16 を返します。

posterizeTime(framesPerSecond)

返されるタイプ:Number。

引数のタイプ:framesPerSecond は Number です。

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。

引数のタイプ:tfps は Number で、isDuration は Boolean です。

初期設定では現在のコンポジション時間である t の値を、フレーム数を表す整数に変換します。1 秒あたりのフレーム数は fps 引数に指定します。初期設定では、現在のコンポジションのフレームレート(1.0 / thisComp.frameDuration)です。isDuration 引数は、初期設定では false ですが、t 値が絶対時間ではなく 2 つの時間の差を表す場合は、true にする必要があります。絶対時間は負の無限大に近づくように切り捨てられます。デュレーションはゼロから離れて正の値になるように切り上げられます。

framesToTime(frames, fps = 1.0 / thisComp.frameDuration)

返されるタイプ:Number。

引数のタイプ:frames および fps は Number です。

timeToFrames の反転で、必須引数である frames に対応する時間を返します。整数である必要はありません。fps 引数については、timeToFrames を参照してください。

timeToTimecode(t = time + thisComp.displayStartTime, timecodeBase = 30, isDuration = false)

返されるタイプ:String。

引数のタイプ:ttimecodeBase は Number で、isDuration は Boolean です。

t の値をタイムコードを表す String に変換します。t 引数と isDuration 引数については、timeToFrames を参照してください。timecodeBase 値は、初期設定では 30 で、1 秒あたりのフレーム数を指定します。

timeToNTSCTimecode(t = time + thisComp.displayStartTime, ntscDropFrame = false, isDuration = false)

返されるタイプ:String。

引数のタイプ:t は Number で、ntscDropFrameisDuration は Boolean です。

t を NTSC タイムコードを表す String に変換します。t 引数と isDuration 引数については、timeToFrames を参照してください。ntscDropFrame が false(初期設定)の場合は、返される String はノンドロップフレームの NTSC タイムコードです。ntscDropFrame が true の場合は、返される String はドロップフレームの NTSC タイムコードです。

timeToFeetAndFrames(t = time + thisComp.displayStartTime, fps = 1.0 / thisComp.frameDuration, framesPerFoot = 16, isDuration = false)

返されるタイプ:String。

引数のタイプ:tfps および framesPerFoot は Number で、isDuration は Boolean です。

t の値をフィルムのフィート数とフレーム数を表す String に変換します。tfps および isDuration 引数については、timeToFrames を参照してください。framesPerFoot 引数には、フィルムの 1 フィートあたりのフレーム数を指定します。初期設定は、35mm フッテージで最も一般的な 16 です。

timeToCurrentFormat(t = time + thisComp.displayStartTime, fps = 1.0 / thisComp.frameDuration, isDuration = false)

返されるタイプ:String。

引数のタイプ:tfps は 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] を返します。

JJ Gifford の Web サイトには、エクスプレッションで簡単な幾何学と三角法を使用する方法を示す説明と例があります。

add(vec1, vec2)

返されるタイプ:配列。

引数のタイプ:vec1 および vec2 は配列です。

2 つのベクトルを加算します。

sub(vec1, vec2)

返されるタイプ:配列。

引数のタイプ:vec1 および vec2 は配列です。

2 つのベクトルを減算します。

mul(vec, amount)

返されるタイプ:配列。

引数のタイプ:vec は配列で、amount は Number です。

ベクトルのすべての要素を amount で乗算します。

div(vec, amount)

返されるタイプ:配列。

引数のタイプ:vec は配列で、amount は Number です。

ベクトルのすべての要素を amount で除算します。

clamp(value, limit1, limit2)

返されるタイプ:Number または配列。

引数のタイプ:valuelimit1 および limit2 は、Number または配列です。

value の各コンポーネントの値は、limit1limit2 との間の値に制限されます。

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 は Number で、timeless は Boolean です。

random メソッドと gaussRandom メソッドでは、数値のシーケンスを制御するシード値が使用されます。初期設定では、レイヤーの識別子、レイヤー内のプロパティ、および現在の時刻の関数としてシード値が計算され、オフセット値は 0 です。オフセットを 0 以外の値に設定して別の乱数シーケンスを作成するには、seedRandom を呼び出します。

現在の時刻をランダムシードへの入力に使用しない場合は、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)

返されるタイプ:Number または配列。

引数のタイプ:maxValOrArray は Number または配列です。

maxValOrArray が Number の場合、このメソッドは 0 ~ maxValOrArray の範囲の数値を返します。maxValOrArray が配列の場合は、 maxValOrArray と同じ次元で、各コンポーネントの値の範囲が 0 ~ maxValOrArray の配列を返します。

random(minValOrArray, maxValOrArray)

返されるタイプ:Number または配列。

引数のタイプ:minValOrArray および maxValOrArray は Number または配列です。

minValOrArraymaxValOrArray が Number の場合、このメソッドは minValOrArraymaxValOrArray の範囲内の数値を返します。引数が Array の場合、このメソッドは、次元が大きい引数と同じ次元の Array を返します。各コンポーネントは、minValOrArray の対応するコンポーネント~ maxValOrArray の対応するコンポーネントの範囲内になります。例えば、エクスプレッション random([100, 200], [300, 400]) は、最初の値が 100 ~ 300 の範囲内にあり、2 番目の値が 200 ~ 400 の範囲内にある Array を返します。入力する 2 つの配列の次元が一致しない場合、小さい方の配列の、大きい方の次元がゼロで埋められます。

gaussRandom()

返されるタイプ:Number。

乱数を返します。結果はベルの形をしたガウス分布になります。結果の約 90%は 0 ~ 1 の範囲にあり、残りの 10%はその範囲外にあります。

gaussRandom(maxValOrArray)

返されるタイプ:Number または配列。

引数のタイプ:maxValOrArray は Number または配列です。

maxValOrArray が Number の場合は、乱数を返します。結果の約 90%は 0 ~ maxValOrArray の範囲にあり、残りの 10%はその範囲外にあります。maxValOrArray が配列の場合は、maxValOrArray と同じ次元の、乱数値の配列を返します。値の 90%は 0 ~ maxValOrArray の範囲にあり、残りの 10%はその範囲外にあります。結果はベルの形をしたガウス分布になります。

gaussRandom(minValOrArray, maxValOrArray)

返されるタイプ:Number または配列。

引数のタイプ:minValOrArray および maxValOrArray は Number または配列です。

minValOrArray および maxValOrArray が Number の場合は、乱数を返します。結果の約 90%は minValOrArraymaxValOrArray の範囲にあり、残りの 10%はその範囲外にあります。引数が配列の場合は、次元が大きい引数と同じ次元の乱数値の配列を返します。各コンポーネントで、結果の約 90%が、minValOrArray の対応するコンポーネント~ maxValOrArray の対応するコンポーネントの範囲にあり、残りの 10%はその範囲外にあります。結果はベルの形をしたガウス分布になります。

noise(valOrArray)

返されるタイプ:Number。

引数のタイプ:valOrArray は Number または配列 [2 または 3] です。

-1 ~ 1 の範囲の数値を返します。ノイズは実際にはランダムではなく、パーリンノイズに基づいています。つまり、お互いに近い 2 つの入力値の戻り値は、近い値になる傾向があります。このようなノイズは、さほど差がなく一見ランダムなように見えるシーケンスを作成できるため、自然な動作をアニメートしたい場合に便利です。例えば、rotation + 360*noise(time) のように記述します。

Interpolation のメソッド(エクスプレッションのリファレンス)

すべての Interpolation のメソッドでは、引数 t は通常、time または value ですが、他の値にすることもできます。ttime の場合は、時間に対して補間が行われます。tvalue の場合は、エクスプレッションにより値の範囲が新しい値の範囲にマップされます。

Interpolation のメソッドの詳細と例については、JJ Gifford の Web サイトを参照してください。

Chris と Trish Meyer が、ProVideo Coalition の Web サイトで、これらのメソッドの詳細情報と例を公開しています。

Ian Haigh が、After Effects Scripts の Web サイトで、バウンスなどの高度な補間法のエクスプレッションを簡単にプロパティに適用できるスクリプトを公開しています。

Andrew Devis が、Creative COW の Web サイトのビデオチュートリアル(2 部構成)で、「オーディオをキーフレームに変換」コマンドと linear エクスプレッションメソッドを使用する方法を詳細に説明しています。

linear(t, tMin, tMax, value1, value2)

返されるタイプ:Number または配列。

引数のタイプ:ttMin および tMax は Number で、value1 および value2 は Number または配列です。

t <= tMin の場合、value1 を返します。t >= tMax の場合、value2 を返します。tMin < t < tMax の場合は、value1value2 のリニア補間を返します。

例えば、「不透明度」プロパティに次のエクスプレッションを指定すると、不透明度の値が 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)

返されるタイプ:Number または配列。

引数のタイプ:t は Number で、value1 および value2 は Number または配列です。

value1value2 の間を t の範囲が0 ~ 1 に変化するのに合わせてリニアに補間します。t <= 0 の場合、value1 を返します。t >= 1 の場合、value2 を返します。

ease(t, value1, value2)

返されるタイプ:Number または配列。

引数のタイプ:t は Number で、value1 および value2 は Number または配列です。

引数や処理が linear と似ていますが、開始ポイントと終了ポイントの速度が 0 になるように補間がイーズインおよびイーズアウトされます。このメソッドを使用すると、アニメーションの結果が滑らかになります。

ease(t, tMin, tMax, value1, value2)

返されるタイプ:Number または配列。

引数のタイプ:ttMin および tMax は Number で、value1 および value2 は Number または配列です。

引数や処理が linear と似ていますが、開始ポイントと終了ポイントの速度が 0 になるように補間がイーズインおよびイーズアウトされます。このメソッドを使用すると、アニメーションの結果が滑らかになります。

easeIn(t, value1, value2)

返されるタイプ:Number または配列。

引数のタイプ:t は Number で、value1 および value2 は Number または配列です。

ease と同じような値が返されますが、接線は value1 側でのみ 0 になり、補間は value2 側でリニアになります。

easeIn(t, tMin, tMax, value1, value2)

返されるタイプ:Number または配列。

引数のタイプ:ttMin および tMax は Number で、value1 および value2 は Number または配列です。

ease と同じような値が返されますが、接線は tMin 側でのみ 0 になり、補間は tMax 側でリニアになります。

easeOut(t, value1, value2)

返されるタイプ:Number または配列。

引数のタイプ:t は Number で、value1 および value2 は Number または配列です。

ease と同じような値が返されますが、接線は value2 側でのみ 0 になり、補間は value1 側でリニアになります。

easeOut(t, tMin, tMax, value1, value2)

返されるタイプ:Number または配列。

引数のタイプ:ttMin および tMax は Number で、value1 および value2 は Number または配列です。

ease と同じような値が返されますが、接線は tMax 側でのみ 0 になり、補間は tMin 側でリニアになります。

Color Conversion のメソッド(エクスプレッションのリファレンス)

Harry Frank が、graymachine の Web サイトで、これらの 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 は Number です。

度をラジアンに変換します。

radiansToDegrees(radians)

返されるタイプ:Number。

引数のタイプ:radians は Number です。

ラジアンを度に変換します。

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 は String です。

指定したマーカー名に一致するマーカーの MarkerKey オブジェクトを返します。name 値は、マーカーダイアログボックスのコメントフィールドに入力されているマーカーの名前(例:「marker.key("1")」)です。コンポジションマーカーの初期設定名は番号です。コンポジションに同じ名前のマーカーが複数ある場合は、コンポジション時間で最初のマーカーが返されます。マーカーキーの値は String で、Number ではありません。例えば、次のエクスプレッションでは、マーカー名が「0」のコンポジションマーカーの時刻が返されます。

  thisComp.marker.key("0").time

marker.nearestKey(t)

返されるタイプ:MarkerKey。

引数のタイプ:t は Numberです。

時刻が t に最も近いマーカーを返します。例えば、以下のエクスプレッションでは、時刻 1 秒に最も近いコンポジションマーカーの時刻が返されます。

  thisComp.marker.nearestKey(1).time

このエクスプレッションでは、現在の時刻に最も近いコンポジションマーカーの時刻が返されます。

  thisComp.marker.nearestKey(time).time

marker.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 メソッドを使用して「footage("file_name")」のように記述します。フッテージアイテムをソースに持つレイヤーの source 属性を使用して、フッテージオブジェクトにアクセスすることもできます。

width

返されるタイプ:Number。

フッテージアイテムの幅をピクセル単位で返します。

height

返されるタイプ:Number。

フッテージアイテムの高さをピクセル単位で返します。

duration

返されるタイプ:Number。

フッテージアイテムのデュレーションを秒単位で返します。

frameDuration

返されるタイプ:Number。

フッテージアイテムのフレームのデュレーションを秒単位で返します。

ntscDropFrame

返されるタイプ:Boolean。

タイムコードがドロップフレーム形式の場合は true を返します(After Effects CS5.5 以降)。

pixelAspect

返されるタイプ:Number。

フッテージアイテムのピクセル縦横比を返します。

name

返されるタイプ:String。

プロジェクトパネルに表示されるフッテージアイテムの名前を返します。

Layer サブオブジェクトの属性とメソッド(エクスプレッションのリファレンス)

注意:

After Effects CC および CS6 では、エクスプレッション言語メニュー、「Layer サブオブジェクト」、「Layer General」、「Layer Properties」、「Layer 3D」、「Layer Space Transforms」がレイヤーサブメニューに移動しました。

source

返されるタイプ:Comp または Footage。

レイヤーのソース Comp またはソース Footage オブジェクトを返します。初期設定の時間は、ソースの時間に調整されます。例えば、「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 は String です。

エフェクトコントロールパネルから、名前でエフェクト名が検索されます。name には、初期設定名またはユーザー定義名を指定できます。複数のエフェクトの名前が同じである場合、エフェクトコントロールパネルで一番上にあるエフェクトが使用されます。例えば、次のように指定します。

  effect("Fast Blur")("Blurriness")

effect(index)

返されるタイプ:Effect。

引数のタイプ:index は Number です。

エフェクトコントロールパネルから、インデックスでエフェクトが検索されます。検索は、一番上の番号 1 から下に向かって行われます。

mask(name)

返されるタイプ:Mask。

引数のタイプ:name は String です。

name には、初期設定名またはユーザー定義名を指定できます。複数のマスクの名前が同じである場合、最初(一番上)にあるマスクが使用されます。例えば、次のように指定します。

  mask("Mask 1")

mask(index)

返されるタイプ:Mask。

引数のタイプ:index は Number です。

マスクはタイムラインパネルでインデックスを使用して検索されます。検索は、一番上の番号 1 から下に向かって行われます。

Layer General の属性とメソッド(エクスプレッションのリファレンス)

width

返されるタイプ:Number。

レイヤーの幅をピクセル単位で返します。source.width と同じです。

height

返されるタイプ:Number。

レイヤーの高さをピクセル単位で返します。source.height と同じです。

index

返されるタイプ:Number。

コンポジション内のレイヤーの番号を返します。

parent

返されるタイプ:Layer、Light、Camera。

レイヤーに親レイヤーがある場合は、その親 Layer オブジェクトを返します。例えば、「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])

Dan Ebberts が、sampleImage メソッドの使用例について、MotionScript の Web サイトで説明しています。

Todd Kopriva が、sampleImage メソッドとポイント制御エフェクトを使用して、指定した点のカラーをカラー補正時に監視する方法について After Effects Region of Interest ブログで説明しています。

Layer Properties の属性とメソッド(エクスプレッションのリファレンス)

レイヤーにマスク、エフェクト、ペイント、またはテキストを追加した場合は、タイムラインパネルに新しいプロパティが追加されます。ここに一覧するにはプロパティの数が多すぎるので、プロパティを参照するための構文を学習する場合はエクスプレッションでピックウイップを使用してください。

anchorPoint

返されるタイプ:Property [2 または 3]。

レイヤーのアンカーポイント値をレイヤーの座標系(レイヤー空間)で返します。

position

返されるタイプ:Property [2 または 3]。

レイヤーに親がない場合は、レイヤーの位置の値をワールド空間で返します。レイヤーに親がある場合は、レイヤーの位置の値を、親レイヤーの座標系(親レイヤーのレイヤー空間)で返します。

scale

返されるタイプ:Property [2 または 3]。

レイヤーのスケール値をパーセント単位で返します。

rotation

返されるタイプ:Property。

レイヤーの回転値を度数で返します。3D レイヤーの場合は、Z 回転値を度数で返します。

opacity

返されるタイプ:Property。

レイヤーの不透明度値をパーセント単位で返します。

audioLevels

返されるタイプ:Property [2]。

レイヤーの「オーディオレベル」プロパティの値をデシベル単位で返します。これは 2D 値です。最初の値はオーディオの左チャンネルの値、2 番目の値は右チャンネルの値です。この値はソースマテリアルのオーディオトラックの振幅ではありません。この値は、「オーディオレベル」プロパティの値で、キーフレームの影響を受ける場合があります。

timeRemap

返されるタイプ:Property。

タイムリマップが使用可能な場合に、タイムリマップの値を秒単位で返します。

marker.key(index)

返されるタイプ:MarkerKey。

引数のタイプ:index は Number です。

指定したインデックスに一致するレイヤーマーカーの MarkerKey オブジェクトを返します。

marker.key(name)

返されるタイプ:MarkerKey。

引数のタイプ:name は String です。

指定したマーカー名に一致するレイヤーマーカーの MarkerKey オブジェクトを返します。name 値は、マーカーダイアログボックスのコメントフィールドに入力されているマーカーの名前です。例えば、「marker.key("ch1")」のように記述できます。レイヤーに同じ名前のマーカーが複数ある場合は、レイヤー時間で最初のマーカーが返されます。マーカーキーの値は String で、Number ではありません。

プロパティに次のエクスプレッションを指定すると、名前で識別された 2 つのマーカーの間で、プロパティの値が 0 から 100 に変わります。

  m1 = marker.key("Start").time;   m2 = marker.key("End").time;   linear(time, m1, m2, 0, 100);

marker.nearestKey(t)

返されるタイプ:MarkerKey。

引数のタイプ:t は Numberです。

時刻が t に最も近いレイヤーマーカーを返します。例えば、次のエクスプレッションでは、時刻 1 秒に最も近いレイヤーマーカーの時刻を返します。

  marker.nearestKey(1).time

このエクスプレッションでは、現在の時刻に最も近いレイヤーマーカーの時刻が返されます。

  marker.nearestKey(time).time

marker.numKeys

返されるタイプ:Number。

レイヤーに含まれるマーカーの総数を返します。

name

返されるタイプ:String。

レイヤー名を返します。

Layer 3D の属性とメソッド(エクスプレッションのリファレンス)

orientation

返されるタイプ:Property [3]。

3D 方向の値を 3D レイヤーの度数で返します。

rotationX

返されるタイプ:Property。

X 回転の値を 3D レイヤーの度数で返します。

rotationY

返されるタイプ:Property。

Y 回転の値を 3D レイヤーの度数で返します。

rotationZ

返されるタイプ:Property。

Z 回転の値を 3D レイヤーの度数で返します。

lightTransmission

返されるタイプ:Property。

3D レイヤーのライト透過プロパティの値を返します。

castsShadows

返されるタイプ:Property。

レイヤーがシャドウを落とす場合は 1.0 を返します。

acceptsShadows

返されるタイプ:Property。

レイヤーがシャドウを受ける場合は 1.0 を返します。

acceptsLights

返されるタイプ:Property。

レイヤーがライトを受ける場合は 1.0 を返します。

ambient

返されるタイプ:Property。

アンビエントの値をパーセント単位で返します。

diffuse

返されるタイプ:Property。

拡散の値をパーセント単位で返します。

specular

返されるタイプ:Property。

鏡面の値をパーセント単位で返します。

shininess

返されるタイプ:Property。

光沢の値をパーセント単位で返します。

metal

返されるタイプ:Property。

金属の値をパーセント単位で返します。

Layer Space Transforms のメソッド(エクスプレッションのリファレンス)

Layer Space Transforms のメソッドは、レイヤーの空間からワールドの空間にトランスフォームするなど、ある空間の値を別の空間の値にトランスフォームする場合に使用します。「from」メソッドは、指定した空間(コンポジションまたはワールド)からレイヤー空間に値をトランスフォームします。「to」メソッドは、レイヤー空間から指定した空間(コンポジションまたはワールド)に値をトランスフォームします。どちらのトランスフォームメソッドでも、トランスフォームが計算される時間を取得する引数を使用できます。ただし、ほとんどの場合は、現在の時間(初期設定)を使用します。

Vec トランスフォームメソッドは、2 つの位置の値の違いなどの方向ベクトルをトランスフォームする場合に使用します。位置などのポイントをトランスフォームする場合は、通常の(Vec ではない)トランスフォームメソッドを使用します。2D レイヤーでは、コンポジション空間とワールド空間は同じです。しかし、3D レイヤーでは、コンポジション空間はアクティブカメラに依存し、ワールド空間はカメラから独立しています。

toComp(point, t=time)

返されるタイプ:配列 [2 または 3]。

引数のタイプ:point は配列 [2 または 3] で、t は Number です。

レイヤー空間からコンポジション空間へポイントをトランスフォームします。

fromComp(point, t=time)

返されるタイプ:配列 [2 または 3]。

引数のタイプ:point は配列 [2 または 3] で、t は Number です。

コンポジション空間からレイヤー空間へポイントをトランスフォームします。3D レイヤーでの変換結果のポイントは、レイヤー空間にある場合でもゼロ以外の値になる可能性があります。例えば、「fromComp(thisComp.layer(2).position)」のように記述できます。

toWorld(point, t=time)

返されるタイプ:配列 [2 または 3]。

引数のタイプ:point は配列 [2 または 3] で、t は Number です。

レイヤー空間からビューに依存しないワールド空間へポイントをトランスフォームします。例えば、次のように指定します。

  toWorld.effect("Bulge")("Bulge Center")

Dan Ebberts が、MotionScript の Web サイトで、toWorld メソッドを使用して、レイヤーを自動的に 1 つの軸に沿った方向に向けるエクスプレッションを公開しています。これは、要素を直立した状態に保ち、カメラの動きに従って要素を回転させる場合に便利です。

 

Rich Young が、AE Portal の Web サイトで、toWorld メソッドを使用して、カメラとライトを CC Sphere エフェクトのレイヤーにリンクする一連のエクスプレッションを公開しています。

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 は Number です。

レイヤー空間からコンポジション空間へベクトルをトランスフォームします。例えば、「toCompVec([1,0])」のように記述できます。

fromCompVec(vec, t=time)

返されるタイプ:配列 [2 または 3]。

引数のタイプ:vec は配列 [2 または 3] で、t は Number です。

コンポジション空間からレイヤー空間へベクトルをトランスフォームします。例えば、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 は Number です。

ワールド空間からレイヤー空間へベクトルをトランスフォームします。例えば、「fromWorld(thisComp.layer(2).position)」のように記述できます。

fromCompToSurface(point, t=time)

返されるタイプ:配列 [2]。

引数のタイプ:point は配列 [2 または 3] で、t は Number です。

コンポジション空間上のポイントをレイヤーの表面上のポイント(Z 値ゼロ)へ、アクティブカメラから写したときに見える位置に投影します。このメソッドは、エフェクトコントロールポイントを設定するときに便利です。この要素は 3D レイヤーにのみ使用します。

Camera の属性とメソッド(エクスプレッションのリファレンス)

Camera オブジェクトには、sourceeffectmaskwidthheightanchorPointscaleopacityaudioLevelstimeRemap およびすべてのマテリアルプロパティを除いて、Layer オブジェクトと同じ属性とメソッドがあります。

pointOfInterest

返されるタイプ:Property [3]。

カメラの目標点の値をワールド空間で返します。

zoom

返されるタイプ:Property。

カメラのズーム値をピクセルで返します。

レイヤーの z 位置(深度)またはカメラのズーム値を変更したときにフレーム内のレイヤーの相対サイズを維持するレイヤーの「スケール」プロパティのエクスプレッションを次に示します。

  cam = thisComp.activeCamera;    distance = length(sub(position, cam.position));    scale * distance / cam.zoom;

depthOfField

返されるタイプ:Property。

カメラの「被写界深度」プロパティがオンの場合は 1 を、被写界深度プロパティがオフの場合は 0 を返します。

focusDistance

返されるタイプ:Property。

カメラのフォーカス距離の値をピクセル単位で返します。

aperture

返されるタイプ:Property。

カメラの絞りの値をピクセル単位で返します。

blurLevel

返されるタイプ:Property。

カメラのブラーの値をパーセント単位で返します。

active

返されるタイプ:Boolean。

カメラが現時点でコンポジションのアクティブなカメラである場合、つまり、カメラレイヤーのビデオスイッチ がオンで、現在の時間がカメラレイヤーのインポイントからアウトポイントの範囲にあり、カメラレイヤーがタイムラインパネル内で最初(一番上)にある場合に、true を返します。それ以外の場合は false を返します。

Light の属性とメソッド(エクスプレッションのリファレンス)

Light オブジェクトには、sourceeffectmaskwidthheightanchorPointscaleopacityaudioLevelstimeRemap およびすべてのマテリアルプロパティを除いて、Layer オブジェクトと同じ属性とメソッドがあります。

pointOfInterest

返されるタイプ:Property [3]。

ライトの目標点をワールド空間で返します。

intensity

返されるタイプ:Property。

ライトの強度の値をパーセント単位で返します。

color

返されるタイプ:Property [4]。

ライトの色の値を返します。

coneAngle

返されるタイプ:Property。

ライトの円錐頂角を度数で返します。

coneFeather

返されるタイプ:Property。

ライトの円錐ぼかしの値をパーセント単位で返します。

shadowDarkness

返されるタイプ:Property。

ライトのシャドウの暗さの値をパーセント単位で返します。

shadowDiffusion

返されるタイプ:Property。

ライトのシャドウの拡散の値をピクセル単位で返します。

David Van Brink が、omino pixel ブログで、ライトにエクスプレッションを使用する方法を示す記事とサンプルプロジェクトを公開しています。

Effect の属性とメソッド(エクスプレッションのリファレンス)

active

返されるタイプ:Boolean。

エフェクトがオンになっている場合に(エフェクトスイッチ が選択されている場合に)、true を返します。

param(name)

返されるタイプ:Property。

引数のタイプ:name は String です。

エフェクト内のプロパティを返します。エフェクトコントロールポイントは常にレイヤー空間に含まれます。例えば、次のように指定します。

  effect("Bulge").param("Bulge Height")

param(index)

返されるタイプ:Property。

引数のタイプ:index は Number です。

エフェクト内のプロパティを返します。エフェクトコントロールポイントは常にレイヤー空間に含まれます。例えば、「effect("Bulge").param(4)」のように記述すると、バルジの高さプロパティが返されます。

Mask の属性とメソッド(エクスプレッションのリファレンス)

注意:

「マスクパス」プロパティは、他のパスプロパティ(シェイプレイヤーやブラシストロークなどのパス)とリンクできますが、このプロパティの数値をエクスプレッションで直接操作することはできません。

MaskOpacity

返されるタイプ:Property。

マスクの不透明度の値をパーセント単位で返します。

MaskFeather

返されるタイプ:Property。

マスクの境界線のぼかしの値をピクセル単位で返します。

maskExpansion

返されるタイプ:Property。

マスクの拡張の値をピクセル単位で返します。

invert

返されるタイプ:Boolean。

マスクが反転されている場合は true を、そうでない場合は false を返します。

プロパティの属性とメソッド(エクスプレッションのリファレンス)

value

返されるタイプ:Number、Array、String。

現在の時刻でのプロパティの値を返します。

valueAtTime(t)

返されるタイプ:Number または配列。

引数のタイプ:t は Numberです。

秒単位で指定した時間でのプロパティの値を返します。

例えば、各フレームのプロパティ値を一連の 4 つの値からランダムに選択するには、4 つの値をそれぞれ 0、1、2 および 3 秒のキーフレームとして設定し、次のエクスプレッションをプロパティに適用します。

  valueAtTime(random(4))

注意:

Dan Ebberts が、MotionScript の Web サイトで、valueAtTime メソッドと velocityAtTime メソッドを使用する際の例とテクニックを公開しています。

velocity

返されるタイプ:Number または配列。

現在の時間での時間速度の値を返します。位置などの空間プロパティの場合は、接線ベクトルの値を返します。その結果は、プロパティと同じ次元になります。

velocityAtTime(t)

返されるタイプ:Number または配列。

引数のタイプ:t は Numberです。

指定された時間での時間速度の値を返します。

speed

返されるタイプ:Number。

初期設定の時間でプロパティが変化しているときの速度に等しい、1D の正の速度値を返します。この要素は空間プロパティでのみ使用できます。

speedAtTime(t)

返されるタイプ:Number。

引数のタイプ:t は Numberです。

指定された時間での空間速度の値を返します。

wiggle(freq, amp, octaves=1, amp_mult=.5, t=time)

返されるタイプ:Number または配列。

引数のタイプ:freqampoctavesamp_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]];

Dan Ebberts が、MotionScript の Web サイトで、wiggle メソッドの時間パラメーターを使用してループアニメーションを作成するためのサンプルエクスプレッションと詳細説明を公開しています。

temporalWiggle(freq, amp, octaves=1, amp_mult=.5, t=time)

返されるタイプ:Number または配列。

引数のタイプ:freqampoctavesamp_mult、および t は Number です。

ウィグリングする時間でプロパティをサンプリングします。freq は 1 秒あたりの変動の周波数、amp は適用先のプロパティを単位とする振幅、octaves は加算するノイズのオクターブの数、amp_mult は各オクターブについて amp が乗算される数、t は基本となる開始時間です。この関数はサンプリングの時間だけを変更し、値は変更しないので、この関数に意味を持たせるには、サンプリングの対象となるプロパティがアニメートされている必要があります。例えば、「scale.temporalWiggle(5, .2)」のように記述できます。

smooth(width=.2, samples=5, t=time)

返されるタイプ:Number または配列。

引数のタイプ:widthsamples および t は Number です。

特定の時間範囲内でプロパティの値をならし、短時間の大きな偏差を小さくして、偏差を均一に分散させます。このならしは、指定された時間でのプロパティの値にボックスフィルターを適用することによって実行します。widthは、フィルターが平均化される時間の範囲(秒単位)です。samples には、時間をいくつに等分するかをを指定します。大きい数を指定すると滑らかになりますが、処理速度は遅くなります。一般的には、サンプリング回数を奇数にして、平均に現在の時間の値が含まれるようにします。例えば、「position.smooth(.1, 5)」のように記述できます。

loopIn(type="cycle", numKeyframes=0)

返されるタイプ:Number または配列。

レイヤーの先頭キーフレームからレイヤーのアウトポイントに向かって数えた時間のセグメントがループします。ループはレイヤーのインポイントから再生します。numKeyframes に、ループするセグメントを指定します。レイヤー内の先頭のキーフレームから numKeyframes+1 番目のキーフレームまでのセグメントがループします。例えば、「loopIn("cycle", 3)」と指定すると、先頭のキーフレームから 4 番目のキーフレームまでのセグメントがループします。初期設定値の 0 では、すべてのキーフレームがループします。

キーフレームループメソッドを使用して、一連のキーフレームを繰り返すことができます。これらのメソッドは、ほとんどのプロパティで使用できます。ただし、「ソーステキスト」プロパティ、パスシェイププロパティ、「レベル」エフェクトの「ヒストグラム」プロパティなど、タイムラインパネルで単純な数値で表現できないプロパティでは使用できません。キーフレームまたはデュレーションの値が大きすぎる場合は、有効な最大値に縮小されます。値が小さすぎる場合は、一定のループとなります

 

ループの種類

結果

cycle

(初期設定)指定したセグメントを繰り返します。

pingpong

指定したセグメントの先頭から末尾へ、次に末尾から先頭へと、交互に繰り返します。

offset

指定したセグメントを繰り返しますが、セグメントの最初と最後のプロパティの値の差にセグメントがループした回数を掛けた値だけ、各サイクルをオフセットします。

continue

指定したセグメントを繰り返さずに、最初または最後のキーフレームの速度に基づき、プロパティのアニメートを継続します。例えば、レイヤーの最後のキーフレームの「スケール」プロパティが 100% の場合は、後続のレイヤーはアウトポイントへ向かって 100% でスケールされ、ループが直接アウトポイントへ戻ることはありません。この種類のループでは、keyframes または duration 引数は使用できません。

loopOut(type="cycle", numKeyframes=0)

返されるタイプ:Number または配列。

レイヤーの最後のキーフレームからレイヤーのインポイントに向かって数えた時間のセグメントがループします。ループはレイヤーのアウトポイントまで再生します。指定されたキーフレームの数に応じてループするセグメントが決定されます。numKeyframe には、ループさせるキーフレームセグメントの数を設定します。指定範囲は最後のキーフレームから逆に数えます。例えば、「loopOut("cycle", 1)」と指定すると、最後のキーフレームと最後から 2 番目のキーフレームで区切られたセグメントがループします。初期設定値の 0 では、すべてのキーフレームがループします。詳しくは、loopIn の説明を参照してください。

David Van Brink が、omino pixel ブログ「エコー」エフェクト、「パーティクルプレイグラウンド」エフェクトおよび loopOut メソッドを使用して、スタイライズされた泳ぎ回る細菌の大群をアニメートする方法を示す記事とサンプルプロジェクトを公開しています。

loopInDuration(type="cycle", duration=0)

返されるタイプ:Number または配列。

レイヤーの先頭キーフレームからレイヤーのアウトポイントに向かって数えた時間のセグメントがループします。ループはレイヤーのインポイントから再生します。指定されたデュレーションに応じてループするセグメントが決定されます。duration 値は、ループさせるセグメント内のコンポジションの数を設定します。指定範囲は先頭キーフレームから数えます。例えば、「loopInDuration("cycle", 1)」と指定すると、アニメーション全体の最初の 1 秒がループします。初期設定値の 0 は、ループさせるセグメントがレイヤーのアウトポイントから始まることを意味します。詳しくは、loopIn の説明を参照してください。

loopOutDuration(type="cycle", duration=0)

返されるタイプ:Number または配列。

レイヤーの最後のキーフレームからレイヤーのインポイントに向かって数えた時間のセグメントがループします。ループはレイヤーのアウトポイントまで再生します。指定されたデュレーションに応じてループするセグメントが決定されます。duration 値は、ループさせるセグメント内のコンポジションの数を設定します。指定範囲は最後のキーフレームから逆に数えます。例えば、「loopOutDuration("cycle", 1)」と指定すると、アニメーション全体の最初の 1 秒をループします。初期設定値の 0 は、ループさせるセグメントがレイヤーのインポイントから始まることを意味します。詳しくは、loopIn の説明を参照してください。

key(index)

返されるタイプ:Key または MarkerKey。

引数のタイプ:index は Number です。

指定した番号に一致する Key または MarkerKey オブジェクトを返します。例えば、「key(1)」は、最初のキーフレームを返します。

key(markerName)

返されるタイプ:MarkerKey。

引数のタイプ:markerName は String です。

指定した名前に一致する MarkerKey オブジェクトを返します。この要素はマーカープロパティに対してのみ使用できます。

nearestKey(t)

返されるタイプ:Key または MarkerKey。

指定した時刻に最も近い Key または MarkerKey オブジェクトを返します。

numKeys

返されるタイプ:Number。

プロパティのキーフレーム数を返します。マーカープロパティのマーカー数を返します。

注意:

「次元に分割」コマンドを使用して「位置」プロパティの次元を個別のコンポーネントに分割した場合、キーフレーム数が変わるため、このメソッドで返される値が変わります。

propertyGroup(countUp = 1)

返されるタイプ:Group。

エクスプレッションが記述されるプロパティと関連するプロパティグループを返します。例えば、ブラシストロークの「回転」プロパティに propertyGroup(1) エクスプレッションを追加すると、エクスプレッションは回転プロパティが含まれているトランスフォームプロパティグループをターゲットにします。propertyGroup(2) を追加すると、エクスプレッションは「ブラシ」プロパティグループをターゲットにします。このメソッドにより、プロパティ階層で、名前に依存しない関係が確立できます。このメソッドは、エクスプレッションが含まれたプロパティを複製するときに特に役立ちます。

propertyGroupnumProperties メソッドは、プロパティグループ内のプロパティ数を返します。

この例では、エクスプレッションが記述されているプロパティが含まれるグループ内のプロパティ数が返されます。

  thisProperty.propertyGroup(1).numProperties

propertyIndex

返されるタイプ:Number。

マスク、エフェクト、テキストアニメーター、セレクター、シェイプ、トラッカー、トラックポイント内のプロパティグループなど、同じプロパティグループに含まれるその他のプロパティに関連のあるプロパティのインデックスを返します。

name

返されるタイプ:String。

プロパティまたはプロパティグループの名前を返します。

例:propertyGroup メソッドと propertyIndex 属性を使用してアニメートする

ブラシストロークの「位置」プロパティを基準とした propertyGroup の値
ブラシストロークの「位置」プロパティを基準とした propertyGroup の値

A. propertyGroup(4) B. propertyGroup(3) C. propertyGroup(2) D. propertyGroup(1) E. 位置の propertyIndex は 2、回転の propertyIndex は 4 です。 

この例では、各ブラシストロークの propertyGroup メソッドが「ブラシ」プロパティグループをターゲットにしています。これは、「ブラシ」プロパティグループが回転プロパティより 2 つ上のプロパティグループにあたるためです。各ブラシストロークの propertyIndex 属性は、各ブラシストロークの固有の値を返します。返された値に時間と 200 を掛けた値が各回転値に適用されて、各ブラシストロークが別々に回転し、渦巻状のペイントストロークが作成されます。  propertyGroup(2).propertyIndex * time * 200

  propertyGroup(2).propertyIndex * time * 200
エクスプレッションでブラシストロークをアニメートした例
エクスプレッションでブラシストロークをアニメートした例

プロジェクトプロパティ(エクスプレッションのリファレンス)

エクスプレッションのメソッド:

  • thisProject オブジェクト thisProject - エクスプレッションを含むプロジェクトを表します。

タイプ

プロジェクトオブジェクト。読み取り専用

  • プロジェクトの fullPath 属性 thisProject.fullPath - プラットフォーム固有の絶対ファイルパス(プロジェクトファイル名を含む)。プロジェクトが保存されていない場合は、空の文字列を返します。
タイプ:
文字列。読み取り専用。
  • プロジェクトの bitsPerChannel 属性 thisProject.bitsPerChannel - プロジェクト設定/カラーマネジメントで設定されたプロジェクトの色深度(bit/チャンネル(bpc))。8、16 または 32 のいずれか。スクリプトプロジェクトの app.project.bitsPerChannel 属性と同等。
タイプ
数値。読み取り専用。
  • プロジェクトの linearBlending 属性 thisProject.linearBlending - プロジェクト設定/カラーマネジメントの「ガンマ値 1.0 でカラーをブレンド」オプションの状態。スクリプトプロジェクトの app.project.linearBlending 属性と同等。
種類:
ブール値。読み取り専用。

主な属性とメソッド(エクスプレッションのリファレンス)

Key オブジェクトにアクセスすると、timeindex、および 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

返されるタイプ:Number または配列。

キーフレームの値を返します。

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 メタデータを参照してください。

Dan Ebberts が、After Effects Developer Center で、エクスプレッションでの 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 の場合、コンポジションマーカーは保護領域として動作します。

タイプ:

ブール値。読み取り専用。

エクスプレッションによるシェイプ、マスクおよびブラシストロークのパスポイントへのアクセス(エクスプレッションのリファレンス)

エクスプレッションを使用して、次の要素のパスポイントや頂点の x および y 座標を読み取ったり書き込んだりすることができます。

  • レイヤーマスク
  • ベジェシェイプ
  • ペイントエフェクトおよびロトブラシとエッジを調整エフェクトのブラシストローク

エクスプレッションのメソッド:

  • パスの points() メソッド:{pathProperty}.points(t = time) パス上のすべてのポイントの X、Y 座標を取得します。レイヤーマスクのパスポイントの座標はレイヤーの左上隅の原点を基準とした相対座標で表されます。ベジェシェイプのパスポイントの座標はパスのシェイプグループのアンカーポイントを基準とした相対座標で表されます(例:トランフォーム:シェイプ 1 > アンカーポイント)。ブラシストロークのパスポイントの座標はストロークの始点を基準とした相対座標で表され、最初のポイントは [0,0] になります。必要に応じてパスをサンプリングする時間も指定できます。このメソッドを createPath() メソッドに points パラメーターとして渡すと、パスを複製できます。

パラメーター

t Number(オプション)。パスをサンプリングするコンポジション時間(秒単位)を指定します。初期設定値は time(現在の時刻)です。

戻り値:

小数点第 4 位未満を四捨五入した数値ペア配列の配列。

  • パスの inTangents() メソッド:{pathProperty}.inTangents(t = time) パス上のすべてのポイントについて、入ってくる接線ハンドルの X、Y 座標を取得します。接線の座標値は親ポイントの座標を基準としたオフセットで表されます。値が [0,0] の場合、入ってくる接線で湾曲は発生しません。このメソッドを createPath() メソッドに inTangents パラメーターとして渡すと、パスを複製できます。必要に応じてパスをサンプリングする時間も指定できます。

パラメーター

t Number(オプション)。パスをサンプリングするコンポジション時間(秒単位)を指定します。初期設定値は time(現在の時刻)です。

戻り値:

小数点第 4 位未満を四捨五入した数値ペア配列の配列。

  • パスの outTangents() メソッド:{pathProperty}.outTangents(t = time) パス上のすべてのポイントについて、出ていく接線ハンドルの X、Y 座標を取得します。接線の座標値は親ポイントの座標を基準としたオフセットで表されます。値が [0,0] の場合、出ていく接線で湾曲は発生しません。このメソッドを createPath() メソッドに outTangents パラメーターとして渡すと、パスを複製できます。必要に応じてパスをサンプリングする時間も指定できます。

パラメーター

t Number(オプション)。パスをサンプリングするコンポジション時間(秒単位)を指定します。初期設定値は time(現在の時刻)です。

戻り値:

小数点第 4 位未満を四捨五入した数値ペア配列の配列。

  • パスの isClosed() メソッド{pathProperty}.isClosed()パスが開いているか閉じているかを確認します。パスが閉じている場合は true を、開いている場合は false を返します。このメソッドを createPath() メソッドに is_closed パラメーターとして渡すと、パスを複製できます。

パラメーター

なし

戻り値

ブール値

  • パスの 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;

タイプ:

String。.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 に設定します。

本作品は Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License によってライセンス許可を受けています。  Twitter™ および Facebook の投稿には、Creative Commons の規約内容は適用されません。

リーガルノーティス   |   プライバシーポリシー