dA-tools.com

ゼロからのオブジェクト参照

ターゲット・パス

  • これまではピックウィップを使ってExpressionを作る方法をみてきましたが、ここからはそれを使わないでExpressionを書く方法を学びます。というのもドラッグする対象として表示されていないCompのサイズや時間情報などはピックウィップが使えないのです。
  • エクスプレッションの基本はレイヤーのプロパティをコントロールすることです。その為には目的のプロパティがプロジェクトの中のどこにあるのかを明確に指示する必要があります。この位置情報をターゲットパスと呼びます。
  • ピックウィップの記述を見てみましょう。

thisComp.layer("平面2"). rotation

  • thisComp と layerを[ . ] (ピリオド)がつないでいます。これはピリオドの後の「レイヤー」が前の「Comp」に含まれていることを表しています。同様にroatationは平面2に含まれていることを表しています。
  • ここでピリオドを¥に置き換えてみると

thisComp¥layer("平面 2")¥rotation

  • これはWindowsのファイル・パス構造にそっくりクリソツです。

C:¥Program Files¥AdobeAfterEffects

  • ファイルディレクトリーでは大きな分類を細かく分けていき、最後にファイルのプロパティにたどり着きます。そしてそのフォルダーやファイルはサイズや作成日などのプロパティを持っています。ターゲットパスとよく似た階層構造を持っているのでイメージしやすいのではないでしょうか。

 

グローバル・Global_object

  • WindowsのFilePath階層構造の一番初め(ルート)は[ C ]。これがパスの出発点です。 オブジェクト参照でこのルートに当たるものをグローバルオブジェクトと呼びます。ターゲット・パスはこのオブジェクトから書き始めます。
  • Windowsでは[ C ]の他にもCDドライブが[ D ]だったり、外付けHDDが[ E ]だったりしますね。AfterFxの場合、グローバルオブジェクトは9つあります。(Ver.6~)
    • 1,comp( )
    • 2,thisComp
    • 3,thisLayer
    • 4,thieProperty
    • 5,footage( )
    • 6,colorDepth
    • 7,posterizeTime( )
    • 8,time
    • 9,value

 

Global_object の次は?

  • グローバルオブジェクトを決定したら、次に属性、メソッドあるいはサブ・オブジェクト(下層のオブジェクト)を指定します。それにはオブジェクトがどんな種類のオブジェクト、プロパティを持っているか知る必要があります。どんな種類のオブジェクトが欲しい値(タイプ)を返すかを知らなくてはいけないのです。ここからは手元にユーザーガイドを用意して下さい。

ここでは[平面2の3秒目の回転の値 ]を取得してみましょう。

まずthisCompに続ける要素を確認します。

  • それにはマニュアルを見てthisCompの[ 戻り値 ] (返されるタイプ)を調べます。

[ 戻り値 ]とはメソッドを実行した結果のオブジェクトや指定したプロパティの値のこと。ver.7以降では[ 返されるタイプ ]と書かれています。

    • 戻り値はcompとなっているので次に「コンポジションの属性とメソッド」を見ます。
    • 要素を見ていくとlayer(“name”)があります。
    • カッコに名前を入れてレイヤーを指定します。引用符で括った中だけは日本語が使えます。

thisComp.layer("平面 2")

再びマニュアルに戻り今使ったlayer(“name”)の戻り値を調べます。

    • 戻り値はLayer,Light,Cameraになっています。指定したのは平面ですから戻り値はLayerです。

続いて「レイヤーの属性とメソッド」を見ます。

    • かなり多くの要素がありますが中ほどにrotationがあるのでこれをピリオドでつなぎます。

thisComp.layer("平面 2").rotation

  • ここまでならピックウィップでも出来ますが[3秒目] という指定が残っています。

再びマニュアルでrotationの戻り値を調べます。

    • 戻り値はPropertyなので「プロパティの属性とメソッド」を見ます。
    • valueAtTime(t)が使えそうです。
    • t には時間を秒単位で指定します。

thisComp.layer("平面 2").rotation.valueAtTime(3)

  • これで良さそうですが戻り値がrotationに使える数値であるかどうか確認する必要があります。

マニュアルに戻りvalueAtTime(t) の戻り値を見ます。

    • 戻り値はnumber またはarrayとなっています。
    • number は数値(1次元)、arrayは配列(多次元)を意味しています。rotationは1次元ですから戻り値はnumber になります。
    • 戻り値がnumber 、arrayまたはbooleanの場合はそれ以上属性やメソッドを追加することは出来ません。ここが終点です。
    • これで「このコンポジションの平面2の3秒目の回転の値」を得ることが出来ました。

このようにオブジェクト参照は要素とその戻り値(返されるタイプ)を調べながら書き進めます。

ver,16以降では文字を打ち込むとその文字を含む候補を表示してくれるので、そこから選ぶこともできます。
 

  • マニュアルを見てピックウィップでは記述できない要素が多いことに気づいたと思います。それらを使うにはここで見てきた記述方法を使うしかありません。面倒ですね。
  • そこで記述を助けてくれるのがエクスプレッションメニューとエディターです。