尺からフレーム数への計算

アニメ制作現場では、2コマ3コマで動きのタイミングをとる事が多いので、都合、タイムシートでの尺は「傾向が偏って」きます。

例えば、「3+12」(つまり3秒半)なんていう尺は、それこそ耳にタコができるくらいお馴染みの数値です。

そんな中、QTファイルのPDF伝票で「3+11」とか「5+23」とか言う尺を見ると、「なんかやらかしたか?」と直感します。つまり、「何かの障害で、尺が足りてない」的な「危険予測」です。‥‥まあ、危険予測と言っても、既にレンダリング済みのムービーファイルの尺なので、実際は「現物を確認する前の、状況予測」なんですけども。

シートを確認してみると、「うわー、変な尺。ほんとに5+23だよ。1コマ伸ばして6+0にしときゃいいじゃん‥‥」という珍しい状況もあったりします。しかし、そんな変な尺の大体は、レンダリングの何らかの不具合による途中終了、もしくはオペレーション上のミスの場合が大半です。

なので、カットを管理するデータベースと連携しなくても、尺を見るだけで尺の不具合を発見する事ができます。もちろん、全て発見できるわけではないですが、ソフトウェア上で発生したような障害は、大体検出できます。

つまり、レンダリングしたムービーの尺を取得して、「変なコマ数」か否かをチェックするスクリプトを作れば、作業者がいちいちファイルをチェックしなくても、コンピュータが「やばそうな尺を教えて」くれる‥‥というわけです。そうやって、コンピュータを自作ツールで「育てて」いくと、次第に「作業上のパートナー」「ヘルパー」的な役割へとコンピュータが変わってきます。

今回はまず、その土台となる、尺とフレーム数の変換スクリプトを、AppleScriptにて書いてみます。やる事自体は、そんなに難しくないのは、考えればお分かりかと思います。24コマで1秒‥‥というのを、計算すれば良いのですからネ。

アニメ現場の場合、尺は通常、1秒24コマ換算で、「秒+コマ」の書式で書きます。3秒なら「3+0」、5.5秒なら「5+12」です。

尺をフレーム数に換算するのは、例えば「5+12」の場合、

5+12

‥‥を「+」で文字列分解して、

5 12

‥‥の要素に分けます。そして、

(5x24) + 12 = 132

‥‥という計算をしてやれば良い訳です。

ちなみに、After Effectsではコンポジション設定のデュレーションの欄に、「5+12」と入れると、「5秒12フレーム(コマ)」としてちゃんと認識します。さらには、「1+30+0」と入力すると、「1分30秒0フレーム」と認識します。どこまでプラス(+)の連結を受け入れるのか、怖くてやってませんが、AppleScriptでも似た構造で処理してみます。

ちょっと図にのって、「日+時+分+秒+フレーム」という5段階まで受け入れるように作ってみました。‥‥まあ、「日」単位の需要があるとは思えませんが。

my calcFrames("5+12", 24)

on calcFrames(_durText, _fps)
    set delim to AppleScript's text item delimiters
    set AppleScript's text item delimiters to "+" as Unicode text
    set textitems to text items of (_durText as Unicode text)
    set AppleScript's text item delimiters to delim
   
    if length of textitems > 5 then return false
   
    set timescale to {1, _fps, _fps * 60, _fps * 60 * 60, _fps * 60 * 60 * _fps
}
    set fc to 0
    repeat with i from 1 to length of textitems
        set textitem to item -i of textitems
        set fc to fc + (textitem as integer) * (item i of timescale)
    end repeat
   
    return fc
end calcFrames



「on calcFrames...」以下が尺をフレーム数に変換する「自作ルーチン」です。1行目の「my ...」でルーチンを呼び出して処理させます。

1行名の「my...」のかっこ内の「"5+12"」を、「"7+0+0+0+0"」(7日0時間0分0秒0フレーム)に書き換えると、7日=1週間のフレーム数が計算できます。

ちなみに7日間のフレーム数は、1451万5200フレームみたいです。

きりがないので、「1+0+0+0+0+0」(=1年)などの6つ以上の連結の場合は、「false」(偽の値〜「もうダメよ」的な)を返すようにしてあります。

こんな感じで、「処理ルーチン」を自作して、そのルーチンに値を投げ込むと、処理された値が戻ってきます。このやり方は、スクリプトが複雑化する際に、必須となります。


calendar

S M T W T F S
1234567
891011121314
15161718192021
22232425262728
293031    
<< October 2017 >>

selected entries

categories

archives

profile

search this site.

others

mobile

qrcode

powered

無料ブログ作成サービス JUGEM