5
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

MovieRenderQueue使用時に字幕やらウォーターマークを出す

Last updated at Posted at 2023-12-09

はじめに

これは、「Unreal Engine (UE) Advent Calendar 2023」その4の10日目の記事になります。

さて。

字幕を出す

ムービー書き出しで字幕を出す

Unreal Engineのムービー書き出しで字幕を出そうと思えば、UMGで文字を書いておいて表示させておく、という方法で出すことができます。

image.png
image.png
image.png

(OnCreateでは出なかったので、イベントで出す)

image.png

字幕を表示させる時はこんな指定。
これで、 ムービーシーンのキャプチャ(レガシー) では問題なく字幕が出ます。

Movie Render Queue

MRQでもやってみます。

image.png

こーゆー設定で書き出すと、

image.png

こーゆーブサイクな結果に。

NewLevelSequence.0048.png

なんと、出力に字幕は出てません。
おーまいがー。

UIレンダラ

どうやらWidgetで表示しているものをMRQの動画内に含めるにはもうひと手間、 UIレンダラ の設定を入れる必要が。
先の設定だと、とりあえず追加するだけ。こう。

image.png

image.png

変わらずブサイクに出てる!?

NewLevelSequence.0030.png

でも動画にも出てる!

これであとはイベントとかでWidget内の情報を書き換えれば字幕の変更とかもおっけー。

ウォーターマーク

基本、 ムービーシーンのキャプチャ(レガシー) は想定外で。
MRQの出力に、UMG以外でウォーターマークを入れてみます。

バーンイン

バーンインは時間やフレーム数など、編集に必要な情報を含める…んだと思います。
(正直、そこまで必要に迫られたことがないので…)

image.png

レガシー でバーンインを行ったのが上記。
上下に何やら文字が出ています。
MRQだと、それも設定項目の一つになっています。

image.png

設定を見ると、 ウィジェット設定Burn in Class でWidgetの指定ができるようになっています。

image.png
image.png

そこで、こういうWidgetを作って。
ポイントとしては、親クラスを MoviePipelineBurnInWidget にすること。
すると、MRQのバーンインの設定でWidgetを選ぶことができるようになります。

image.png
NewLevelSequence.0048.png

ウォーターマークになりました!
しかも、オンオフは設定画面中の黄色いスイッチでできます。
便利ですね。

ただこれ、バーンイン用の設定なので、Widget表示をシーケンスのイベントなどでオンオフしたり、文字を変えたりとかのインタラクティブなことができません。
MoviePipelineBurnInWidget のメソッドでバーンイン用の経過時間とか、フレーム数とかは入手して書き換えなどはできます。
(凝ったことをやってやればできますが…)

最後に

感謝

実はWidgetで字幕を入れるというのはForumの「シーケンサーで字幕を入れたい」が元ネタです。
とっっっっっても 助かりました。(五体投地)

感激

書いているときに見かけたのですが。
@suramaru517様のUnreal Engine (UE) Advent Calendar 2023 シリーズ1の5日目「【UE5】ウィジェットを画像として出力する(プラグイン配布あり)」は、上記MRQの設定を使うとpngで連番出力されるので、シーケンサーとBPと設定だけで同じようなことができてしまいます…。
ソースを読むと、内部で同じことをやっているのがわかります。

ただ、フォントが少し小さくなるんですよねぇ。
なので、そこら辺を考えると、@suramaru517様のアプローチは正解なのだと…。

プラグインソース

そこでそのソースですが、Visual Studioに持って行った時の
\Engine\UE5\Plugins\MovieScene\MovieRenderPipeline\Source\MovieRenderPipelineSettings
にあり、それぞれ下記がソースになります。

UI レンダラ

\Public\MoviePipelineWidgetRenderSetting.h
\Private\MoviePipelineWidgetRenderSetting.cpp

バーンイン

\Public\MoviePipelineBurnInSetting.h
\Private\MoviePipelineBurnInSetting.cpp

残念なこと

この記事を作る際に、ウォーターマークのところを使ってWidgetをレイヤーっぽく複数表示できないか、と画策してみました。
(ロゴマークとウォーターマークという感じで)

上記バーンインのクラスを継承させて複数持てないか、と思ったのですが…。
コンストラクタがprivateなので継承は無理、っぽく。
ソースを丸々持ってきて複製するほうが楽そうなので諦めました。

5
0
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
5
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?