ScreenCapture2D snapshot with Post Process/Blendables?

According to other AnswerHub posts and Bug Reports, using a ScreenCapture2D component along with Post Processing/Blendables and the setting “Capture Every Frame” set to false is not possible at this point.

What I’m trying to do is capturing something different from what the player sees, to create some sort of Ghost camera feature. Certain static meshes have features on them which are not rendered in the player camera (such as Vertex Colors or other things that are cancelled out/hidden using materials), but would appear using Post Processing on the Render Target.

This works just fine with “Capture Every Frame” set to true, but the intent is to have the player take a picture of something, and only then the given feature is visible (or otherwise put into a Render Target which can then be processed further).

With 4.8p2, there are nice updates to ScreenCapture components (such as the “Update Content” node that lets you take a snapshot right now, instead of the old “wiggle the component around to make it update” way). However, Post Processing still isn’t applied for “Capture Every Frame” being false - even temporarily setting it to true doesn’t work for the Texture.

Has anyone by chance found a way to get this worked around, or maybe some ETA on when we’ll see this feature implemented (or “fixed”)?

~ BhaaL

Have you found a solution to this? I’m in a similar situation. 4.9 looks like it’s got new blendable features but I’m not sure they’ll fix this specific problem.

Haven’t had the time to try out the 4.9 build, but as far as I’ve read I believe this only lets you blend between multiple post processes based on a weight. Not sure if this also includes the “Capture Every Frame = false” case.

Yeah looks like it. Rama’s BP plugin actually has a “save scene capture to disk” feature, and a way to load files from disk, so I’m gonna try that.

Actually, I just found a solution from something mentioned in a related post.

If you simply Deactivate the SceneCapture2D instead of turning off Capture Every Frame, your RenderTexture will keep the last frame, with the Post Process/Blendables intact.

So just leave Capture Every Frame on, and when you want to “take your screenshot”, just deactivate the SceneCapture.

Awesome, didn’t try that before - but it actually works like that:

  1. Set “Auto Activate” to false
  2. (optionally) Set “Capture Every Frame” to false
  3. Wait for the event to happen that should get a capture
  4. (optionally, depending on 2.) Set “Capture Every Frame” to true
  5. Call “Activate” on the Scene Capture
  6. Call “Update Content” on the Scene Capture (probably required since it wasn’t active before).
  7. Call “Deactivate” on the Scene Capture (since we only care for a snapshot)
  8. don’t do that Set “Capture Every Frame” to false

Edit: Step 8 must not be done, otherwise the result is the same as before…

I can’t accept that comment as answer; but if you re-post it as such, I’ll accept it so you can get the Karma for it.

Thanks,
~ BhaaL

  1. Set “Auto Activate” to false

  2. (optionally) Set “Capture Every Frame” to false

  3. Wait for the event to happen that should get a capture

  4. (optionally, depending on 2.) Set “Capture Every Frame” to true

  5. Call “Activate” on the Scene Capture

  6. Call “Update Content” on the Scene Capture (probably required since it wasn’t active before).

  7. Call “Deactivate” on the Scene Capture (since we only care for a snapshot)