2
1

More than 1 year has passed since last update.

DaVinci Resolve: Text+用 TimeCode の代替え Expression

Last updated at Posted at 2023-04-06

Text+ にある TimeCode 表示を Expression で作りました。
Fusion ページは使わず、Edit ページのみで完結させられます。
dr003.png

標準 TimeCode との違い

  • 開始時間指定が可能
  • 標準TimeCodeがフレーム数に対し、1/100秒を表示
  • 秒毎に区切り文字を点滅(フォントによっては位置ずれする)
: -- 複数行宣言
start = "00:00:00:00"; -- 開始タイムコード
-- time値と開始タイムコードから「秒」を算出
seconds = time / comp:GetPrefs().Comp.FrameFormat.Rate; -- time値とフレームレートから秒に
seconds = seconds + string.sub(start, 10, 11) / 100; -- ミリ秒
seconds = seconds + string.sub(start, 7, 8); -- 秒
seconds = seconds + string.sub(start, 4, 5) * 60; -- 分
seconds = seconds + string.sub(start, 1, 2) * 60 * 60; -- 時
-- 「秒」から時分秒ミリ秒を算出
function string:padding(num) return string.sub(floor(num) + 100, -2) end -- 桁揃え関数
ms = string:padding(floor((seconds - floor(seconds) + 0.005) * 100)); -- ミリ秒
ss = string:padding(seconds % 60); -- 秒
mm = string:padding(seconds / 60 % 60); -- 分
hh = string:padding(seconds / 60 / 60 % 24); -- 時
data = {hh, mm, ss, ms}; -- 表示用に配列化
-- 区切り文字を秒毎に切り替えて表示
return table.concat(data, iif(floor(seconds) % 2 == 0, ":", " "));

Text エリアを右クリックし、プルダウンリストからExpressionを選択

標準 TimeCode と言ってるのは、このリストにある TimeCode です。
dr001.png

コードを入力

初期値「Text("Custom Title")」は消してください。
dr002.png
このエリアで編集は無理だと思います。別途エディタを使ってコピペしましょう。
dr003.png
テキスト内容を Expression で動的に変更しているだけなので、フォントや位置、サイズは自由に変更可能です。

開始タイムコードの分割をsplit的な関数作って区切り文字を探して分割させようとしたら、おかしな表示になるのでsubで固定位置で抜いています。
「00:00:00:00」型以外の指定は考慮していないので、時やミリ秒が必要なければ、Write On スライダーを使って前後を削ってください。

Text+ クリップをタイムラインに 配置した時の左端 が time 値「ゼロ」です。
標準の TimeCode 同様、クリップを左に伸ばすとマイナス方向(23時)に伸びます。

区切り文字

区切り文字は「:」と「 」(スペース)を交互に使ってるだけなので、フォントによっては位置ずれします。
区切り文字の字間は空きますが、Advanced Controls の Force Monospaced を 1.0 にすれば位置ずれはしなくなります。
dr004.png
dr005.png
「:」の固定でよければ、最終行を以下に変更してください。

return table.concat(data, ":");
2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1