タイトル: ゲーム内のカメラ映像を保存して再表示する方法
SEOタイトル: UE5 でカメラ映像を保存・再表示(Render Target / Scene Capture / Sequencer / Media Texture)
| この記事の要点 |
|
はじめに
Unreal Engine 5 (UE5) でゲーム内のカメラ映像を保存し、後でゲーム内に再表示する手段はいくつかあります。最も簡単な方法は HighResShot などのスクリーンショット系コマンドですが、それでは動的な映像表現や監視カメラのようなリアルタイム再表示には対応できません。
本記事ではスクショ以外の方法として、Render Target / Sequencer / Media Texture の 3 種を整理します。
用途別の選び方
| やりたいこと | 推奨手段 |
|---|---|
| 監視カメラ / ミラー / ミニマップ (リアルタイム表示) | Render Target + Scene Capture 2D |
| カットシーン / リプレイの録画と再生 | Sequencer + Media Texture |
| 静止画として保存して後で表示 | Render Target を ExportRenderTarget でファイル出力 |
| プレイヤーの操作を記録して再現したい | Replay System (Demo Recording) |
方法 1: Render Target でリアルタイム映像化
Render Target (レンダリングターゲット) は、シーンの映像を書き込むテクスチャです。Scene Capture Component と組み合わせると、特定のカメラ視点をリアルタイムでテクスチャ化できます。監視カメラ、バックミラー、ミニマップなどに最適。
手順
- Render Target の作成
コンテンツブラウザで「右クリック」→「マテリアル&テクスチャ」→「レンダリングターゲット」を選択。解像度は用途に応じて (監視カメラなら 512x512 程度、フルスクリーン映像なら 1920x1080)。 - Scene Capture Component 2D の配置
レベル内のアクター (空のアクターでも可) に「Scene Capture Component 2D」をアタッチし、視点を撮影したい位置・方向に調整。 - Render Target と接続
Scene Capture Component の Details パネル → Texture Target に、作成した Render Target を指定。 - マテリアルの作成
新規マテリアルを作成し、Texture Sample ノードに Render Target を割り当て → BaseColor (または Emissive Color) に接続。 - オブジェクトに適用
監視カメラのモニタ、車のミラーなどのメッシュにこのマテリアルを適用すれば、リアルタイム映像が表示されます。
パフォーマンスの注意
- Scene Capture は毎フレーム描画するため重い。
Capture Every Frameをオフにして必要時のみCaptureSceneを Blueprint で呼ぶ運用が定石 - 解像度を抑える (256 〜 512 程度) と劇的に軽くなる
Always Persist Rendering Stateをオンにしてランタイム品質を安定させる
方法 2: Sequencer で録画 → ムービー出力
UE5 標準の Sequencer はカットシーン作成ツールですが、ゲームプレイの録画にも転用可能です。出力ムービーを後で Media Texture でゲーム内再生する流れになります。
手順
- Sequencer で空の Level Sequence を作成
- プレイヤーのカメラ (Camera Actor) を「+ Track」でトラック追加
- 記録ボタン (赤丸) を押してゲームプレイを開始 → カメラ操作が録画される
- Sequencer の「Render Movie」ボタン → 出力フォーマット (mp4 / avi / image sequence) を選択して書き出し
Media Texture での再生
書き出した動画を再びゲーム内で再生する手順:
- 動画ファイルを File Media Source としてインポート
- 「Media Player」アセットを作成し、再生対象に File Media Source を指定
- 「Media Texture」を作成し、Media Player と関連付け
- マテリアルの Texture Sample に Media Texture を割り当て
- BeginPlay 等で
MediaPlayer->OpenSource()&MediaPlayer->Play()を実行
方法 3: Replay System (オプション)
UE5 には標準で Replay System (Demo Recording) があります。これはゲームプレイの入力やネットワーク差分を保存して、後から完全再現する仕組み。映像ではなくシミュレーション再生なので、視点の自由変更やスローモーションが可能です。
// 記録開始 (C++)
GetWorld()->GetGameInstance()->StartRecordingReplay(
TEXT("MyReplayName"),
TEXT("MyFriendlyName")
);
// 記録停止
GetWorld()->GetGameInstance()->StopRecordingReplay();
// 再生
GetWorld()->GetGameInstance()->PlayReplay(TEXT("MyReplayName"));
FPS や格闘ゲームのリプレイ機能でよく使われる仕組みです。映像ではなく入力ログを保存するため、ファイルサイズが圧倒的に小さいのが特徴。
方法の比較
| 方法 | リアルタイム性 | ファイル保存 | 負荷 |
|---|---|---|---|
| Render Target | ◎ (毎フレーム) | 個別に Export 必要 | 中 (解像度依存) |
| Sequencer + Media | × (録画後再生) | ○ (動画ファイル) | 低 (再生時) |
| Replay System | ○ (シミュレーション) | ○ (差分ログ) | 低 |
応用例
- 監視カメラのモニタ画面: Render Target をテレビ型メッシュに貼る
- 車のサイドミラー: Render Target を平面メッシュに反転して表示
- カットシーンのリプレイ: Sequencer 録画 → ゲームクリア時にプレイバック
- プレイ動画の SNS シェア: Sequencer 出力 mp4 をユーザーがダウンロード
- e スポーツ向けリプレイ: Replay System でフリーカメラ視点での観戦機能
まとめ
UE5 では、単純なスクリーンショット以外にも、Render Target によるリアルタイム表示、Sequencer + Media Texture による動画録画再生、Replay System による入力ベースのリプレイなど、多彩な手段が用意されています。ゲーム体験のどこを残したいかに応じて、最適な手段を選びましょう。