・Unrealのバージョン:5.4 / 5.5 / 5.6 / 5.7
・以下説明:
Media Framework Utilitiesプラグインを有効化し、
「ウィンドウ > バーチャルプロダクション > メディアキャプチャ」ウィンドウに存在する RenderTargetCapture を、Editor Utility Widget から AddRenderTargetCapture ノードを使用して追加しています。
Media Capture Windowを開いている状態では、RenderTargetCaptureは問題なく追加されますが、ウィンドウを閉じている状態では AddRenderTargetCapture を実行しても追加されません。
同一のEditor Utility Widget、同一のパラメータ設定で挙動が変わるため、
AddRenderTargetCapture が Media Capture Window の生成・表示状態に依存しているように見受けられます。
本挙動について、
・仕様として Media Capture Window が開いていることが前提となっているのか
・内部的にウィンドウ(タブ)生成時に初期化されるオブジェクトに依存しているのか
・ウィンドウを閉じた状態でも RenderTargetCapture を追加する正式な方法やAPIが存在するのか
をご教示いただけますでしょうか。
また、Editor Utility Widget から使用する場合の推奨手順や回避策があれば、あわせてご共有いただけると助かります。
[Attachment Removed]
再現手順
Media Framework Utilitiesプラグインを有効化し、
「ウィンドウ > バーチャルプロダクション > メディアキャプチャ」ウィンドウに存在する RenderTargetCapture を、Editor Utility Widget から AddRenderTargetCapture ノードを使用して追加しています。
[Attachment Removed]
ご回答ありがとうございます
こちら解決しましたので、クローズにして頂けると幸いです。
よろしくお願いします。
[Attachment Removed]
t-nikaido1
(t-nikaido1)
4
お世話になっております。
Media Capture ウィジェット(クラスとしては SMediaFrameworkCapture)に機能の実装が直接なされておりますので、使用の前にこれを開いておく必要があります。
UMediaFrameworkCapturePanel に用意された各種関数の内容を見る限り、ウィジェットが開いていない状態では AddRenderTargetCapture 等の呼び出しは何も起こさないということでコーディングの意図通りのようです。
作業のフローを整える手段としては AddRenderTargetCapture 等の呼び出し前にウィジェットを自動的に開くようにすることが考えられますが、それには C++ でのコーディングが必要になるかと思います。
例えば以下のように定義した関数を使用できます。
#if WITH_EDITOR
#include "LevelEditor.h"
#endif
void UMyBlueprintFunctionLibrary::TryOpenMediaCaptureTab()
{
#if WITH_EDITOR
static const FName LevelEditorModuleName("LevelEditor");
static const FName MediaFrameworkUtilitiesApp = FName("MediaFrameworkCaptureCameraViewportApp");
FLevelEditorModule& LevelEditorModule = FModuleManager::LoadModuleChecked<FLevelEditorModule>(LevelEditorModuleName);
TSharedPtr<FTabManager> LevelEditorTabManager = LevelEditorModule.GetLevelEditorTabManager();
LevelEditorTabManager->TryInvokeTab(MediaFrameworkUtilitiesApp);
#endif
}
よろしくお願いいたします。
[Attachment Removed]