dA-tools.com

3次元空間

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

AE_3d01.jpg

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]