引用元: http://pc11.2ch.net/test/read.cgi/avi/1227543868/

918 :名無しさん@編集中:2009/09/22(火) 18:26:48 ID:1zFHvOdh
コンポジションのループがイマイチ面倒なんだけど何かいい方法無い? 
loopOut("cycle")使うのも、キーの設定が煩わしいし、 
単純にループするだけで良いんだけど。 




919 :名無しさん@編集中:2009/09/22(火) 18:47:46 ID:ELb0yVTp
>>918 
一度書き出してfootage→変換じゃだめなのか? 




920 :名無しさん@編集中:2009/09/22(火) 19:13:22 ID:1zFHvOdh
>>919 
FIXしちゃえばそれで良いんだけど、ちょっとした時に使いたい場合がね。 
簡単にできる方法がもしあればってレベルの質問。 




921 :名無しさん@編集中:2009/09/22(火) 19:35:29 ID:jr430wML
framesToTime( timeToFrames(time-inPoint) % timeToFrames(source.duration) ) 

俺のIMEにはこれが登録されてる。 
ソースのシーケンスの長さでループする。 
長さが変わったら自動的にループの長さも追随するから結構便利よ。 




922 :名無しさん@編集中:2009/09/22(火) 22:06:48 ID:1zFHvOdh
>>921 
t=(time-thisLayer.inPoint)% thisLayer.source.duration; 
(t>=thisLayer.source.duration - 0.001)?0:t; 

なるほど、その発想は無かった。 
あとなんかtimeToFrames使わないと、0になるはずのとこでずれることがあるので、改造してみた。 
framesToTimeとかtimeToFramesは必要? 
それでずれを無くしてんのかな。 




923 :名無しさん@編集中:2009/09/22(火) 22:33:39 ID:jr430wML
>>922 
中でなにやってるかはわからんが、AEが準備した数値の操作は、 
AEの準備した関数でやるべきだとは思うよ。 
その上で不具合があれば対策せんといかんけど、まずはね。 

というか今のところそれで誤差が出たこと無いから大丈夫と思う。 




924 :名無しさん@編集中:2009/09/23(水) 09:58:19 ID:DEvfsQ/O
>>921 
これはどこに書けばいいのでしょうか? 
回転とかに書いてみたのですがエラーがでてしまいました 




925 :921:2009/09/23(水) 11:47:28 ID:z4rq9O6/
>>924 
タイムリマップ専用だよ。 

回転とかキー⇒キーの値のループならloopOut()が適してる。 
ループアウトは最初のフレームの値に戻るフレームに癖があるからおれは 
あんまり使わん、普段は以下のようにしてる 
(というかあとで調整がややこしくなるから、そういう組方をしないようにしている) 

frame = timeToFrames( time - inPoint ) 
lpDurFrm = timeToFrames( key( numKeys ).time - inPoint ) 
valueAtTime( framesToTime( frame % lpDurFrm ) ) 



まあ等速の常時回転とか、加速度の継続(1フレーム10度づつ増え続けるとか)がしたいなら 
loopOut("continue") 
が良いよ。 
「最後に変化したフレームの変化量」が永久に続く。 

CS3以降じゃないと動かない。 






【まとめ】 
レイヤー → 時間 → タイムリマップ使用可能 
→ キーフレームを使ってループさせたい箇所を適宜調整する
→ アニメーション →  エクスプレッションを追加 →

 
frame = timeToFrames( time - inPoint ) 
lpDurFrm = timeToFrames( key( numKeys ).time - inPoint ) 
valueAtTime( framesToTime( frame % lpDurFrm ) ) 

を記述する