無名関数で囲む話(前回の補足)

あまり知られていないような気がするので、前回の補足がてら、また少しスクリプトの話を。(結構テキトーに書いてるので、間違ってる事言ってたら指摘して頂けると助かります)

1つ前のエントリーの最初に、Script全体を

(function(){
//ここにスクリプト本体を書く
}();


のように無名関数で囲め!という、おまじないみたいな事を書きましたが、これをしないとどうなるのか。最初に答えを書いておくと、そのスクリプト中に書かれている変数やら関数やらが、他のスクリプトと共有されてしまいます。つまり、スクリプトAで定義しているhoge()という関数を、別のスクリプトBで実行する事ができちゃうわけです。嬉しい? いや、場合によってはちょっと困るかもしれません。
Read more »

AE Script書く時のテンプレ v0.1

私がScript書く時は、大抵Meadow(Emacs)使って、nabScripts.comのを真似しつつ書いてるのですが、テンプレートでも作っておくと楽かなーと思って適当に作ってみたので、いちおう公開。変なとことかあったら指摘していただけると助かります。try&catchとかした方がいいのかな……
template.zip

以下、ざっと説明。慣れてないとわかりにくいかもしれませんが、全体の流れとしては、

  • 初期化→エラーチェック(main関数)→処理実行(template関数)

という感じです。UIパネルとか作ることはここでは想定してなかったので、その辺は今後気が向いた時に追記します。

Read more »

エクスプレッションでのプロパティの選択の仕方

先日skypeで会話で出た話題。Creative COWにあった質問で

Particularでは”Type”というプロパティ名が重複しており、エクスプレッションでeffect(”Perticular”)(”Type”)とやっても2つ目の方のTypeを参照できない……
Particular Pickwhip Bug : Adobe After Effects Expressions

というものがありました。その解決策としては

effect("Particular")("tc Particular-0063")

を使えば良いと示されていたのですが、この”tc Particular-0063″という謎の文字列はどこから来たのーって話がありました。

私も最初はこれが何なのかさっぱりだったのですが、どうやらこれはmatchNameというものだそうで

alert(app.project.activeItem.selectedLayers[0].effect("Particular")(121).matchName);

とかscriptで実行すると出てきます(これだと他のプロパティで使えないので少し汎用性増したのを一番下に添付)。

標準エフェクトの場合、プロパティ名は言語によって変わってしまったりするのですが、こちらのmatchNameの方だと言語に依存せず用いることができるようなので、aepやscriptなどを公開する時はこちらを利用した方が良いかもしれません。
エフェクトのmatchName名はAE Noteさんやredefineryさんのこちらを参考に。

また、プロパティの指定の仕方にはNameとmatchNameの他にもう一つpropertyIndexというのもあります。これは”Alt(Opt?)+ストップウォッチクリック”でエクスプレッションを適用した時に出てくる初期値

effect("エフェクト名")(数字)

の数字の値を見ることで、簡単に調べられます。どのプロパティを参照してるのか分かりにくいという不便さはあるかもしれませんが、言語の影響は受けないので、matchNameを調べるのが面倒な時はこちらを用いても良いかもしれません。


↑こんな感じでpropertyIndexが出てくる(ちなみにAlt+Shit+=やメニューから適用ではダメらしい

あと、おまけで選択してるpropertyのmatchNameやインスタンス・関数を調べてalert表示するscriptも書いてみました。Script書く時に少しは役に立つ…かも?
DL -> hasProperty.zip
Read more »

AE Scriptを2つほど更新

長らく更新が滞っていてすみません。
最近はAEに触れてる時間があまりとれなくなってしまって、自然とAE関連の情報に対するセンサーも弱くなる一方です。。。

それはさておき、AEP PROJECTの方で精力的に活動されてるxxJulexxさんに触発されて息抜きに作ってみたAE Scriptを公開いたしました。

  • writeEfectsInName.jsx
    • writeEffectsInName
    • これは名前の通り、単にレイヤー名をそのレイヤーで使用されているエフェクト名に置き換えるというだけのスクリプトです。基本的には、以前nabScripts.comさんで公開されていたwriteEffectsInMarker.jsxでマーカーにエフェクト名を記すようにしていたのを、単にレイヤー名に記すようにしただけなのですが、それだけだと32文字というレイヤー名の文字数制限がきつくなってくるので、スペースを削除したりとか、各自で短縮名を定義して使用できるようにしたりしてます。
    • いちいちエディタで短縮名定義するのも面倒くさいので、そこもスクリプト起動して編集できるようにすると楽かもしれませんが、それはまた気が向いたら…
  • bpmMarker.jsx
    • もう一つはAEの苦手な音合わせを少しだけ助けてくれるスクリプト。
    • bpmMarker.jsx_UI
    • 実行するとこのようなパネルが出てくるので、使用している曲のBPM(Beats Per Minutes)と拍数(1分/4分/8分)を指定して実行すると、下図のように一定間隔にmarkerの打たれたヌルレイヤーが作成されます。fpsの関係などで微妙にずれたりしてしまう可能性はありますが、何もないよりはマシでないかと思います。
    • bpmMarker.jsx_result
    • ちなみに、こちらもnabScripts.comさんで昔公開されてたMarkerCreator.jsxを参考にしております。多謝多謝

以上。DLはお手数ですが、Scriptページからお願いします。また、AE CS3の英語モードでしか動作確認していないので、不具合とかありましたらお知らせいただけると光栄です。

[書評]After Effects Expressions

After Effects Expressions
After Effects Expressions
posted with amazlet at 08.12.01
Marcus Geduld
Focal Pr
売り上げランキング: 46102

AEのExpressionについて書かれた本ということで、一応どんなもんかと購入してみました。
章構成は次のような感じ。

  • Part1: Using Expressions
    • Chapter1: Creating Simple Expressions
    • Chapter2: Variables, Comments, and Dimmensions
    • Chapter3: Commands
    • Chapter4: Expression Helpers
  • Part2: Foundations for Advanced Expressions
    • Chapter5: JavaScript for Expressions
    • Chapter6: Math Is Your Friend
    • Chapter7: Advanced Techniques
    • Chapter8: Randomness
    • Chapter9: Physical SImulations

Part1ではExpressionの簡単な使い方や書き方などの基礎的な部分。Part2の方では少し発展し、条件分岐のさせ方や三角関数等を用いた数式によるプロパティ制御、簡単な物理シミュレーションの仕方が説明されています。
出版元のHPからサンプルとして前書き,Chapter1の内容やムービー,aepが公開されており、下記のリンク先から誰でも試聴できるようになっています(残念ながらaepはCS4以降でないと開くことが出来ませんが・・・)

このサンプルや章立てを見てもらえばわかると思いますが、基本的にはExpression初級者向けの構成になっており、普段からExpressionを用いている方やWeb制作でFlash,JavaScriptを使っている方には、簡単すぎる内容かもしれません。そのため、より高度な物理シミュレーションを学びたいという方は、この本の巻末にも書かれている「ActionScript 3.0 アニメーション」の方が役に立つと思われます。

ActionScript 3.0 アニメーション
Keith Peters
ボーンデジタル
売り上げランキング: 56060
おすすめ度の平均: 5.0

5 数学嫌いのデザイナーにオススメ
4 まるでアルゴリズム大辞典
5 初心者でもなんとか読める
5 教科書にしたいくらい素晴らしい本

ちなみに、Scriptに関する記述は前書きに申し訳程度に書かれている程度で、内容については全く触れられておりません。AEのみならず、Adobe製品のScriptに関する本を誰か書いてくれないですかね・・・