I have a use case for UE4, where I need to capture vehicle lights by night at a distance of 1000 m on images with a resolution of approx. 1200x1000 pixels.
I set up some neat vehicle light objects including spot lights and an emissive body and I get a fairly realistic bloom behaviour etc. pp. at close range. Unfortunately, my emissive objects disappear as soon as their screen size is to small to be captured by my screen resolution.
I was able to increase this distance up to 700 m by massive supersampling with 6000x5000 px and then resampling to 1200x1000 px. Of course this is not feasible for real time rendering, which is painful but I can deal with it. The bigger problem is that I run into hardware limitations, so I need to find a different way.
I thought of two possible solutions:
Is there a way to force bloom rendering of emissive objects independent of their screen size and capturing by the camera?
As a workaround I would try to scale the emissive object based on its distance to my camera to make sure that it always affects at least a single pixel. Any recommendation on a good approach for this?
Of course I’d be happy to hear about other solutions from you.
See if you can activate Never Distance Cull on the object
When enabled, this object will not be culled by distance. It is also ignored if it’s a child of a Hierarchical Level of Detail (HLOD) mesh.
Hi and thank you for your reply!
I’m afraid culling is not the issue here.
In fact, at a distance of 1600 m I do see my headlights at full hd image resolution, mainly due to their bloom effect.
With decreasing distance (approx at 1500…1400 m), the headlights start to disappear and reappear for a few frames at first, then vanish completely.
They become visible again constantly at and below 400 m. I can increase this 400 m threshold to 700 m by using higher res.
I wonder what happens to the headlights between 1500 m and 700 m, when I can see them at 1600 m. My assumption was, that they “vanish” between pixels and are not rendered at all, which also unrenders their bloom.
Do a mesh swap or just add an additional mesh that is only visible at high distances, and have it scale based on distance so that it is always visible.
I have already done that and it works, but then I also see the object itself at this distance and not only the bloom, which is fairly unrealistic. I also tried increasing the bloom size according to distance, but that won’t show when the object is not rendered…
My task is a rather scientific one and not exactly gaming-related, so I can’t just go ahead and give a sh*t.
I don’t understand what this means? If you use an appropriate mesh it should look indistinguishable, which shouldn’t be difficult given the thing is only a few pixels.
You could try messing with volumetric lighting which could make the light appear at a distance in the way you want, if you mess with that keep in mind there might be a distance limitation for that as well, though you could also fake it with like people used to using a cone shaped mesh going out from the light, there’s examples of materials for that kind of faked effect if you do a search.
Otherwise, I think what you would need to do is force the size change by camera distance, I would imagine that’s what GTAV does to get that cars in the distance look.
Does it even need to be an emissive material?
What if you set up a spotlight and have it always render?
Assuming there’s things to light visible around the area, you should get some kind of effect in camera.
Otherwise the tip to use a cone is the best bet. You are essentially simulating some kind of atmosphere at a distance.
Assuming it’s just not as simple as turning off / fixing the exposure levels.