この内容は古いバージョンです。最新バージョンを表示するには、戻るボタンを押してください。
バージョン:6
ページ更新者:T
更新日時:2026-06-11 07:12:00

タイトル: カメラに映った画面をスクリーンショットとして保存する方法
SEOタイトル: UE5 スクリーンショット保存 (Scene Capture) 完全ガイド

この記事の要点
  • UE5 で「カメラ映像を画像保存」は SceneCapture2D + RenderTarget + ExportRenderTarget の流れ
  • SceneCapture2D アクタをレベル配置 → UTextureRenderTarget2D アセットを TextureTarget に設定
  • Blueprint Capture Scene ノードで明示キャプチャ、Export Render Target で PNG/EXR 出力
  • HighResShot コンソールコマンドで現在ビューを高解像度キャプチャ(Editor / Game 両対応)
  • 保存先デフォルトは Saved/Screenshots/<Platform>/

3 つの方式比較

方式用途解像度難易度
HighResShot コマンド編集中のスクショ・ゲーム実行中任意倍率
Take Screenshot (BP / C++)ゲーム内ボタン → 撮影画面解像度★★
SceneCapture2D + RenderTarget任意カメラ視点・ミニマップ・サムネ生成RT サイズ任意★★★

方式 1: HighResShot コンソールコマンド

最も簡単。Editor の Viewport またはゲーム実行中のコンソール (~ キー) でコマンド入力:

// 倍率指定 (現在解像度 × 倍率)
HighResShot 4              // 4 倍解像度

// 解像度直接指定
HighResShot 3840x2160      // 4K

// 全画面 (HUD 無し)
HighResShot 1920x1080 hud:0

// 保存場所
// プロジェクト/Saved/Screenshots/Windows/HighresScreenshot00000.png

// HUD 無し・ビネット無し
HighResShot 3840x2160 ShowFlag.OnScreenDebug=0

Blueprint からコマンド実行

// Blueprint: Execute Console Command ノード
// Command 引数に &quot;HighResShot 4&quot; を渡す

// または C++ から
UKismetSystemLibrary::ExecuteConsoleCommand(
    GetWorld(),
    TEXT(&quot;HighResShot 3840x2160&quot;),
    nullptr
);

方式 2: ゲーム内スクリーンショット (Blueprint)

UE5 標準の Blueprint ノードを使った方法:

  1. Blueprint で Take Screenshot または Take High Res Screenshot ノードを追加
  2. FileName パラメータに保存名を指定 (拡張子なしで OK)
  3. 実行 → Saved/Screenshots/ に PNG 保存
// C++ 版
#include &quot;Engine/GameViewportClient.h&quot;
#include &quot;UnrealClient.h&quot;

void UMyGameInstance::TakeScreenshot(const FString&amp; Filename)
{
    FScreenshotRequest::RequestScreenshot(Filename, false, false);
}

// Blueprint Callable で呼べる関数
UFUNCTION(BlueprintCallable, Category = &quot;Screenshot&quot;)
void RequestScreenshot();

方式 3: SceneCapture2D + RenderTarget

「メインカメラとは別の視点」を撮りたい場合の本命。ミニマップ・キャラサムネ・セキュリティカメラ表現で多用します。

手順1: アセット準備

  1. Content Browser で右クリック → Texture > Render Target 作成 (名前: RT_Capture)
  2. Render Target を開いて Size X / Y を 1920×1080 等に設定
  3. Render Target Format: RTF_RGBA8 (通常) / RTF_RGBA16f (HDR)

手順2: SceneCapture2D をレベル配置

  1. Place Actors → Scene Capture 2D をドラッグでレベル配置
  2. Inspector で Texture Target に RT_Capture を割当
  3. FOV / Projection / Capture Source を設定
  4. 「Capture Every Frame」のチェックを必要に応じて操作 (常時撮影 vs 1 回だけ)

手順3: Blueprint で 1 回だけキャプチャして PNG 保存

// CaptureAndSave_BP の擬似コード
// 1. SceneCapture2D の Capture Every Frame を false にしておく
// 2. 撮影タイミングで以下:

// Node: Capture Scene  (Target: SceneCapture2D 参照)
//   → RenderTarget に 1 フレーム分書き込まれる

// Node: Export Render Target
//   Render Target: RT_Capture
//   File Path: &quot;C:/Captures/&quot;  (絶対パス or プロジェクト相対)
//   File Name: &quot;shot_001.png&quot;
//   → PNG として保存される

C++ で同等処理

#include "Kismet/KismetRenderingLibrary.h"
#include "Components/SceneCaptureComponent2D.h"
#include "Engine/TextureRenderTarget2D.h"

void AMyCaptureActor::CaptureAndSave()
{
    if (!SceneCaptureComp || !RenderTarget) return;

    // 1 フレームだけ撮影
    SceneCaptureComp->TextureTarget = RenderTarget;
    SceneCaptureComp->CaptureScene();

    // PNG 出力
    FString FilePath = FPaths::ProjectSavedDir() / TEXT("Captures");
    FString FileName = TEXT("shot_001.png");

    UKismetRenderingLibrary::ExportRenderTarget(
        this,
        RenderTarget,
        FilePath,
        FileName
    );
}

動的に RenderTarget サイズを変更

// 解像度を変えて再キャプチャ
RenderTarget->ResizeTarget(3840, 2160);
SceneCaptureComp->TextureTarget = RenderTarget;
SceneCaptureComp->CaptureScene();

SceneCapture2D の主要パラメータ

パラメータ説明
FOV Angle視野角 (デフォ 90°)
Projection TypePerspective / Orthographic
Capture SourceFinal Color (LDR) / Scene Color HDR / Depth / Normal など
Capture Every Frame毎フレ撮影(重い)
Capture On Movement動いた時だけ撮影
Show FlagsHUD / Postprocess / Volumetric Fog 等の表示制御
Hidden Actors撮影時だけ非表示にするアクタ
Composite ModeOverwrite / Additive / Composite

PNG 以外のフォーマット保存

// EXR (HDR 保存)
UKismetRenderingLibrary::ExportRenderTarget(
    this, RT_HDR, SavePath, TEXT("hdr_capture.exr")
);

// バイナリで取得して任意保存
TArray<uint8> Buffer;
UKismetRenderingLibrary::ConvertRenderTargetToTexture2DEditorOnly(
    this, RenderTarget, OutTexture
);

// JPG 保存(IImageWrapper 経由)
IImageWrapperModule& ImageWrapperModule = FModuleManager::LoadModuleChecked<IImageWrapperModule>(
    FName("ImageWrapper"));
TSharedPtr<IImageWrapper> ImageWrapper = ImageWrapperModule.CreateImageWrapper(EImageFormat::JPEG);
// SetRaw → GetCompressed → SaveArrayToFile
FFileHelper::SaveArrayToFile(JpgData, *FilePath);

サムネイル生成への応用

キャラ選択画面のサムネ、車選択画面の車絵、レベルセレクトのプレビュー画像など、SceneCapture2D + RenderTarget の組み合わせで動的に画像を生成し、Material で UMG (UI) に貼ることで使えます:

// Material: TextureSample に RT_Capture を割当
// UMG Image Widget の Brush の Resource Object に
// その Material インスタンスをセット

// Blueprint で動的に撮影 → UMG に反映
CaptureScene(SceneCapture);
Image->SetBrushFromMaterial(MyMaterialInstance);

保存先パス

方法デフォルト保存先
HighResShot<Project>/Saved/Screenshots/Windows/
Take Screenshot<Project>/Saved/Screenshots/<Platform>/
Export Render Target引数で指定したパス(絶対 or プロジェクト相対)
FFileHelper::SaveArrayToFile任意指定(書き込み権限注意)

パフォーマンス注意

  • SceneCapture2D はシーンを再描画するので非常に重い → 毎フレ撮影は通常 NG
  • 解像度 1080p → 4K で負荷 4 倍
  • 必要な瞬間だけ CaptureScene() を呼ぶ
  • Hidden Actors で関係ないアクタを除外
  • Capture Source は Final Color が一番軽い

FAQ

Q: スクショ撮ったら UI も入ってしまう
A: HighResShot 1920x1080 hud:0 で HUD オフ。または Show Flags で UI を切る。SceneCapture2D は元から UMG を含まない。

Q: PIE (Play In Editor) でしか動かない
A: ExportRenderTargetEditorOnly 版もあり。Standalone Game でも動くノードは Export Render Target (BlueprintCallable) を使うこと。

Q: 透過 PNG が欲しい (背景透過)
A: Render Target Format を RGBA、Capture Source を SceneColor (HDR) with Final Color ではなく Alpha 付きに。シーン側で背景を Translucent Mat で抜く必要あり。