Hi all,
Currently working on a game that is using legacy (non-Lumen) lightning. Our reflection method is Screenspace, lighting is entirely Movable.
Back in the day in UE4 we would throw down SphereReflectionCapture actors all over the level, do Build -> Build Reflection Captures, and we’d have nice fallback reflection data for when screenspace was unavailable, or at least that’s how I’m remembering it. I can no longer get SphereReflectionCapture actors to work when set to “Captured Scene.” Instead, the reflection data is based only on the reflection data generated by the SkyLight in the scene, and not the SphereReflectionCapture actor that’s present in the room.
The only way I can get the correct behavior is by manually assigning a cubemap to the SphereReflectionCapture.
(The solution would be to write a tool that would manually generate cubemaps and assign them to the SphereReflectionCaptures but this seems like a bad idea.)
Force No Precomputed Lighting is OFF under World Settings and Allow Static Lighting is ON under Project settings.
I’ve included shots of the issue.
Thanks! Looking forward to having less wonky reflections, hopefully.
All best --
Colin
[Image Removed]
Steps to Reproduce
Turn off lumen, turn off screenspace reflection, turn off raytracing. Put a fully metallic sphere in a scene. Add a Movable skylight to the scene. Place a SphereReflectionCapture next to the sphere with a large radius, and move the Skylight to another area.
Build Reflection Captures.
The reflection in the sphere will be that captured from the position of the skylight and not the SphereReflectionCapture actor in its range.
Hi, thanks for the clear repro steps, settings, and images! The reflection capture process that you outlined still works in UE5.
To double-check, I put together a new 5.4 Third Person Template scene following your repro notes, and was able to get a correct reflection capture on a shiny metallic sphere.
I was able to reproduce the issue in the StarterMap (which is what it looks like you’re using in the attached pictures). I placed the reflection capture and the shiny metallic sphere in similar locations, and set the Influence Radius to be rather large compared to all the others in the scene (~4000). With this setup, I saw the issue you posted about. Removing the other reflection captures from the scene, and/or making the radius smaller, seems to fix it.
For now, your best bet is to tinker with the reflection capture radii and overlaps in your scene. I’m going to dig into this issue a bit more, but I wanted to at least confirm that the workflow is supported and what seems to affect it at the moment.
I hope that helps!
Hi Kay,
Thanks so much for digging into this. I’ve tried removing all other Sphere Reflection Capture actors except for the one, and making the influence radius a bunch of different sizes (10k down to 500), rebuilding, and still am having no luck; tried simulating / playing (i think this is the first-person template) as well.
I’ve zipped up the project (vanilla 5.4) for reference here, I am hoping that I am simply doing something unbelievably stupid in my setup that would negate this from working.
Colin
Thanks for sending over the repro project; the issue was present. I was able to solve it by deleting that Sky Light, then building reflections, saving, and adding a new Sky Light into the scene. Subsequent reflection captures built properly after that! There might have been an incompatible setting on that specific Sky Light asset, although I haven’t gone back to try and track down exactly what it was. Here’s hoping that does the trick for you, too!
Thanks for checking this out. We were able to get things working by removing the skylight and adding a new one, but the bad behavior came back and the skylight kept hijacking the probes with a scene capture from the position of the skylight, overwriting it at random times (play in editor start, post-“Build Reflection Captures”, etc) regardless of probe size.
As a last minute hack I tried generating individual HDR and LDR cubemaps and assigning those to the SphereReflectionActors, which looked fine in editor, but immediately got hijacked by the skylight once we started playing the game. (In the actual project we’re working on it’s far worse, as there’s a lot of difference between lighting in bright/dark rooms, and metallic objects in dark rooms are blasting out the reflection from the position of where the Skylight is positioned).
I’m not sure what the solution here is aside from just not using a skylight; I can only surmise that at some point it’s performing a scene capture itself and just overwriting everything.
Thanks for the follow-up info. At the moment, working around this issues is probably your best bet; something like hiding or removing the skylight, building reflections, and then adding a fresh skylight back in. Not ideal, I realize.
I looked into this a bit more, and it seems like there were similar issues in 4.26/27 and an early version of UE5, but they’ve since been marked as resolved.
By any chance, was this project converted from an older version of the engine to 5.4? Are you able to recreate this in a fresh 5.4 project? And, are you considering upgrading the engine to 5.5 or 5.6?
I’ve been able to recreate this from scratch in a fresh 5.4 project. Our current game went from 5.2-5.4 and exhibits the same behavior. I think I’m just going to wind up fudging reflections in the material with a cubemap, which is super gross but I don’t see any other ways around this. (I’ve heard from a coworker that reflection captures have been incompatible with realtime lighting since UE4 and shouldn’t be used…? Hmm.)
That’s very helpful to know, thanks for the update -- I realize the workaround isn’t ideal by any means.
In the fresh 5.4 repro project you made, was the issue only present in the 5.4 Starter Content scene, or in other levels as well?
Does this behavior crop up for you in 5.6, too? I tried to repro on my end in the latest version, and wasn’t able to trigger the issue.
Edit: Here’s the public issue link: Unreal Engine Issues and Bug Tracker (UE\-295460)