After Effects CC2014 (13.0)

現在公式のブログで公開されている「what’s new and changed in the 2014 update to After Effects CC」より、スクリプティングに関連する部分のみを抜粋して抄訳しました。


今後、追記や修正される可能性があります。


CEPを用いたHTML5パネル

After Effectsは、HTML5パネルをロード、使用するためにCEP(Common Extensibility Platform)を含んでいます。
これらのパネルは、After Effectsのスクリプティングオブジェクトモデル全体へのアクセス(HTML、CSS、およびHTML5のJavaScriptを使用することができることに加えて)が可能となり、より幅広い拡張機能が作成できます。

Premiere Proやその他いくつかのAdobeアプリケーションでは、この機能がすでに統合されていましたので、ストックフッテージやトレーニングを提供するサービスなどを通じて、このパネルを既に目にしているかもしれません。以前、CEPシステムは'CSXS'という名称で呼ばれていたので、ご存知の方もいるかもしれません。



スクリプティングからレンダー設定と出力モジュールへのアクセスが可能になりました。



Example

//現在のレンダー設定「プロキシを使用」を取得。引数の値の設定は英語。
var rqItem1_proxyUse = app.project.renderQueue.item(1).getSetting("Proxy Use");

//同じ設定で、キーの最後に-strを付加することで、文字列として値を取得
var rqItem1_proxyUse_str = app.project.renderQueue.item(1).getSetting("Proxy Use-str");

//設定値を「プロキシを使用」項目を「すべてのプロキシを使用」に設定。
app.project.renderQueue.item(1).setSetting("Proxy Use", "Use All Proxies");

//上の例と同じことを、数値を用いて設定することも可能です。
app.project.renderQueue.item(1).setSetting("Proxy Use", 1);

Example

//レンダーキューのitem 1が有している、全てのレンダリング設定の文字列を含んでいるオブジェクトを取得。
//数値で取得したい場合は、GetSettingsFormat.NUMBERを引数として指定します。

var rqItem1_all_str = app.project.renderQueue.item(1).getSettings( GetSettingsFormat.STRING );

//判読可能なJSONフォーマットに変換

var rqItem1_all_str_json = rqItem1_all_str.toSource();

//レンダーキューのitem 1で、設定可能なレンダー設定の文字列を含んでいるオブジェクトを取得。
//数値で取得したい場合は、GetSettingsFormat.NUMBER_SETTABLEを引数として指定します。

var rqItem1_settable_str = app.project.renderQueue.item(1).getSettings( GetSettingsFormat.STRING_SETTABLE );


// レンダーキューのitem 2にレンダーキューのitem 1から取得した値を設定

app.project.renderQueue.item(2).setSettings( rqItem1_settable_str );

// レンダーキューのitem 3に自身で作成した値を設定

var my_renderSettings = {
    "Color Depth":"32 bits per channel",
    "Quality":"Best",
    "Effects":"All On",
    "Time Span Duration":"1.0",
    "Time Span Start":"2.0"
};

app.project.renderQueue.item(2).setSettings( my_renderSettings );

// レンダーキューのitem 1で可能な限り全部のレンダリング設定の値を含んだオブジェクトを取得し、
// JSONフォーマットに変換

var rqItem1_spec_str = app.project.renderQueue.item(1).getSettings(GetSettingsFormat.SPEC);
var rqItem1_spec_str_json = rqItem1_spec_str.toSource();


// レンダーキューのitem 1から、出力モジュールのitem 1の全ての出力モジュール設定の文字列を含んだ
// オブジェクトを取得。
// 数値で取得したい場合は、GetSettingsFormat.NUMBERを引数として指定します。

var omItem1_all_str= app.project.renderQueue.item(1).outputModule(1).getSettings( GetSettingsFormat.STRING );

// 判読可能なJSONフォーマットに変換

var omItem1_all_str_json = omItem1_all_str.toSource();

// レンダーキューのitem 1から、出力モジュールのitem 1で設定可能な出力モジュール設定の文字列を含んだ
// オブジェクトを取得。
// 数値で取得したい場合は、GetSettingsFormat.NUMBER_SETTABLEを引数として指定します。

var omItem1_settable_str = app.project.renderQueue.item(1).outputModule(1).getSettings( GetSettingsFormat.STRING_SETTABLE );

// レンダーキューのitem 2の出力モジュールのitem 1に、レンダーキューitem 1の出力モジュールitem 1の
// 設定値の設定値を取得して、設定する。

app.project.renderQueue.item(2).outputModule(1).setSettings( omItem1_settable_str );

// レンダーキューのitem 3の出力モジュールのitem 1に、自身で作成した値を設定。

var crop_data = {
    "Crop":true,
    "Crop Bottom":0,
    "Crop Left":0,
    "Crop Right":8,
    "Crop Top":10
};

app.project.renderQueue.item(1).outputModule(3).setSettings( crop_data );

// 現在、出力モジュールのフォーマット設定が設定不可能ですが、読み込みは可能です。
// 以下の行では、レンダーキューitem 1の出力モジュールitem 1の現在の出力モジュールのフォーマットを
// 知らせます。

var current_format = app.project.renderQueue.item(1).outputModule(1).getSettings(GetSettingsFormat.STRING).Format;

// この行では出力モジュールのファイル情報を知らせます。

var current_omFileTempalte = app.project.renderQueue.item(1).outputModule(1).getSettings(GetSettingsFormat.STRING)["Output File Info"]["File Template"];


// 注意: 出力モジュールが変更された後にOutputModuleオブジェクトが無効になるというバグが存在しているため、
// 変更後にOMitemを再度取得する必要があります。

Example

// レンダーキューitem 1の出力モジュールitem 1の出力パスを変更するための、新しい方法です。
// この例では、出力ファイルはユーザーディレクトリを指定されています。

// This is the new way to change the output file path of output module 1 of
// render queue item 1.
// In this example, output file is routed to the user directory.

var om1 = app.project.renderQueue.item(1).outputModule(1);
var file_name = File.decode( om1.file.name ); // 名称に特殊文字が含まれている?
var new_path = "~/new_output";
var new_dir = new Folder( new_path );
new_path = new_dir.fsName;

var new_data = {
"Output File Info":
    {
        "Base Path":new_path,
        "Subfolder Path":"draft",
        "File Name":file_name
    }
};

om1.setSettings( new_data );
}

Example

// レンダーキューitem 1の出力モジュールitem 1の出力パスを変更するための、新しい方法です。
// この例では、出力ファイルはユーザーディレクトリをフルパスで指定されています。

var om1 = app.project.renderQueue.item(1).outputModule(1);

var file_name = File.decode( om1.file.name ); // 名称に特殊文字が含まれている?
var new_path = "/Users/myAccount/new_output";
var separator = "/";
if ($.os.indexOf("Mac") == -1)
{
new_path = "C:\\Users\\myAccount\\new_output";
separator = "\\";
}

var new_data = {
"Output File Info":
{
"Full Flat Path":new_path + separator + file_name
}
};

om1.setSettings( new_data );



Comments