2013年08月17日

コンポジションの繰り返し

Aftereffectsではシーケンスの繰り返しは“フッテージの変換”で指定できますが、コンポジションの繰り返しは“フッテージの変換”でできません。

そこで、“タイムリマップ”と“エクスプレッション”を使ったコンポジションの繰り返し方法の紹介です。以下は手順です。
  1. コンポジション"コンポ1"を用意する

  2. コンポジションを入れ子にする。
    新規コンポジション"コンポ2"を目的の秒数で作り、コンポ1を入れて下さい。

  3. コンポジションにタイムリマップをかける。
    タイムラインウィンドウのコンポ1を選択した状態で、【メニュー>レイヤー>時間>タイムリマップ使用可能】を選びます。タイムリマップが使用できるようになります。

  4. エクスプレッションを適応する。
    コンポ2のタイムラインウィンドウのコンポ1のタイムリマップを選択した状態で【メニュー>アニメーション>エクスプレッションの追加】を選びます。

  5. エクスプレッションを書く。
    タイムリマップのエクスプレッションに以下の記述をします。
    //現在時間(秒)からレイヤの開始時間(秒)を引いたものをフレームに変換
    tf=timeToFrames(time - thisLayer.inPoint);
    //コンポ1の尺(秒)をコンポ1の尺(フレーム)に変換
    cf=timeToFrames(source.duration);
    //"現在時間(フレーム)÷コンポ1の尺(フレーム)"の余り(フレーム)を計算
    f=tf%cf;
    //余り(フレーム)を余り(秒)に変換
    framesToTime(f);
    以上です。

    ■検算
     "time"は現在の時間(秒)。"thisLayer.inPoint"はレイヤの開始時間(秒)。
    "source.duration"はコンポ1の尺(秒)です。timeToFrames()とframesToTime()は秒数とフレーム数を変換する関数です。"%"は割り算の余りを表し"A%B"は"A÷Bの余り"の事です。例えばコンポ1の尺が1秒(30フレーム)ならば、
    0 フレーム目: 0÷30=0… 0
    1 フレーム目: 1÷30=0… 1
    2 フレーム目: 2÷30=0… 2
    3 フレーム目: 3÷30=0… 3
    :
    29フレーム目:29÷30=0…29
    30フレーム目:30÷30=1… 0
    31フレーム目:31÷30=1… 1
    :

    と0から29フレームを繰り返します。これを再度秒数に変換するわけです。1から30フレームの繰り返しではないのですが、AEでは尺を1秒(30フレーム)と指定すると0から29フレームまでのコンポが作成されるので目的のフレームを呼び出せているのです。応用するとコンポの指定秒数間を繰り返すなどもできます。

    ……調べてる間に見つけたのですが、コチラのサイトによると、
    loopOut(type = "cycle", numKeyframes = 0)
    と入力すれば簡単にループしてくれそうです。

参考
・Adobe公式エクスプレッションリファレンス Time Conversion のメソッド
・アニメの道具箱 ループ

ラベル:AfterEffects
烏野の箱庭ページ烏野の箱庭 …動画・絵・漫画・脚本などの作品紹介
烏野のyoutubeページ烏野博史動画 …広告・実験・講習用映像のyoutubeチャンネル
烏野のyoutubeページうのひろし日々描描 …作画配信のyoutubeチャンネル
UNOUNOのPixiv …絵、デザイン資料、漫画、実験画像
karasuno10をフォローしましょうkarsauno10のTwitter …考え、宣伝
posted by karasuno10 at 12:00 | Comment(0) | TrackBack(0) | 動画>AfterEffects | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:


この記事へのトラックバック