飛び飛び連番調教。
いきなり AfterEffects ネタなんですがね。
XSI で言う Step 2 とかの連番、つまり 1, 3, 5, 7・・・・という番号が飛び飛びになっている連番ファイルって、AE にインポートしにくいですよね。 ドラッグ&ドロップだと連番が歯欠けだぜゴルァと怒られるし、インポートのダイアログからも 「アルファベット順にする」 とかチェック入れてやらないとつながった連番として認識してもらえない。 そもそも、インポートのダイアログ使っちゃうとたくさんのフォルダを訪問しなくてはいけない。ドラッグ&ドロップのようにイッキにインポートできなくてめんどくさいですよね。
ほんと、殺意を覚えます。
インポートでエラーが出てもダイアログを出さずに無視する、というようなオプションが無いというのが許せません。 これに限らず、AE ってのは、人間様が常にそこにいて、マウス操作とかOK押すという行為をするということを前提に作られているんですよね。バッチ処理があまり考えられてないというか。 昔はステキなソフトウェアだと思っていたんですが、使えば使うほど、ディスりたくなります。まるで XSI 様のようです。 ま、XSI 様のことは昔からディスっていましたけどね。それこそ、SI|3D の時代から。
ともかくですね、飛び飛び連番は面倒なのです。
でも、番号が飛び飛びになっていない、詰めた連番素材にはしたくないわけです。 第1の理由は、XSI と AE でタイムラインを一致させたいからです。 管理上の問題です。
また、連番の一部をレンダし直す時に、レンダし直すフレームのファイルだけを削除して、あとは勝手に XSI に存在しないフレームを探させてレンダしたりするので、やはり、XSI シーンのタイムラインと一致しているのが一番ラクです。
なので AE のインポート側でどうにか便利にならんものかと思ったんですよね。 おそらくアニメの撮影屋さんなんかは、こういう便利なスクリプトを大量に持っていたりするんでしょうけどね。
ま、ともかく、最低限のものを自作しました。
AE のスクリプティングはまだよくわかりません。
かなりアヤシイですが、ひとまず、俺が使う狭い範囲の中では、思った通りに動いてくれているように見えます。
実行すると、現在開いているプロジェクトのうち、連番素材を全部、アルファベット順の連番として差し替えます。 静止画はスキップされます。されるはず。されてくれ。
つまり、インポートをラクにするのではなく、歯欠けの飛び飛び連番としてインポートされている悪い子のフッテージをアルファベット順に調教するというものです。
なので、ドラッグ&ドロップでインポートした時にいちいち出るファッキンなアラートから逃れられるスクリプトではありません。 ドラッグ&ドロップしたのなら、次々に出るアラートをOK押して行かなければいけないのは、同じです。 このスクリプトはインポートの手順とは全く関係ないです。あくまでもインポート後の処理をするスクリプトです。 まあ、まずは最低限からです。 いずれ改良するでしょう。
JavaScript
----------------------------------------------------------------------
// フレームレートは手で書き換えるのです
NewFrameRate = 12;
FootageCount = 0;
// プロジェクト内の全アイテムをループしてるとかなんとか。
var oProjectItems = app.project.items;
for ( var i=1; i<=oProjectItems.length; i++ )
{
// それが FootageItem とかいう野郎だったら拉致する。
if ( oProjectItems[i] instanceof FootageItem )
{
var oFootage = oProjectItems[i];
// 静止画かどうかの判別は mainSourceオブジェクトの isStill で可能だと電波が言っているのですが、合ってますかこれ。
if ( oFootage.mainSource.isStill == false )
{
FuckinReplace( oFootage, NewFrameRate );
FootageCount ++;
}
}
}
alert( "処理したフッテージの数は " + FootageCount + " だそうです。" );
// 差し替え & フレームレート設定
function FuckinReplace( oFootage, NewFrameRate )
{
var oFile = new File ( oFootage.file ); // FootageItem.file = ファイルパスだそうですがほんとですか。
oFootage.replaceWithSequence( oFile, true ); // 第2引数 = アルファベット順 というのは真実ですか。
// FootageItem のフレームレートをいじる時は, frameRate じゃダメで、
// mainSource オブジェクトの conformFrameRate をいじれって死んだばあちゃんが言ってた。
oFootage.mainSource.conformFrameRate = NewFrameRate;
}
----------------------------------------------------------------------
ダウンロード ToviToviRengbangChowkyow.jsx (1.4K)
全部の連番が対象になってしまいますので注意です。
もともと歯欠けではなかった連番さえも、一緒くたに、分け隔てなく、平等に、アルファベット順の連番として置き換えられます。 俺としては特に不都合無いのでひとまずこうしています。
アルファベット順の連番にすると、AE 内での連番の表示の仕方が変わりますね。
アルファベット順ではない連番は、
こういう表記ですが、
アルファベット順にすると、
こうなりますね。
まあ、スッキリして見やすい気もするし、でもソース名から連番のスタートエンドが分からなくなるのは嫌かも知れないですね。 しばらくこれで様子を見て、問題あらば改良しましょう。
飛び飛び連番のフレームレートは、コンポのフレームレートと一致しない場合が多いのではないかと思います。 コンポは 24fps で、連番は Step 2 なので 12fps としてインポートしたいとか、そういう場合が多いですね。 なのでアルファベット順として読み込み直したフッテージには、新たにフレームレートを指定してやってます。 ひとまず、スクリプトの冒頭に 12 という数字を書いちゃってます。 変更したいときはここを書き換えるしかありません。 XSI の PPG のようなものを表示させてその都度フレームレートを入力するような仕様にしてもいいと思うんですが、俺の AE スクリプティング能力はまだそこまで行っていません。 いずれ。
スクリプトファイルは
C:\Program Files (x86)\Adobe\Adobe After Effects CS4\Support Files\Scripts
とかに入れておくと、ファイルメニュー > スクリプト に現れるので、いつでも実行できますね。 でも、ここに現れる名前って、変えられないのかな。 ファイル名と同一になってしまうのは、不便ですね。
もちろんここに入れなくても、ファイルメニュー > スクリプト > スクリプトを実行 からその都度ファイルを選んでもいいんですけどね。
Windwos7 64bit 上で、AECS4 で動作確認しました。
CS5 でも動くのかな。 後で試そう。
そのうち、選んでいるものだけを処理対象にするとか、改良すると思います。 まず最初は最低限から。
ドラッグ&ドロップを検知して、そのときにこのスクリプトを走らせるとか、できないのかな。 うーむ、できなさそうだよな。 AE 様だからな・・・。
それにしても AE のスクリプティングは、すげえやりにくいなあ。
XSI 様の方が遥かに良く見える。
おかしいなあ。
.
| 固定リンク


コメント