AE Scripting②<ワークエリアの誤差な話>
今回はワークエリアをスクリプトで編集する際の気を付けるべき注意点(私的失敗からの教訓とも言う)を書こうかと思います。
いつにも増して画像が多い。
例
①手始めに下記のコンポを作ります。
(開始0f、デュレーション:60f、フレームレート:30fps)
※空白のテキストレイヤーには特に意味はありません。
↓
②スクリプトでワークエリアを設定します。
リファレンス的な詳しい解説は他所様にお任せしますが、ざっと簡単に説明すると、
現在アクティブなアイテム(コンポ)のワークエリアを
・開始:0f
・終了:59f
とするスクリプトです。
これを実行した結果がこちら。特に問題無さそうです。
そして最後の行のalertでちゃんと設定できてるかなーとチェックしてみると…。
実に香ばしいですね。
もうこれだけで察しのいい人は容易に結末が予想出来てしまいそうですが、現段階ではまだかろうじて(見た目は)大丈夫です。
続きます。
↓
③「コンポジションをワークエリアにトリム」してコンポのデュレーションを変更します。
トリムした結果。
ちょっと分かりにくいですが、よく見ると変です。
タイムラインでは59fまでしか存在していませんがデュレーション表示が60fになっています。
インジケーターをいくら右に動かしても当然見えている範囲にしか行けませんし、レンダリングしても正しく書き出されません。
確実に先ほどのワークエリアの誤差が悪さをしています。
これだから誤差は!全く誤差は!!ヾ(*`Д´*)ノ=3
※151225補足追記※
②にて、画像では示していませんがこの例ではitem.frameRateの値はきちんと「30」(fps)となっています。
誤差が発生しているのはitem.workAreaDurationの値になります。
解決策
②のワークエリア設定後にフレームレートやデュレーション等を再設定すると誤差が解消されトリムしてもおかしな状態になりません。(きちんとデュレーションも59fに設定される)
他、求めた結果ではないので補足ですが③の後「Ctrl+K」でコンポジション設定→何も変更せず「OK」を押すと表示通りのデュレーション(60f)にタイムラインがしれっと直ります。
↓
赤丸部分だけ見ると全く意味が無さそうですが、確認するとこのように誤差が無くなりスッキリします。
何だか釈然としないw
まぁ要は何かしら再設定すればAE側で勝手に直してくれるという事ですね。
正直親切なんだか不親切なんだかですが、ひとまずはこれで大丈夫そうです。
ワークエリアを扱う際に少しだけ気に留めて頂ければ、不慮の事故(バグ)回避になるやもしれません。
※151215追記※
折角なので③時のおかしな状態のaepをアップしておきます。
誰得ですが、興味のある方はどうぞ。