I’m developing a C++ plugin for Unreal Engine 5.x designed to export custom metadata (JSON) for every frame rendered via Movie Render Queue (MRQ).
I am trying to capture frame data by overriding OnReceiveImageDataImpl, but I’ve encountered two main issues:
-
Inheritance Conflict: If I inherit from
UMoviePipelineOutputSetting, the compiler throws an error stating thatOnReceiveImageDataImplmarked ‘override’ does not override any member functions. -
Header Visibility: If I try to inherit from
UMoviePipelineImageSequenceOutputBase(which seems to be the correct parent for per-frame data), the compiler cannot find the header#include "MoviePipelineImageSequenceOutputBase.h"even though I have added the necessary modules to myBuild.cs.
My current setup:
-
Plugin Dependencies (.uplugin):
JSON
"Plugins": [ { "Name": "MovieRenderPipeline", "Enabled": true } ] -
Module Dependencies (.Build.cs):
C#
PublicDependencyModuleNames.AddRange(new string[] { "Core", "CoreUObject", "Engine", "MovieRenderPipelineCore", "MovieRenderPipelineRenderPasses", "Json", "JsonUtilities" });
The Error: MoviePipelineJsonDataset.h: 'OnReceiveImageDataImpl' marked 'override' but does not override any member functions.
Question: What is the correct base class to use in UE5 for a custom MRQ setting that needs to access FMoviePipelineMergerOutputFrame for every rendered frame? And why might the MovieRenderPipelineRenderPasses headers be invisible to my plugin despite the module being included?
Any help or code snippets for a working boilerplate would be greatly appreciated!