
[2.8]コマ数を画面に表示する
スタジオカラーの件で驚いた方もいらっしゃるかと思いますが、アニメに「結構Blender使われてました」案件があるそうです。結構昔から。
そしてこの最近アニメの原画とかたまにTwitterのタイムラインに流れてくることがあります。こんな感じで。
作監は中村さん(@dowagers)にお願いしました。
— 川上雄介 (@kawakami_yu) December 18, 2018
画面が成功してるところは中村さんのおかげです、、、。
ほんとに素敵な絵がいっぱいあって助けられました。
ありがとうございました。#ブラッククローバー#BlackClover pic.twitter.com/Ini4zEbMxe
他にも一部Blenderカットのお手伝いさせていただきました。
— 川上雄介 (@kawakami_yu) December 18, 2018
二原はアニマ・リオン(@LyonSakubuta)ちゃんが拾ってくれました。ありがとうございます。#ブラッククローバー#BlackClover#b3d pic.twitter.com/BwpRbedlSX
Togetterにまとまってますね(実は何気にBlender回)。
まとめの中のツイートの動画にもありますが、動画用紙を取り込んだ感じの動画、そこにコマ数をカウントする形で文字が入っているっていうやつですね。
はい、よいしょー。とりあえずでっち上げてみました。
— MITSUDA Tetsuo (@lab1092) August 13, 2019
右上のところ、文字がコマ数に応じて変わってますよね。これをどうやって実現するか、ってことですね。
特にBlenderの使い方は特に説明しませんが、やったことだけちょちょいと書いておきますね。
仕込み
カメラの枠にメッシュオブジェクトで現画用紙の枠を作ります。あとテキストも適当に配置。位置関係はこんな感じ。
カメラ視点にすると、はい。
テキストオブジェクトも配置しておきます。このオブジェクト名は t_time とします。
みんな大好きPythonの出番
ここでハンドラーを使って画面上のフレーム変化で関数を実行するようにします。
・ Application Handlers (bpy.app.handlers)
テキストエディタのテキストに以下を入力、一度だけ実行します。
import bpy
scene = bpy.context.scene
obj = scene.objects['t_time']
def timecount_text(scene):
cur = scene.frame_current
fps = scene.render.fps
sec ,stp = divmod(cur , fps)
obj.data.body = '{0:03d} ({1:d} {2:03d})'.format(cur,sec,stp)
bpy.app.handlers.frame_change_pre.append(timecount_text)
間違いがないことを確認して[Run Script]ボタンを押します。
特に変わらないですね。では3Dビューに戻ってコマ数を変化させてみましょう。
文字列が変わっていたらOK。登録された関数が実行されて、テキストオブジェクトのテキストが現在のコマ数,(秒数, 秒中のフレーム数) という風に書き換えられていることが確認できます。
もし上記のスクリプトを修正したものを再実行する場合には、Python Interactive Console から、以下の1行を入力して実行。そのあとスクリプトを実行。
bpy.app.handlers.frame_change_pre.clear()
はい、簡単でしょ?(何も説明してないですけど)
See Also:
いいなと思ったら応援しよう!
