BLOGブログ

2016.12.27UE4UE/ 建築向け

[UE4]BPで、HUD込みのスクリーンショットを取る方法

みなさん、こんにちは!

本日は、建築プレゼン用等でUE4を用いた時に、

BPでHUD込みのスクリーンショットを取る方法のお話です。

 

□スクリーンショットを取る方法

スクリーンショットを取る方法はいくつかあり、

公式ドキュメントや、弊社ブログにも載っています。

○公式ドキュメント

https://docs.unrealengine.com/latest/JPN/Engine/Basics/Screenshots/index.html

○弊社ブログ

https://historia.co.jp/archives/3478

今回は、スクリーンショットをさらにBPを用いて使ってみます。

 

□BPでスクリーンショットをとってみる

 

今回は、例として建築ビジュアライゼーションで、

ウォークスルー用に作成したマップを想定して進めてみます。

同じマップは、UE4サンプルのRealisticRendering内にありますので、ダウンロードできます。

start

さらに、プロジェクトの中で、プレゼン資料に用いるHUDを作ってみます。

present

準備ができましたので、スクリーンショットを取ってみます。

公式ドキュメントに、コンソールコマンドを用いてスクリーンショットをとる方法がのっていますので、

こちらをBPのExecute Console Commandを用いて、実行してみます。

consoleshot

今回はTボタンを押すと、スクリーンショットが取られます。

すると、HUDが無視されて、ビューポート内の映像がそのまま保存されてしまいます。

screen1

どうやら、Execute Console Commandノードを用いてスクリーンショットを取ると、

HUDが無視されてしまうようです。

せっかく作成したHUDを取れなくては、苦労のかいがありません。

この問題はC++を用いて作成したBPノードで、解決することができます。

 

□C++で関数を作成する

C++で、適当なクラスを作成し、スクリーンショットをHUD込みでとる関数を作成します。

記述は下記の通りになります。

実装部5行目の、FString filename内で指定している /Saved/Screenshots/ 

で指定したプロジェクト内のパスへ、スクリーンショットが保存されます。

 

save

 

□ScreenShotノードを使ってみる

今回はActorクラスを用いて作成したので、まずマップ上にScreenShotクラスをドラッグします。

insert2

すると、作成したScreenShotクラスを使えるようになります。

次に、作成したScreenShotノードを、先程のExecute Console Commandを用いた処理に

置き換えます。

newscreenshot

FileNameに、保存時の名称を記入し、

Show UIにチェックをいれて、Tボタンを押してみます。

present

無事にスクリーンショットが保存されました。

また、C++でのプロジェクトの作成方法も、公式ドキュメントや、

弊社ブログでも紹介されています。

○公式ドキュメント

https://docs.unrealengine.com/latest/JPN/Programming/Introduction/index.html

○弊社ブログ

https://historia.co.jp/archives/282

 

スクリーンショット機能を使って、建築プレゼン等で、

動画、ウォークスルーだけでなく、UE4をフル活用してみましょう!

 

追記(12/28)

今回のブログで扱った内容を、プラグインとして公開しました。
下記アドレスに置いてありますので、ご活用ください!

https://github.com/historia-Inc/Blog_CaptureScreenShot