Unreal Engine 5を使ってみる その12(Screenshot )
はじめに
今回はUnreal Engine 5(UE5)のスクリーンショットを試してみました。
シミュレーション内で撮影することで、YOLOのデータセットを作成できそうだなと考えています。ようやくUE5のグラフィック処理性能を活かせそうです。
▼以前の記事はこちら
Screenshotを試してみる
エディタでのスクリーンショット
今回試したかったのはゲーム内でのスクリーンショットですが、エディタでもできるとのことで試してみました。
▼エディタでのスクリーンショットについてはこちらに書かれていました。
https://dev.epicgames.com/documentation/en-us/unreal-engine/taking-screenshots-in-unreal-engine
▼エディタ画面左側のメニューから、高解像度スクリーンショットを選択できます。
![](https://404background.com/wp-content/uploads/2024/11/image-102.png)
▼実際にキャプチャしたものがこちら
![](https://404background.com/wp-content/uploads/2024/11/HighresScreenshot00000-2-1024x822.jpg)
プレイヤーの視点で撮影する
ブループリント上でscreen shotと調べるといくつかあったので、試してみました。
▼今回試すのはTake High Res Screenshotです。
![](https://404background.com/wp-content/uploads/2024/10/8663f4479b9d954a0ac567345d184f7c.png)
レベルブループリントで、キーを入力するとScreenshotを実行するようにしてみました。
▼セミコロンを入力すると、testというファイル名で保存するようになっています。
![](https://404background.com/wp-content/uploads/2024/10/image-1.png)
プレイを開始し、キーを入力してみました。
▼右下にファイルの保存先が表示されています。
![](https://404background.com/wp-content/uploads/2024/10/image-1-1024x550.jpg)
▼UE5のuprojectファイルと同じフォルダにある、Saved/Screenshots/WindowsEditorフォルダに画像が保存されていました。
![](https://404background.com/wp-content/uploads/2024/10/image-2.png)
▼実際の画像はこちら。
![](https://404background.com/wp-content/uploads/2024/10/test-1024x747.jpg)
シーン内のカメラで撮影する
シーン内にCineカメラアクタを追加して、そのカメラの視点で撮影してみました。
▼立方体のアイコンをクリックすると、シネマティックの欄にあります。Rig Craneはクレーンのような動きをシミュレーションできるようです。
![](https://404background.com/wp-content/uploads/2024/10/image-185.png)
▼リンゴが映る位置に配置しました。
![](https://404background.com/wp-content/uploads/2024/10/image-186.jpg)
Take High Res ScreenshotにCameraのピンがあったのですが、これにシーン内のカメラを接続しても撮影できませんでした。
▼この状態ではプレイヤーの視点でスクリーンショットされました。
![](https://404background.com/wp-content/uploads/2024/10/image-6.png)
調べていると、フォーラムでSet View Target with Blendと一緒に使っている方がいました。
▼こちらのフォーラムです。
https://forums.unrealengine.com/t/high-res-screenshot-through-camera/146352/4
▼ちなみに、NASAのレポートでもSet View Target with Blendが使われていました。撮影はコマンドで行われているようです。
Preparation of Papers for AIAA Journals
フォーラムのフローとは異なりますが、Set View Target with Blendを追加して試してみました。
▼Targetはプレイヤー、New View Targetはレベル内のカメラにしています。
![](https://404background.com/wp-content/uploads/2024/11/image-72-1024x456.png)
これでカメラの視点で撮影することができました。Blend Timeを変更すると、新しい視点まで移動するようにして切り替わるようになります。
▼撮影されたスクリーンショットはこんな感じ。
![](https://404background.com/wp-content/uploads/2024/11/HighresScreenshot00000-1024x725.jpg)
このままだとカメラの視点になってから戻れないので、キーを離すとプレイヤーの視点に戻すようにしました。
▼Released後のNew View TargetをGet Player Controllerにしています。
![](https://404background.com/wp-content/uploads/2024/11/image-82.png)
実際に操作してみました。
▼プレイヤーの視点から、1秒でカメラの視点に移動しています。
▼動画の動きだと、以下のようなスクリーンショットが撮影されました。
![](https://i0.wp.com/404background.com/wp-content/uploads/2024/11/HighresScreenshot00007-1024x822.jpg?ssl=1)
![](https://i0.wp.com/404background.com/wp-content/uploads/2024/11/HighresScreenshot00000-1-1024x822.jpg?ssl=1)
![](https://i0.wp.com/404background.com/wp-content/uploads/2024/11/HighresScreenshot00001-1024x822.jpg?ssl=1)
![](https://i0.wp.com/404background.com/wp-content/uploads/2024/11/HighresScreenshot00002-1024x822.jpg?ssl=1)
![](https://i0.wp.com/404background.com/wp-content/uploads/2024/11/HighresScreenshot00003-1024x822.jpg?ssl=1)
![](https://i0.wp.com/404background.com/wp-content/uploads/2024/11/HighresScreenshot00004-1024x822.jpg?ssl=1)
![](https://i0.wp.com/404background.com/wp-content/uploads/2024/11/HighresScreenshot00005-1024x822.jpg?ssl=1)
![](https://i0.wp.com/404background.com/wp-content/uploads/2024/11/HighresScreenshot00006-1024x822.jpg?ssl=1)
ファイル名を撮影した時間にする
同じファイル名だと一枚しか保存されないので、時間でファイル名を変更するようにしてみました。
現在の時刻を表すノードとして、UTC Nowというノードがありました。
▼ピンを右クリックすると、分割することができます。年月日時分秒に分かれているので、こちらの方が扱いやすそうです。
![](https://404background.com/wp-content/uploads/2024/10/image-179.png)
![](https://404background.com/wp-content/uploads/2024/10/image-184.png)
これをMake Arrayで作成した配列に入れて、Join String Arrayで文字列として結合しました。
▼ノードは以下のようになりました。
![](https://404background.com/wp-content/uploads/2024/10/image-5.png)
▼なお、Join String ArrayのSeparatorを設定しないままだと、スペース区切りになります。
![](https://404background.com/wp-content/uploads/2024/10/image-180.png)
Separatorにはすでにスペースが入っているので、不要であれば削除してください。
▼ファイル名がおかしい気がするなと思ったら、スペースとハイフンになっていました。
![](https://404background.com/wp-content/uploads/2024/10/image-181.png)
▼ハイフン区切りで保存されました。
![](https://404background.com/wp-content/uploads/2024/10/image-182.png)
UTCは協定世界時で、日本時間ではありません。9時間の時間差があるようなので、足しておきました。
▼オペレータのAddノードを追加しました。
![](https://404background.com/wp-content/uploads/2024/10/a3d9349f8ea18533bec72ff2ac5027c8.png)
▼日本時間で保存されました。
![](https://404background.com/wp-content/uploads/2024/10/image-183.png)
カメラのパラメータ調整
CineCameraActorを見るとレンズやフォーカスの設定があったので調整してみました。
ぼやけているのが気になっていたのですが、Current Apertureを調整するとはっきり映りました。
▼デフォルト値だと以下のようにぼやけています。
![](https://404background.com/wp-content/uploads/2024/10/image-179-3-1024x394.jpg)
▼Current Apertureを22にすると、はっきり映りました。
![](https://404background.com/wp-content/uploads/2024/10/image-179-4-1024x394.jpg)
他にも調整してみました。
▼FilmbackをIMAX 70mmにするとこんな感じ。
![](https://404background.com/wp-content/uploads/2024/10/image-185-1024x513.jpg)
▼レンズ設定を70-200mm Zoom f/2.8にするとこんな感じ。ズームされています。
![](https://404background.com/wp-content/uploads/2024/10/d23cdf64a2bff23f16950a43f7919f7f-1024x426.jpg)
▼FilmbackをSuperの35mmから小さくしていくと、近づいていきました。
![](https://404background.com/wp-content/uploads/2024/10/image-185-2-1024x303.jpg)
![](https://404background.com/wp-content/uploads/2024/10/image-185-1-1024x301.jpg)
![](https://404background.com/wp-content/uploads/2024/10/image-185-3-1024x299.jpg)
最後に
スクリーンショットを撮影してファイルに保存できることを確認したので、Node-REDでその画像を取得し、他のプログラムと一緒に使えそうだなと考えています。
カメラのパラメータを調整できることは分かったのですが、そのパラメータについて詳しくはないので調べる必要がありそうです。
シネマティックの欄にあったCamra Rig CraneとCamera Rig Railはどのような振る舞いで撮影されるのか気になっています。また使い方を調べようと思っています。
▼シーケンサーで利用できるようですね。
https://zenn.dev/tw_trainingcamp/articles/cdabc57a1e2992