2006/08/08(火)AfterEffectsとかPhotoShopとかを自動で
2006/08/08 19:43
FI/FOがあるだけの簡単なテロップを自動制御で大量生産するのが今回の目的。最終的にはPhotoShopをOLEオートメーションでドライブしてpsdを大量に吐かせた後、AfterEffectsはjavascriptの自動制御でフッテージ差し替え->レンダリングを繰り返すことで実現できたようだ。
まずはPhotoShop側から。
PhotoShop/Illustrator/InDesignなんかはOLEオートメーションがしっかり実装されていて、OLEが使える言語からなら色々操作が可能だ。今回はいつも通りRubyでバリバリ.psdを吐かせてみた。
基本スタートはいつものこちら。
http://jp.rubyist.net/magazine/?0003-Win32OLE
ただ、結局の所僕の腕では複雑なアプリケーションのクラス構造やら、引数の見当をつけるのはほとんど不可能に近い。オブジェクトインスペクタならぬ、オブジェクトブラウザで覗いてみたところで、"Option"という引数名に文字列が来てたらもうそこでパンクしてしまう。全ては対象アプリケーションのリファレンスの充実度次第。
photoshopはインストールフォルダのどこを探してもリファレンスらしきものが出てこない。そこで、
http://codezine.jp/a/article.aspx?aid=406
にあるように、英語版AdobeサイトのDownloadページから、
Photoshop 7.0 Scripting plug-in v.1.0.2a
を取ってくる。これに付いてるリファレンスがきっちりしていて使える。これがなかったら何も出来なかった。
AfterEffectsの方は、少なくとも所持している6.0ではOLEオートメーションは効かないようにみえる。スクリプトそのものは動くので、vbsかjsで書くことになる。ちゃんと理解してないのかもしれないが、AfterEffectsのscript部分はレンダリングの制御のみを目標に考えられているようだ。どうもコンポの中身を弄れるようには見えない。だからレンダーオートメーション? 中身はExpressionで弄れるのだろうか?
ともかく、今度は付属のドキュメントが歯抜け過ぎで肝心なことが書いていない。結局以下のサイトに頼った。
http://hpcgi2.nifty.com/Nekomata/nekojyarashi/wiki.cgi?ObjectList01
これ読まなかったらレンダーキューへのつっこみ方もよく分からなかった。感謝。
http://www.openspc2.org/reibun/AfterEffects6.5/
おまけ。でもこっちはドキュメントに書いてある範囲をそんなに出てないから、あんまり役に立たないかなあ。