Extending OpenEXR capture to handle sequences

[Apologies for cross-posting - I put this on AnswerHub a few days ago, but no replies yet]

I’d like to implement OpenEXR capture at arbitrary bit-depths for image sequences, so that Matinee can output higher bit-depth layers for later compositing.

What is the best way to go about doing this? The HighRes Screenshot code in 4.5 seems to be triggered in quite a different way to that for, say, PNG outputs in Matinee. I’m currently unclear about whether to set a global from Matinee that causes the HighRes Screenshot code to trigger, or whether to create another sequence handler like that for PNG (or maybe AVI) in Matinee.

Any advice?

thanks!

Open EXR is actually already in the engine. The document for it just got updated and you can find it here.

Let us know if you have any more questions.

Hi ,

thanks for the reply - my understanding however is that the existing OpenEXR output is only for capturing single screenshots. What I want is to output an entire image sequence of EXR files, just as Matinee already does for PNGs. I’m really asking about how to extend the existing EXR code to do that :slight_smile:

Just so I have a little more information here, why do you want to export them out as a movie and not just a sequence of images? In most cases, that I have come across, the people doing the compositing would rather have a series of still images rather than a movie to work from. This is for a number of reason like never having to worry about a corrupted video file or the ability to only affect a certain element of the video without having to re-shoot the entire thing.

Also most workflows when dealing with OpenEXR work around using images and not videos to store the render passes. This is because it is much easier and more efficient to render out each pass in an image instead of a video. This is because If you were to do this in a video you would have to do some crazy packing in order to store all the information that is exported. Also I am not 100% sure if the data that you export into a movie will still be the same as you might end up losing some of the information that you are trying to get because you have to compress and save the data into a video format also because of how much information is exported the video might become so massive it might not play.

So after all of that if you still want to go this route, I would look into the code that currently outputs movies from Matinee. Once you find that it is just a matter of having it output in a different format. However this part could end up being more trouble than it’s worth because the OpenEXR format is really not meant to be used to store information in a replayable video file as it was designed to be used with single images that are worked on and then saved to another format.

Hi :slight_smile:

You’ve just nailed exactly what I’m looking to do: output a series of images. So I’d like to create an option in Matinee exactly like the PNG output option, except that the new option would create a set of EXR images per frame, and at a bit-rate that I can specify.

So yes: it’s exactly a sequence of images I want to create, not a movie. Essentially I want the equivalent of doing an OpenEXR screenshot for each frame in a Matinee sequence. But how best to achieve this??

I can see that I could achieve some of this with postprocessing materials, but I cannot see how to get higher bit-rate outputs from Matinee, when HandleScreenshotCaptured() only sees an 8-bit input. On the other hand, FHighResScreenshotConfig::SaveImage() seems to be triggered in a way that is completely different to the capture in Matinee. Any advice greatfully received!

thanks,

I am so sorry I misunderstood your first question, the italics on image sequence for some reason made me oblivious to the fact that you were pointing out that you **Wanted **an image sequence and for some reason that made me think you wanted a movie. I am now asking around and seeing what info I can get for you about how to go about doing that. Will past back as soon as I have some detailed information for you. Again sorry about my confusion on the question.

Hiya,

no problem at all, and thanks for taking time to ask around :slight_smile:

You can try modifying the source code where its handling the matinee sequences and replace or add TakeHighScreenShot function. You can look into “ProcessScreenShot” function inside “GameViewportClient.cpp” file.

Thanks,

Have you found anyone around ? Almost a year passed :smiley: :smiley: Still no news about EXR sequence :frowning:

I’m looking for the same solution. I’m trying to use UE as a renderer for cinematic output, which mean I want a stream of EXR frames. I made a blueprint which will save HSSRT EXRs, but how to snap a frame 24 or 30 times per second is the question that remains for me. It doesn’t have to be realtime, as long as it is capturing at that rate for playback in post production. I’d give my left nut for this solution, otherwise, I may have to abandon Unreal, which would be sad.

-Sterling

Has anyone found out about this. This is highly essential for filmmaking.

I really need this as well. I would like to do some things with Unreal that just aren’t possible if I can’t get an EXR image sequence exported at a desired frame rate.

Is there any solution yet?

Only starting research today I got to the point of being able to take screenshot each frame in a matinee, but only as png. I found a post in the answerhub where a dev said that they would try implementing a consolecommand for EXR screens but the post has been inactive for far over a year now and I can’t find anything else on the topic.

I’ve been looking into the code and tried using commands such as “HighResShot 1920x1080 -CaptureHDR -IncludeBufferVisTargets” or “TakeHighResScreenshot(CaptureHDR, IncludeBufferVisTargets)” but nothing seems to work.

Would love to hear something new and/or a solution!

I think I might have found a much easier solution than I thought I would find.

I’ve heard from a friend of mine who works at Epic in the blueprint department that there is supposed to be a plugin to enable taking HighResShots in exr format via console which I didn’t find and couldn’t find any documentation about.

I’ve read about altering the code but even if I did that I would still not know how to make the engine take screenshots in the right format.

As someone told me it would work that way I tried getting into the sequencer but…stopped, because

Now after 2 days of research I found the simplest solution. In the Matinee. Clicking on the Movie icon in the top right corner you can choose “Custom Render Passes”. Now a bit further down in the options you can check the box for “HDR” which will produce EXRs for every frame. You can add all the tracks you want or need in another drop down menu.

I must say I feel a bit dumb, posting in years old threads and questions in the forum and the answer hub to find the sultion to be that simple.

I hope, even though it comes late, that this is helpfull to you.