I have a main exterior ‘persistent level’ map that uses a streaming volume to load a room with some shiny objects.
I am expecting the shiny objects to reflect the walls and floor of the room but they do not.
Instead, when the room map is loaded (streamed in) the shiny objects reflect the grass and sky of the main exterior persistent map.
I have tried:
-rebuilding reflection objects
-using the sphere reflection capture in the room (interior) map only
-using the sphere reflection capture in the persistent (exterior) map only
-using a reflection capture with a small radius that fits inside the room
-using a box reflection capture inside the room
None of the above result in the reflection capture reflecting the wall and floor on the shiny objects.
Is there a way to get the correct reflection on the interior map shiny objects?
( Note: setting the reflection capture to a ‘static cube map’ does not resolve the issue.
It will blend the dynamic grass/sky reflection with the static cubemap image.)
One thing you have to know is sphere reflection capture does not update in runtime, it’s reflecting based on your lightmap builds. Only planar relfection can update reflection per-frame in real time.
If you want to force updating relfection in runtime, but not per-frame, there is a way, first of all,
Your preset should be:
Sphere reflection capture components should be placed in the presistent level
You had your room level’s lightmap built in a lighting scenario.
The main idea
Reflection capture will only update on these particular cases:
When loading in a lighting scenario
When loading itself into a level via streaming (not recommanded, will cause lag for few secs)
When console command “r.reflectionCapture” is executed
Personally I recommand you storing lightmap into lighting scenarios, it will give you better control of it. So when you’re ready,
…and all you have to do is:
When starting game, presistent level loaded
load in your room level and the lighting scenario of it
When something still turns out wrong (which it shouldn’t unless your engine version is old), you may try the “r.reflectionCapture” command to manually recapture reflections.
At this point you might though “well, how about the grasses? they’re not baked, but still reflected”. That’s because for dynamic objects unreal uses ScreenSpaceReflection (SSR) to capture it and blend into the current REFL captures. It won’t be an issue if you set up properly, but for some reason if you want to disable it, use PostProccessVolumes and check the ScreenSpaceReflection Intensity and set it to 0, this will disable it totally.