Category:Home/memo (Total 18 items)

≪ coreimageを使用できるエフェクトを増やしてみる。 | パス上の座標を取得する ≫

time()を使う

  • 2008-05-31 (土)
  • memo

本家のBBSにあった投稿より
http://nodebox.net/code/index.php/shared_2008-05-27-20-32-36

以下は翻訳じゃないっす。

例えば、古いPCでデカめの動画を再生しようとすると、処理が追い付かなくてカクカクすることがあるけど、 この場合は音声と同期させる為もあって、フレームの処理をトバしてるわけですよね。多分。

で、NodeBoxのリアルタイムでのアニメーション処理はっていうと、speed()でfps設定するんだけど、これがあくまで最大値。
処理が追い付かなくなると当然fpsは落ちる。
で、その分はコマ落ちさせてくれるか?っていうとそうはならなくて、真面目に1フレームずつ処理してくれます。
そうするとどうなるか?っていうと、書き出した場合より遅い速度で再生されることになります。

QCでいうPatchtime代りにfpsを利用するとうまくいかないってことです。
サイトタイトルを思い出したので無理矢理QuartzComposerで例えてみました。

で、時間をどう取り扱おうか?ってのがこの記事の内容なんですが、Pythonのモジュールtimeを使います。

from time import time

でインポートして

time()

で呼び出します。多分unixtimeかな?

で、アニメーションで使う場合に、実行した時間をゼロにしたいので、def draw():の処理に入る前に一旦変数に入れておきます。これはスクリプトを実行した時の時間になります。
で、def draw():内でtime()を別の変数に入れます。def draw():内の処理はフレーム毎の処理なのでフレーム処理ごとに時間をリフレッシュしていきます。
この2つを引き算してやればスクリプト実行からの時間になるわけです。

from time import time

speed(30)
str=time()

def draw():
    cur=time()
    text(str,0,20)
    text(cur,0,40)
    text(cur-str,0,60)

Category:Home/memo (Total 18 items)

≪ coreimageを使用できるエフェクトを増やしてみる。 | パス上の座標を取得する ≫

Entries in this Category
Tutorial
Library
Syndicate this site

RSS 1.0 Feed

Return to page top