Skip to main content
yoshifujidesign
Participant
September 5, 2018
解決済み

タイムカウンターの作成

  • September 5, 2018
  • 返信数 2.
  • 2846 ビュー

AfterEffectsで、時間経過に合わせて動くタイムカウンタを作成しようとしています。

「エフェクト」→「テキスト」→「番号」で[タイムコード24] なども試してみたのですがうまくいかず、
現在、以下のエクスプレッションを利用してこのような表記を作っています。

timeToTimecode(t = time + thisComp.displayStartTime, timecodeBase = 100, isDuration = false)


ただ、このエクスプレッションでは
00:00:00:00
時:分:秒:1秒以下が2桁で表示
という表記になってしまいます。

通常のタイムカウンタで一般的なのは
00:00:00.000
時:分:秒:ミリ秒(3桁)
となるのでこちらの表記に合わせて最後の1秒以下の部分を2桁ではなく3桁にしたく思っています。

エクスプレッションがあまり詳しくなく、いろいろ調べてみたのですが判然とせずこちらに

投稿させていただきました。


もしお分かりの方いらっしゃいましたらヒントなどご教授いただければありがたいです。
どうぞよろしくお願いいたします。

    このトピックへの返信は締め切られました。
    解決に役立った回答 150kw

    こんにちは、yoshifujidesign

    Mukaidaさん、横から失礼します。

    次の内容でどうでしょうか。

    私が数年前、秒以下2桁で作成したエクスプレッションを、秒以下3桁(ミリ秒)に修正しました。エクスプレッション内容はほとんど忘れてしまいましたが(笑)。

    最後の2カ所の()内「3」で秒以下3桁になります。「1」で秒以下1桁、「2」で秒以下2桁になります。

    コンポジションのフレームレートを120fpsにしましたので、約0.008ずつ加算されます。

    参考のため、エクスプレッションを張り付けておきます。先程After Effects CC2018に貼り付けて動くことを確認しました。

    時間、分の桁が不要ならクロップエフェクトで非表示にしてください。

    function place(x){ //place()関数を定義

    if(x<10){ return "0" + x } //1桁なら0追加して、2桁にして表示

    else{ return "" + x }//2桁ならそのままの値を返す

    }

    t = Math.floor(time); //Math.floorで小数点以下切り捨て

    place( Math.floor(t/3600) ) + ":" + place( Math.floor((t%3600)/60) ) +

    ":" +     place( Math.floor(t%60) )+ ":" + time.toFixed(3).substr(-3);

    //順番に時間、分、秒、1/1000秒を計算してテキストとして表示

    返信数 2

    150kw
    Community Expert
    150kwCommunity Expert解決!
    Community Expert
    September 5, 2018

    こんにちは、yoshifujidesign

    Mukaidaさん、横から失礼します。

    次の内容でどうでしょうか。

    私が数年前、秒以下2桁で作成したエクスプレッションを、秒以下3桁(ミリ秒)に修正しました。エクスプレッション内容はほとんど忘れてしまいましたが(笑)。

    最後の2カ所の()内「3」で秒以下3桁になります。「1」で秒以下1桁、「2」で秒以下2桁になります。

    コンポジションのフレームレートを120fpsにしましたので、約0.008ずつ加算されます。

    参考のため、エクスプレッションを張り付けておきます。先程After Effects CC2018に貼り付けて動くことを確認しました。

    時間、分の桁が不要ならクロップエフェクトで非表示にしてください。

    function place(x){ //place()関数を定義

    if(x<10){ return "0" + x } //1桁なら0追加して、2桁にして表示

    else{ return "" + x }//2桁ならそのままの値を返す

    }

    t = Math.floor(time); //Math.floorで小数点以下切り捨て

    place( Math.floor(t/3600) ) + ":" + place( Math.floor((t%3600)/60) ) +

    ":" +     place( Math.floor(t%60) )+ ":" + time.toFixed(3).substr(-3);

    //順番に時間、分、秒、1/1000秒を計算してテキストとして表示

    yoshifujidesign
    Participant
    September 5, 2018

    Mukaidaさま、150kwさま、お返事ありがとうございました!

    150kwさまに記載していただいたエクスプレッションでこちらでも表示できました。
    こういう考え方で調整することも併せて、非常に勉強になりました。
    改めて感謝いたします。

    150kw
    Community Expert
    Community Expert
    September 6, 2018

    こんにちは

    お役に立てたようで良かったです。

    ちょっとおせっかいですが、

    秒の右側の「コロン」を「ピリオド」に変更するには(下上図)、エクスプレッションの下から2番目の行の中ほどの「コロン」を「ピリオド」に変更します(下下図の矢印部)。

    Community Expert
    September 5, 2018

    タイムコードの最後の2桁は、ミリ秒ではなくフレーム数になるので、120fpsなどの高速撮影では3桁になりますが、通常は2桁です。

    ミリ秒にする場合は、「:」の前後で計算式を変える必要があったと思います。

    どこかのサイトで見たような気はするので、他に回答がなければ探してみます。