dA-tools.com

3次元空間

AfterFxは2次元の平面が基本ですが、3次元(X,Y,Z)でも表示することができます。Expression記述は次元が1つ増える以外は2Dと同様に使うことができます。

2Dと3Dの相違点

トランスフォームの次元が増える

  • 次の3つはExpression記述の[x,y]が[x,y,z]になります。
    • 位置
    • アンカーポイント
    • スケール
    • 方向
  • 回転は各次元別になります。
    • X回転=rotationX
    • y回転=rotationY
    • z回転=rotationZ
  • 3D特有のプロパティ
    • 方向=orientation
    • 方向は0~360°以内の値を取りますが、回転は360以上の複数回転を取ることが出来ます。

回転のExpressionに注意!

    • 例えば「X回転」の値を小数点以下1位までの表示にする場合に次のようなExpressionをテキストソースに記述するとエラーになります。

foo=thisComp.layer("平面 1").transform.xRotation;
foo.toFixed(1);

    • ここでは「xRotation」の後ろに[0]をつける必要があります。
    • これはxRotationが配列扱いになっているためです。
    • toFixed( )についてはこちらLinkIcon文字列

foo=thisComp.layer("平面 1").transform.xRotation[0];

    • ただし、次の場合は自動的に型変換が行なわれるのでエラーになりません。

foo=thisComp.layer("平面 1").transform.xRotation;
foo*0.5;

    • 「位置」を「次元に分割」した場合も同様です。

マテリアル

    • シャドウを落とす=castShadow
    • ライト透過=lightTransmission
    • シャドウを受ける=acceptsShadow
    • ライトを受ける=acceptShadow
    • アンビエント=ambient
    • 拡散=diffuse
    • 鏡面=specular
    • 光沢=shinnes
    • 金属=metal

3D特有のオブジェクト

  • カメラ
    • ズーム=zoom
    • [目標点]=pointOfInterest
    • フォーカス距離=focusDistance
    • 絞り=aperture
    • ブラーレベル=blurLevel
    • 被写界深度=depthOfField
  • ライト
    • [目標点]=pointOfInterest
    • 強度=intensiry
    • カラー=color
    • 円錐頂角=coneAngle
    • 円錐ぼかし=coneFeather
    • シャドウの拡散=shodowDiffusion

座標空間

    • ローカル座標はそのままで、ワールド座標=3D空間がグローバルな空間になります。

3D

空間と平面の座標変換

 

例:3D(ワールド)空間の位置を2D(コンポジション)空間に変換。

  • 3D空間で回転移動している平面"P1"の位置に2D(カメラ平面)のテキストを追随させるには、次の式をテキスト(2D)の「位置」に書きます。

thisComp.layer("P1").toComp(thisComp.layer("P1").anchorPoint)

 

目標に向ける

lookAt(fromPoint,atPoint)

    • オブジェクトのZ軸をfromPointからatPointに向けるメソッドです。
    • レイヤー>トランスフォーム>自動方向では「パスに沿う」か「カメラに向かう」だけしかできませんが、これは限定されません。
    • 例:各平面の「方向」パラメータに以下の式を書いて、常にライトに向わせています。

lookAt(position, thisComp.layer("light").position);

    • Z軸がatPointに向かうので、面が裏返る場合はスケールを[-100,100,100]にします。
    • 戻り値はベクタなので配列のインデックス番号で1軸のみを取得することも出来ます。
    • x=lookAt(fromPoint,atPoint)[0]