Affter Effects & ESTK: レイヤープロパティの調査

選択したレイヤーのプロパティをリストしてみる。レイヤーを一つ選択して実行。そのレイヤに属したプロパティ名がずら~っとコンソールに出力されます。

ダウンロード→propertyInfo.jsx

何故再帰的に処理してない?って疑問はさておき、何が知りたかったかと言うと、プロパティのMatchNameと呼ばれるものが欲しかったんです。

例えば位置(x,y)プロパティの値にアクセスするには、

targetLayer.transform.position.value;
targetLayer.position.value;
targetLayer("position").value;
targetLayer("トランスフォーム")("位置").value;
targetLayer.property(6).property(2).value

などなど、方法がたくさんあります。もちろん位置を知るくらいなら1行目の「targetLayer.transform.position.value;」のようにattribute(アトリビュート)で指定するのが分かりやすい方法です。

そのほかにもMacthNameと呼ばれるもの(結果のカッコの部分)でアクセスする方法もあるようで、

targetLayer("ADBE Transform Group")("ADBE Position").value;

としても同じ結果を得られます。attributeが分かっているものなら必要ないですが、ローカライズされていない名前なので、特にエフェクトのプロパティにアクセスするスクリプトを配布したい場合(日本語版以外でも動くようにする)にはこれで指定した方がいいのかなと思い、MacthNameをリストアップしてみました。ただそれだけっす。

以下、実行結果。
続きを読む “Affter Effects & ESTK: レイヤープロパティの調査”


Affter Effect & ESTK Code Snippets

AffterEffects用のスクリプト作成の際の断片集。たま~に少~しぐらいは役に立つことも書きますよ。

AfterEffects8(CS3)と付属のExtendScript Toolkit 2でのお話です。

まずはESTK側で操作対象をAfterEffectsに設定。

linkToAfx
操作対象の取得
一番よく使うのが選択したレイヤに対しての操作なので。

targetLayers = app.project.activeItem.selectedLayers;

これで、配列「targetLayers」にレイヤオブジェクトを取得できます。選択したレイヤを一つだけ取得したいなら、

targetLayer = app.project.activeItem.selectedLayers[0];

前後しますが、現在作業中のコンポジションを得るには以下。

activeComp = app.project.activeItem;

続きを読む “Affter Effect & ESTK Code Snippets”


ネタさがし

ここんとこ書くこと無いんです、ネタ切れ状態です。

Google Analyticsで検索キーワードの上位を参考にして何ぞ作るかとおもって見てみると、検索上位は相変わらず「Proce55ing」と「maya backburner」です。どっちも今ぱっと思いついてできるもんじゃないです。特にMayaなんてドングルはずしちゃいましたから、、、

あと、「AfterEffects backburner」ってのが上位にあるんですけど、まさか期待されてはいませんよね、、、よね。現状必要とはしていないので作る気はないですよ。調べてみると以下で公開されてるようなので使ってみてはどうでしょう?(トップページからリンクされていないページなので直にリンクはしてません。)
http://www.leapfrog-productions.com/Scripts/

んー。なんかいいネタ湧き上がってこないかなぁ。


AffterEffects:ワークエリアの継続時間を表示

きっとどこかにそんなメニューコマンドがあるんだと固く信じて作らなかったスクリプト。アクティブなコンポジションのワークエリアの継続時間(デュレーション)を表示するスクリプトです。情報パネルに表示します。

getworkareaduration-trimed.jpg
//getWorkareaDuration.jsx
clearOutput();
var myItem = app.project.activeItem;
writeLn("ActiveComp.: "+myItem.name);
writeLn("WorkArea Duration: "+timeToCurrentFormat(myItem.workAreaDuration,myItem.frameRate,false));

実際には最後の一行だけでオッケなんですよね。うーんやっぱりどっかのメニューにあると思うんですけど、それともショートカットかな。「ここにあるよ」ってなったらちょっと恥ずかしいですねぇ。

ところでCS3から「スクリプティングガイド」がインストールされなくなっちゃったんでしょうか?CS2は入れてくれたと思うんですけど。AdobeのサイトからPDFをダウンロード出来ます。→After Effectsリソース[abobe.com]


オフセット値入力

AfterEffects暦10年くらいにして初めて知りました。ちょっと恥ずかしい。数値入力で現在時間からの移動方法です。例えば現在時刻10″00から2秒23フレームだけ時間を進めたい場合は「+2.23」と打ち込めば12″23へ移動出来ます。マイナスも使えます。

afx-offsettime.jpg

「10:00+2.23」って言う風に書いて出来なかったので、出来ないものと思い込んでました。オフセット値だけ書けばよかったんですね。マニュアルにはちゃんと書いてありました、、、この方法はコンポジションのデュレーション(継続時間?)設定でも使えます。現在の尺より+10秒増やしたいとかね。

プロパティは現在と値も含めて入力する必要が有ります。四則演算が可能ですが、2項だけの単純計算しかできません。

afx-offsetvalue.jpg
レイヤプロパティでの記述

キーボードを打たなきゃいけないので、ホントはinfernoやsmoke,etc…みたいに計算機が出てきてくれるといいんですけどね。

ちなみに3dsmaxではrを付けてオフセットを記述します。+10したければ「r10」、-10なら「r-10」大文字でもOK。

3dsmax-offsetvalue.jpg

数式評価ダイアログなんてのも出せたりしますが、オフセット入力の「r」が使えないのであまり使うことがありません。知りたい方はオンラインリファレンスで「数式評価」英語版をご使用のかたは「Numerical Expression」で検索してみてください。