- 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)
- Newer: パス上の座標を取得する ≫
- Older: ≪ coreimageを使用できるエフェクトを増やしてみる。