After Effects CC 2017 (14.0)

After Effects CC 2017(14.0)には、新しいツールへのスクリプトアクセス、コンポジションマーカー、AMEコマンドでキュー、およびGPUアクセラレーションのオプションが追加されました。

このテキストはAdobeフォーラムの投稿を抄訳したものです。原文は以下のURLを参照してください。

https://forums.adobe.com/thread/2230567


スクリプティングによるToolsへのアクセス


新しいapp.project.toolType属性を使用して、ツールパネル内のアクティブなツールの値を取得・設定することができます。読み取り/書き込み属性で、次のいずれかの列挙型のToolType値を返すまたは受け取ります。

Value
Tool Name
ToolType.Tool_Arrow

Selection Tool

ToolType.Tool_Rotate

Rotation Tool

ToolType.Tool_CameraMaya

Unified Camera Tool

ToolType.Tool_CameraOrbit

Orbit Camera Tool

ToolType.Tool_CameraTrackXY

Track XY Camera Tool

ToolType.Tool_CameraTrackZ

Track Z Camera Tool

ToolType.Tool_Paintbrush

Brush Tool

ToolType.Tool_CloneStamp

Clone Stamp Tool

ToolType.Tool_Eraser

Eraser Tool

ToolType.Tool_Hand

Hand Tool

ToolType.Tool_Magnify

Zoom Tool

ToolType.Tool_PanBehind

Pan Behind (Anchor Point) Tool

ToolType.Tool_Rect

Rectangle Tool

ToolType.Tool_RoundedRect

Rounded Rectangle Tool

ToolType.Tool_Oval

Ellipse Tool

ToolType.Tool_Polygon

Polygon Tool

ToolType.Tool_Star

Star Tool

ToolType.Tool_TextH

Horizontal Type Tool

ToolType.Tool_TextV

Vertical Type Tool

ToolType.Tool_Pen

Pen Tool

ToolType.Tool_Feather

Mask Feather Tool

ToolType.Tool_PenPlus

Add Vertex Tool

ToolType.Tool_PenMinus

Delete Vertex Tool

ToolType.Tool_PenConvert

Convert Vertex Tool

ToolType.Tool_Pin

Puppet Pin Tool

ToolType.Tool_PinStarch

Puppet Starch Tool

ToolType.Tool_PinDepth

Puppet Overlap Tool

ToolType.Tool_Quickselect

Roto Brush Tool

ToolType.Tool_Hairbrush

Refine Edge Tool



下記のサンプルコードは現在のツールをチェックして、もしそれがユニファイド・カメラでない場合は、ユニファイド・カメラに設定します。

// Check the current tool, then set it to Unified Camera Tool (UCT).
{
    // Assume a composition is selected in the project.
    var comp = app.project.activeItem;
    if (comp instanceof CompItem) {
        // Add a camera to the current comp. (Requirement for UCT.)
        var cameraLayer = comp.layers.addCamera("Test Camera", [comp.width/2, comp.height/2]);
        comp.openInViewer();

        // If the currently selected tool is not one of the camera tools, set it to UCT.
        if (( app.project.toolType != ToolType.Tool_CameraMaya) &&
            ( app.project.toolType != ToolType.Tool_CameraOrbit ) &&
            ( app.project.toolType != ToolType.Tool_CameraTrackXY) &&
            ( app.project.toolType != ToolType.Tool_CameraTrackZ))
                app.project.toolType = ToolType.Tool_CameraMaya;
    }
}




下記のサンプルは、新しいapp.project.toolTypeアトリビュートを使用し、プロジェクトパネル内で選択されたフッテージアイテムまたはコンポジションから360° コンポジション(環境レイヤーとカメラ)を作成します。

このスクリプトはequirectangular(訳注: 環境マップ用に正距円筒図法で展開されたパノラマ画像)フッテージVRコンポジションの作成を開始するのに役立ちます。

// Create a 360 VR comp from a footage item or comp selected in the Project panel.

var
item = app.project.activeItem;

if
(item != null && (item.typeName == "Footage" || item.typeName == "Composition")) {

    // Create a comp with the footage.
    var comp = app.project.items.addComp(item.name, item.width, item.height, item.pixelAspect, item.duration, item.frameRate);
    var layers = comp.layers;
    var footageLayer = layers.add(item);

    //Apply the CC Environment effect and create a camera.
    var effect = footageLayer.Effects.addProperty("CC Environment");
    var camera = layers.addCamera("360 Camera", [item.width/2, item.height/2]);
    comp.openInViewer(); app.project.toolType = ToolType.Tool_CameraMaya;
}
else {
    alert("Select a single footage item or composition in the Project panel.");
}




スクリプティングによるコンポジションマーカーへのアクセス


コンポジションマーカーの作成・編集がcomp.markerPropertyアトリビュートによって可能になりました。コンポジションマーカーでのスクリプティングはレイヤーマーカーと同じ機能を有します。MarkerValue object参照


以下のサンプルコードでは、プロジェクトとコンポジションを作成し、2つの異なるプロパティをもつマーカーを作成します。

// comp.markerProperty allows you add markers to a comp.
// It has the same functionality as layer.property("Marker")
{
    var currentProj = app.newProject();
    var comp = currentProj.items.addComp("mycomp", 1920, 1080, 1.0, 5, 29.97);
    var solidLayer = comp.layers.addSolid([1, 1, 1], "mylayer", 1920, 1080, 1.0);

    var
compMarker = new MarkerValue("This is a comp marker!");
    compMarker.duration = 1; compMarker.url = "http://www.adobe.com/aftereffects";

    var
compMarker2 = new MarkerValue("Another comp marker!");
    compMarker2.duration = 1;

    comp.markerProperty.setValueAtTime(1, compMarker)
    comp.markerProperty.setValueAtTime(3, compMarker2)
}


スクリプティングによるAME(Adobe Media Encoder)のキューへのアクセス


After Effects CC 2015.(13.8)AMEのキューで取り入れられたAMEのキューコマンドが、スクリプト経由でトリガーすることができるようになりました。これにはAdobe Media Encoder CC 2017(11.0)以降が必要になります。

新しいメソッドapp.project.renderQueue.queueInAME(render_immediately_in_AME)はAMEのキューのコマンドを呼び出します。このメソッドは論理値を渡して、AMEにレンダーアイテムをキューをするだけ(false)か、AMEが受け取ったキューのレンダリングを実行するか(true)を伝えます。

AMEがキューアイテムを受け取った際に、最近使用したエンコーディングプリセットが適用されるということに注意してください。もし render_immediately_in_AMEがtrueの場合には、エンコーディング設定を変更する機会はありません。

新しい読み込み専用の論理値アトリビュートapp.project.renderQueue.canQueueInAMEは、After Effectsのレンダーキューアイテムの中にキューされたレンダーアイテムが存在しているかどうかを示します。キューされたアイテムだけがAMEのキューに追加可能です。


以下のサンプルコードでは、レンダーキューにキューされたアイテムがあるかをチェックし、もしあればそれらをAMEのキューに追加しますが、ただちにレンダリングは開始しません。

// Scripting support for Queue in AME.
// Requires Adobe Media Encoder 11.0.
{
    if (app.project.renderQueue.canQueueInAME == true)
    {
        // Send queued items to AME, but do not start rendering.
        app.project.renderQueue.queueInAME(false);
    }
    else {
        alert("There are no queued item in the Render Queue.");
    }
}




スクリプティングによる利用可能なGPUアクセラレーションオプションへのアクセス


現在使用中のコンピューターでどのGPUアクセラレーションが利用可能かをスクリプティングを経由して取得できるようになりました。新しい読み込み専用のアトリビュート app.availableGPUAccelTypesgpuAccelTypeの列挙型の配列を返します。

このアトリビュートを app.project.gpuAccelTypeと一緒に使用して Project Settings > Video Rendering and Effects > Useの値を設定します。


以下のサンプルコードは使用中のコンピューターで利用可能なGPUアクセラレーションをチェックし、もしMetalが使用可能であれば設定します。


// app.availableGPUAccelTypes returns GPU acceleration types available on the current system.
// You can use this to check before setting the GPU acceleration type.
{
    var newType = GpuAccelType.METAL;

    // Before trying to set, check which GPU acceleration types are available on the current system.
    var canSet = false;
    var currentOptions = app.availableGPUAccelTypes;
    for (op in currentOptions) {
        if (currentOptions[op] == newType)
            canSet = true;
    }

    if
(canSet) {
       // Set the GPU acceleration type.
        app.project.gpuAccelType = newType
    }
    else {
        alert("Metal is not available on this OS.");
    }
}




Comments