楽天セール開催中!ポイント最大11倍!セール会場へ

After Effectsの3D背景をコンポサイズに合わせる|正面カメラ用の式

目次

正面カメラと中央の背景で、素材寸法からスケールを求める

この式は、正方形ピクセルのコンポと素材、正面から見た回転のない背景平面を対象にします。

カメラが斜めを向く場面や、親付き・回転付きの背景には対応しません。

別名保存した1920×1080の練習コンポを作り、960×540の所有素材またはソリッドを背景として置き、3DスイッチをONにします。

背景のアンカーポイントを480,270,0、位置を960,540,0、方向とX/Y/Z回転を0にし、親を付けません。

正面向きのカメラを作り、位置を960,540,−1000、ズームを1000にします。

カメラの種類や注視点によって向きが変わるので、アクティブカメラで背景が正面に見える状態を先に確認してください。

背景の元のスケール、キー、式を記録し、キーも式もない練習レイヤーの「スケール」へ下のエクスプレッションを入力します。

var cam = thisComp.activeCamera;
if (!cam) { throw new Error("Create an active camera."); }
if (hasParent || orientation[0] != 0 || orientation[1] != 0 || orientation[2] != 0 ||
    rotationX != 0 || rotationY != 0 || rotationZ != 0) {
    throw new Error("Use an unparented, unrotated background plane.");
}
var cp = cam.toWorld([0, 0, 0]);
var axis = normalize(cam.toWorldVec([0, 0, 1]));
var right = normalize(cam.toWorldVec([1, 0, 0]));
var eps = 0.001;
if (Math.abs(axis[0]) > eps || Math.abs(axis[1]) > eps || axis[2] < 0.999 ||
    right[0] < 0.999 || Math.abs(right[1]) > eps || Math.abs(right[2]) > eps ||
    Math.abs(cp[0] - thisComp.width / 2) > eps || Math.abs(cp[1] - thisComp.height / 2) > eps ||
    Math.abs(position[0] - cp[0]) > eps || Math.abs(position[1] - cp[1]) > eps ||
    Math.abs(anchorPoint[0] - width / 2) > eps || Math.abs(anchorPoint[1] - height / 2) > eps ||
    Math.abs(anchorPoint[2]) > eps || thisComp.pixelAspect != 1 || thisLayer.source.pixelAspect != 1) {
    throw new Error("Use centered layers, square pixels and a front-facing camera.");
}
var depth = position[2] - cp[2];
var zoom = cam.zoom;
if (!isFinite(depth) || !isFinite(zoom) || depth <= 0 || zoom <= 0 || width <= 0 || height <= 0) {
    throw new Error("Check depth, zoom and source dimensions.");
}
var fit = Math.max(thisComp.width / width, thisComp.height / height);
var percent = fit * depth / zoom * 100;
[percent, percent, 100];

この入力例の奥行きは1000、ズームは1000で、素材がコンポの半分の寸法なので期待するスケールは200,200,100です。

背景のZ位置を1000へ変えると奥行き2000になり、期待するスケールは400,400,100です。

元の式は素材寸法の比を含まず、半分の素材でも100%になるため、コンポを覆う大きさになりませんでした。

修正版は幅・高さの必要倍率の大きい方を使って均等拡大するため、縦横比が違う素材ではコンポの外へはみ出す部分が生じます。

画面にぴったり収めてすべての素材を見せるfitではなく、余白が出ないように覆うcoverの計算です。

カメラ原点と背景のX/Y中心、背景のアンカーポイント、正面方向、ピクセル比、正の奥行きとズームを確認し、条件を外れると式のエラーで知らせます。

カメラ名を固定せずアクティブカメラを参照するので、途中でカメラを切り替えた場合も条件を照合してください。

式の追従を止めるときと、元に戻すとき

式を有効にしている間は奥行きやズームの変化に合わせてスケールも変わり、正面の背景がコンポを覆う大きさを保ちます。

カメラ移動で背景を拡大して見せたい場合は、固定したい時刻の評価後のスケール数値を記録してから式を削除し、記録した数値を手動入力します。

式を削除するだけでは、式を入れる前の基礎値へ戻るため、評価後の数値を固定したことにはなりません。

固定操作を試す場合もキーのない練習コピーを使い、元の状態へ戻すときは記録した元のスケールと式なしの状態を照合します。

Ctrl+Z/Command+Zで戻る操作数は式の入力・削除・数値入力の回数によるため、別名保存したコピーが確実な比較元です。

コードの構文・数値計算・模擬APIを確認しましたが、AE本体での操作、描画、取り消しの実行確認は未完了です。

入力・条件操作・結果確認する点
1920×1080/960×540・奥行き1000スケール200%正面・中央・ズーム1000
奥行き2000・ズーム1000スケール400%縦横比の違いではみ出しあり
斜め・親・中心ずれ式のエラー適用条件へ戻す

参照:Adobe公式のエクスプレッション言語リファレンス。

資料確認日:2026年10月3日。

旧記事の引用符が壊れたjsxと、既存キーを削除するベイク処理は、この手順から外しました。

旧記事の参考資料

今回はスケール値の算出にエクスプレッションを用いましたが、より多機能なツールとして「pt_Multiplane」というスクリプトも公開されています。

参考:https://aescripts.com/pt_multiplane/

旧実装の参考コードはGitHubに残っていますが、本稿の修正版とは内容が異なります。

以下の3点は旧記事に掲載していた参考画像で、撮影日時は今回確認できておらず、現在掲載している正面カメラ用の式やAE2026の実機検証結果を示すものではありません。

画像中の旧式は素材寸法を考慮していないため、現在の掲載コードとして転記しないでください。

カメラや人物、奥に配置した背景の各3Dレイヤーを準備したシーンの画面。

旧記事の参考画像:人物・背景・カメラを置いた構成です。

エクスプレッション適用後、背景のZ位置を変更してもコンポジション枠いっぱいにサイズが調整される様子。

旧記事の参考画像:背景に設定した当時の式と位置の画面です。

旧記事に掲載していた人物と背景の動きの参考画像。

旧記事の参考画像:人物と背景の動きの見え方を示した画像です。

関連記事

対象の異なる操作は、以下の記事で確認できます。

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

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

After Effectsのおすすめ書籍

必要なPCスペック

周辺機器の優先度

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