Amazonで商品を見るセール会場へ

After Effects│指定レイヤーの位置情報を参照してオフセットするエクスプレッション

別の3Dレイヤーの位置を参照し、Zへ3000を加えるエクスプレッションです。XYZすべてを追従させる方法と、自身のXYを維持する方法を分けて紹介します。

直下のレイヤーを参照する式を上へ連鎖させると、Zを3000ずつ離せます。一方、同じBASEを名前で参照する式を複数枚へ貼るだけでは、すべて同じ位置に重なります。

基準となるレイヤーの位置情報を取得して、複数のレイヤーを等間隔に配置した様子を示す画面。
目次

元のXYと参照先のZを分けて確認する練習

別名保存した練習コピーへ平面レイヤーを2枚置き、両方の3DスイッチをONにします。親なし・位置の次元分離なし・キーなしで試します。今回の確認は640×360・30fps・3秒のコンポです。

上の位置を[10,20,30]、下を[100,200,300]とし、下には参照する式を付けません。

上のレイヤーを選択してPキーで位置を表示し、位置のストップウォッチをAltを押しながらクリックします。位置全体へ最初の式を貼ると、下のXYZを使った[100,200,3300]になります。

自身のXYを残す最後の式では、[10,20,3300]になります。

この2つの目的を分け、自身の元値はvalue、ほかのレイヤーはthisComp.layer(…)で参照します。

最下段や2Dの参照先では元値を返すため、動かない場合はレイヤー順と3Dの設定を確認します。

index+1の例は下のレイヤーを参照するので、下から上を参照する式を追加して循環させないようにします。

名前の例では、参照専用の3DレイヤーをBASEにして名前を重複させず、BASEへ追従式を貼らずに使います。

BASEがないと参照エラーになるため、レイヤー名を入力時に確認します。

親が異なるレイヤーでは座標の基準も異なるため、この親なしの例をそのまま使わず空間変換が必要です。

0・1・2秒と、下のZを400へ変えたときの上のZ=3400を確認します。

終了後は式をOFFにして元の[10,20,30]へ戻し、練習ZIPの記録欄へXYZと参照先を残します。

2026年10月15日、Windows 11 Pro・After Effects 26.5(Build 89、日本語表示)で掲載3式を評価しました。Adobeのレイヤー参照とプロパティの仕様も参照しています。

確認すること期待する結果違ったとき
XYZを追従100・200・3300参照先のXYZを確認
自身XYを保持10・20・3300valueと参照先を分ける
動かない最下段・2Dは元値順番・3D・貼付先を確認
スポンサーリンク

直下のレイヤーのXYZを参照してZへ加算する

次の式は1つ下の3DレイヤーのXYZを基準に、Zだけ3000px加えます。

var result = value;
if (value.length === 3 && index < thisComp.numLayers) {
    var next = thisComp.layer(index + 1).transform.position.value;
    if (next.length === 3) {
        result = [next[0], next[1], next[2] + 3000];
    }
}
result;

指定したレイヤーのXYZを参照してZへ加算する

参照専用のBASEレイヤーを作り、名前でXYZを参照する例です。この式は並び順が変わっても同じ名前を探しますが、複数の追従レイヤーに貼るとXYZが一致します。連番に応じた間隔を自動で付ける式ではありません。

var result = value;
if (value.length === 3) {
    var base = thisComp.layer("BASE");
    if (base.index !== index) {
        var position = base.transform.position.value;
        if (position.length === 3) {
            result = [position[0], position[1], position[2] + 3000];
        }
    }
}
result;

自身のXY座標を維持したまま直下のレイヤーのZ位置を参照してオフセットする

X座標とY座標は現在のレイヤー自体の数値を維持し、Z座標のみ1つ下のレイヤーを参照してオフセットする場合は以下の記述を使用します。

var result = value;
if (value.length === 3 && index < thisComp.numLayers) {
    var next = thisComp.layer(index + 1).transform.position.value;
    if (next.length === 3) {
        result = [value[0], value[1], next[2] + 3000];
    }
}
result;

実機で確認した座標と注意点

上をFOLLOW、下をBASEとした2枚で、次の値を確認しました。式の切り替えは同じ位置プロパティの式を置き換えて行っています。

操作・条件AEで確認した結果
直下XYZ参照・0/1/2秒[100,200,3300]で一定、エラーなし
自身XYを維持[10,20,3300]
BASEのZを400へ変更[10,20,3400]
参照先を2Dへ変更元の[10,20,30]、エラーなし
FOLLOWを最下段へ移動元の[10,20,30]、エラーなし
BASEを名前で参照[100,200,3300]
BASEを別名へ変更参照エラー。名前を戻すと[100,200,3300]へ復旧
式をOFF式を付ける前の[10,20,30]へ復帰

続いてUPPERを最上段へ追加し、UPPERとFOLLOWへ直下参照の式を貼りました。下からZ=300、3300、6300となり、隣同士のZ差は3000でした。カメラ表示には遠近感があるため、画面上の見た目の間隔や平面の大きさが等しくなる意味ではありません。

直下レイヤー参照でUPPER、FOLLOW、BASEのZ位置が6300、3300、300になったAE画面
直下参照を連鎖させた結果。Zは下から300、3300、6300です。2026年10月15日、Windows 11 Pro・AE26.5 Build89で撮影。

UPPERとFOLLOWを同じBASEの名前参照へ変えると、両方が[100,200,3300]になりました。等間隔に並べたい場合は、直下参照の連鎖と名前による固定参照を混同しないでください。

同じBASEを名前で参照した2枚がどちらも位置100、200、3300になったAE画面
同じBASEの名前参照では、UPPERとFOLLOWが同じ座標に重なりました。2026年10月15日、Windows 11 Pro・AE26.5 Build89で撮影。

表示が変わらない場合は、参照先が2Dになっていないか、最下段へ移動していないかを先に確認します。名前参照でエラーが出たらBASEの存在と綴りを確認します。位置の数値が正しくても画面外なら、カメラとZ位置の関係を確認してください。

今回の対象は親なし・次元分離なし・キーなしの3D平面です。循環参照、異なる親を持つ座標変換、キー付き素材、macOSでは検証していません。BASEには追従式を付けず、相互に参照させない構成で使ってください。

After Effectsの基本的な操作や関連Tipsは、以下のまとめ記事で解説しています。

別レイヤーやカメラのプロパティ値を参照してアニメーションを連動させるエクスプレッションは、以下で紹介しています。

次に学ぶ・作業環境を選ぶ

学習を続けたい方や、作業環境を整えたい方は、目的に合うガイドをご覧ください。

After Effectsのおすすめ書籍

必要なPCスペック

周辺機器の優先度

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次