以下の内容はhttps://pafuhana1213.hatenablog.com/entry/2017/07/08/005631より取得しました。


Texture2D / RenderTargetを指定のフォルダに出力する方法について


とあるハッカソンで画像出力を実装したかったので調査のついでに記事を書いたり

はじめに

UE4.13でExportTexture2D / ExportRenderTargetノードが追加されました。

この機能を使うことで、ゲーム中にSceneCapture2Dでキャプチャした結果を出力できたりします。スクリーンショット機能自体は既に標準で用意されていますが、画面上の絵とは別の絵(例えばゲーム中のキャラクタが取った写真)を出力したい場合はこの機能が有用です。(ちなみに標準のスクリーンショット機能については以下の記事で解説してます)
pafuhana1213.hatenablog.com


出力自体はかんたんなのですが、問題はノードの引数にあるFile Pathです。

※ 2017/07/08/1:30 追記
ExportRenderTargetで出力されるファイルは.hdr形式です
。その為、標準のビューワーではおそらく開けません。UE4上のコードで一般的な画像に変換できないか、分かり次第追加します

FilePathの指定内容による出力先の変化

FilePathに何も指定しない場合

[使用しているエンジンのインストール先]\Engine\Binaries\Win64\test.hdr

FilePathにパスを指定した場合

D:\TEST\test.hdr
(指定したパスにフォルダが無い場合はフォルダが自動生成される)


これはこれで便利なのですが…大抵の方は、そのプロジェクトやパッケージ内の指定フォルダに出力させたいかと思います。

プロジェクト / パッケージの特定のフォルダに出力するには

FPathsクラスで用意されている関数を使うことで、そのフォルダのパスを取得することができます。
FPaths | Unreal Engine 5.4 Documentation | Epic Developer Community
A new, community-hosted Unreal Engine Wiki - Announcements - Epic Developer Community Forums

残念ながらBPからこれらの関数を使うことが出来ないため、C++コードを書く必要があります。例えばこんな感じ。

h

#pragma once

#include "CoreMinimal.h"
#include "Kismet/BlueprintFunctionLibrary.h"
#include "OkazuBlueprintFunctionLibrary.generated.h"

UCLASS()
class GIRLFRIENDX_API UOkazuBlueprintFunctionLibrary : public UBlueprintFunctionLibrary
{
	GENERATED_BODY()

	UFUNCTION(BlueprintCallable)
	static FString 	GetGameSavedDir();
};

cpp

#include "OkazuBlueprintFunctionLibrary.h"
#include "Misc/Paths.h"

FString UOkazuBlueprintFunctionLibrary::GetGameSavedDir()
{
	return FPaths::GameSavedDir();
}

この例だと、プロジェクトのSaveフォルダにRenderTargetが出力されます。

最後に

最近は独自のスクリーンショット機能がついたゲームがとても多いです。是非この出力機能を使ってそういったシステムを実装してみて下さい!


おわり




以上の内容はhttps://pafuhana1213.hatenablog.com/entry/2017/07/08/005631より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14