LoginSignup
6
7

More than 5 years have passed since last update.

[After Effects]特定の座標の色を調べる[JavaScript]

Last updated at Posted at 2016-06-09

特定の座標の色を変数に入れようと思ったけど、直接取得するような関数が見つからなかったので作成。

ExtendScript Toolkit

AdobeのアプリケーションをJavaScriptで自動化するためのツール。
アプリケーションのメニューバーからAfterEffectsCC2015の場合、「ファイル」->「スクリプト」->「スクリプトエディタを開く」
でExtendScript Toolkitを開いて、そこにスクリプトを書き込んで実行可能。

内容

スポイトのような機能を持った関数が見つからないので、平面レイヤーを一時的に追加して、そこに「塗り」エフェクトを追加。追加したエフェクトにエクスプレッションを追加してそこにsampleImageで座標の色を取得して平面レイヤーにその色を適用。その適用された色を値として出力するという、かなり遠回りな方法をとった。

この辺のページを参考にしました。
https://www.wgn.co.jp/store/blog/item-1436.html
https://forums.adobe.com/thread/1902410

AfterEffects
function getLayerPositionColor(argumentCompName,argumentLayerName,argumentPositionArray){
///コンポジションを特定
var targetComp;
for(var i=1;i<=app.project.numItems;i++){
    if(argumentCompName==app.project.item(i).name){
        targetComp = app.project.item(i);
    }
}
///仮の作業用平面を作成。
var target = targetComp.layers.addSolid([0, 0, 0], "getLayerPositionColorBox", 2, 2, 1.0);
///「塗り」エフェクトの追加
var addColorControl = target.Effects.addProperty("塗り");
///エクスプレッションの記載内容の文字列作成
var expr = "thisComp.layer(\""+argumentLayerName+"\").sampleImage(["+String(argumentPositionArray)+"], [.5, .5]);";
///アニメーション->エクスプレッションを追加
addColorControl.property("カラー").expressionEnabled = true;
addColorControl.property("カラー").expression = expr;
///結果のデータを取得
var values = addColorControl.property("カラー").value;
target.remove();
return values;
}


///使用例
var rgb;
rgb = getLayerPositionColor("対象のコンポジション","レイヤー名",[10,10]);
///getLayerPositionColor("対象のコンポジション","レイヤー名",[X座標,Y座標]);
$.writeln(rgb);

6
7
3

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
7