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( )についてはこちら
文字列
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]