Lighting Setup for Exterior and Exterior+Interior?

Okay, guys, I am a self-taught 3D artist working in 3DS Max only. I started learning UE4 last year for archviz purpose using Unreal courses and youtube and blogs. I am comfortable doing scenes where the character stays inside the house but I had never done a scene with exterior only or exterior+interior.
I usually use static skylight and stationery sun or interior scenes and I get good results.

Last week I started working on a test project with an exterior+interior and used the same setup. A static skylight and stationery sun but it didn’t look great. The interiors looked fine but the outside is overexposed and the foliage doesn’t merge with the rest of the scene. What do you guys use for exterior only scene and exterior+interior scenes to achieve photorealistic results?

I would also like to tell that most of the time I use downloaded furniture and props from 3dsky, evermotion, cgaxis and all. But there are times when the downloaded model gives artifacts. How should I make it ready for an artifact-free quality in Unreal?

I suggest trying dynamic lighting for one or the other, or both, skylight and directional. But if you want to remain using static / stationary for exterior and ext-int combo, then delve into how to create materials that are properly created for it. Stationary lighting has a number of bugs or errors often seen in exterior scenes and other scenes where exterior lighting heavily influences interior lighting. Light portals, lightmass importance volume, the volumetric lightmap, and distance field methods are all a part of producing photorealistic results for exterior + interior scenes, and exterior only (except for light portals probably). Are you utilizing ray tracing in any scenes, intending to use it? If so, materials design is important for speed / quality (there’s the RayTracingQualitySwitchReplace node), yet it has limitations in the area of reflections and translucency sometimes. One of the issues with exterior or combination E/I scenes is the light bounces off the bottom hemisphere (with a skysphere present) and causes brightening of the undersides of geometry and with other wrong settings (such as Exposure) could result in overexposed / too much lighting in the scene overall. A setting that counteracts it is “Lower Hemisphere is Solid Color” and the color to black (other colors besides greyscale produce a transfer of the color to surfaces). Another thing that contributes to problems is incorrect World Lightmass settings, even for static / stationary lights only. Less bounces for the directional and skylight is actually capable of better results, and modifying post process volume settings (with one set to Unbound) is useful for adjusting the current settings of those two light types via Exposure, Global Illumination, and Lens (Toe, Shoulder, etc).

As far as downloaded models, what are the files’ types? FBX needs certain import settings to avoid artifacts, such as enabling ‘Convert Scene to Unreal’s coordinates’, ‘Force front x-axis’, and ‘Convert from FBX to Unreal units’. High Precision Tangent Basis and Full Precision UVs are two other settings to enable for meshes on Import or in the mesh-editor, along with the project setting “High Precision Normals” (GBuffer Format located under Rendering Project Settings). They’re suggested for quality reflections, but also can fix artifacts of imported meshes. Some models have better results when the normals are imported rather than created in Unreal, while others need to be created in Unreal, and tangents too. One thing to consider is how the coordinate systems differ between Unreal and external applications. Resolution of models from the external app is another one. If a model is at a high resolution coming from 3DSMax, and in Unreal it’s set at a default of a lower resolution, then it’s getting downsampled, and is likely losing accuracy / quality (similar to compression loss). So, try to ensure the resolution in the external app is medium level, then in Unreal increase it to get the results according to Unreal’s calculation of the model’s resolution and thus, its shading. I read somewhere that it’s usually best to get an upsample than it is to get a downsample.

A few settings to use when encountering pixelation and inaccuracies in lighting / shadowing:

Shadow Resolution (in the directional light, goes from 0 -8)
Shadow Bias
Shadow Slope Bias
Dynamic Inset Shadow (with stationary and movable lights)
Ensuring lightmaps are in the correct lighting channels (1 and 2, since 0 is usually for texture maps) and those lighting channels are enabled in the lights and meshes
Two-sided is enabled (or disabled, depending on the model / materials and its place in the scene) in materials, meshes, and for lighting and shadowing

First there is nothing wrong with using a static skylight and a stationary sunlight. You definitely are going to use 2 post process volumes. Have one unbound at the outside and then another one encompassing the interior space. Give the interior a higher priority. Any setting in the interior will overwrite the exterior volume once the CAMERA IS INSIDE the interior volume. You most likely need to increase the exposure for the inside area.

In the stationary sunlight’s Cascaded Shadow Maps section set the dynamic shadow distance to something like 2000 (20m) to have crisp and moving shadows from trees for nearby objects. You can also tweak the other values in that section.

Foliage objects can be a problem. There are usually a lot of them and they can take forever to build lighting or even crash lightmass. You need to disable static shadow for grass and reduce the lightmap sizes for most foliage actors. Do that in the settings within the foliage actor and not in the static mesh properties.

Once you disabled static shadows for some of the foliage you will need to use distance field shadows for those trees, etc to have some kind of blob shadow for further away bushes and trees. Distance field shadows need to be activated in the project settings and require an editor restart. They look fairly good in the distance. Not so great near by but near by you will have the stationary sunlights high quality shadows.

Well. As those assets are not really made for unreal you would need to do a bit of work on them. For static lighting the biggest challenge will be getting a good light map for them. Unreal can create or rearrange light maps in the static mesh browser. I would try to build myself a library with unreal meshes and then use those meshes instead of always re-importing and fixing the same meshes from 3ds max.

Thanks, **presto423**and S-Dot. I have started my first test today with a small house. It’s a small scene by evermotion.

I have kept the meshes as static and used HDRI Backdrop and 1 movable directional light. I am applying the materials and foliage now. Although the lighting doesn’t look that convincing to me right now I will try out the tips that you guys mentioned, later tonight. Will update here how the test goes

Here is a screenshot from that scene. Chose small scene on purpose as I am just testing.


I have chosen an HDRI backdrop with movable directional light.
I have two problems right now that I want to clear before I start testing with other ways of lighting.

1st problem is with the grass being overexposed at distance. When I move the camera forwards, the overexposed grass also moves forward with the camera.
Check the screenshot for that. How to fix that?

2nd problem is the grass making the scene too performance hungry. Please check the settings I have used for the foliage. I am getting a 10-40 fps depending on where the camera is looking.


Disable “Affect Dynamic Indirect Lighting” in the grass. It’s for the Light Propagation Volume (LPV), I think, not for exclusively affecting the movable directional light. The LPV is probably not enabled in the post process volume, but with that setting checked, it still turns it on and causes it to track with the camera at a certain distance from the view. I’m certain that’s what’s causing the overexposure of the grass, and why it moves with the camera, at least partly.

You’ve also got Height set to a giant range (-262144, 262144). Change that to a lower range (try -1000, 1000) or something. It could a part of what’s using up the FPS.

Since there’s a high brightness level in the HDRI, I think it is causing the scene to be too bright on the exterior of the structures, and may be adding to the over-brightness of the grass. One way to reduce it is to decrease Skylight Intensity, and if needed, increase directional light intensity to compensate for a loss of lighting in areas where it occurs. The directional light is better at bringing the colors and contrast through in the scene than the skylight, as the skylight at too high of Intensity can quickly result in a washed out look. However, it depends on the other settings for the scene, such as the Exposure, material base color values, and a few other ones. There’s a setting or two in the HDRI that’s intended to adjust for how it influences lighting in the scene. Even its resolution, and the resolution of the skylight can result in higher brightness or dimming of the light. Because it’s a cubemap, the higher the resolution, the more likely it is the lighting data extracted from it is going to brighten things…unless it’s a darker or a more mid-tone type of cubemap. The areas that look too bright to me are the stone wall, chimney, and unshadowed parts of the house. I mean, it looks like it has a huge, ultra-bright spot light shining on those in addition to the open country sunlight. Perhaps tuning the sky atmosphere or atmospheric fog, if there is one or both, to reduce the glow of the brighter areas would help the scene become more realistic, I’m not sure. Then, it’s also a question of how the scene is intended to appear. Is it 1 pm in a rural open landscape on a 90-degree day? or is it supposed to be 5 pm during a short heat wave on the outskirts of Detroit, Michigan?

Thanks for the info and sorry to tell you but disabling the “Affect Dynamic Indirect Lighting” in the grass" didn’t affect the overexposure issue.
Setting the height range from (-262144, 262144) to (-1000, 1000) also didn’t help much in fps gains. Maybe 2-3 fps but not sure.
One thing that I noticed is that when I changed the directional light from movable to stationery the overexposed issue solved. Do note it was before baking. After baking the issue was fixed but the overall grass looked darker. So I think this issue is related to directional light somehow.

I also tried lowering the intensity of HDRI but that didn’t make any difference either. Btw, I have set the HDRI Backdrop intensity to 5. Doesn’t look too high. Or does it?

Also, as it is a test scene I haven’t decided on the timing of the day. But morning time would be favorable.

My mistake. I was rather certain it was the LPV. As for the grass Height, I suppose since it is merely HDRI backdrop, and not a whole generated landscape that the Height wouldn’t affect it too much, if at all. The issue with the HDRI Intensity is a matter of combined effects with the other lighting, so solely changing the HDRI’s Intensity might not result in a change or only a slight change. Being a testing scene, it is susceptible to unforeseen results when changing things and not knowing how one change is going to influence or directly impact another change later. For example, changing the directional to stationary altered it initially to fix the overexposed grass issue, then baking produced a darker result (dynamic light is different from stationary because it doesn’t use the World Lightmass number of bounces for directional, which is one difference). How about trying to set indirect bounces to 0 for the directional while stationary, and then bake lighting? Then change the directional to movable, and see if there’s a way to get the results to be similar to the 0 bounces with stationary results…? It could be one way to see if the first, direct cast of light is overexposing the grass, or if it’s more a result of indirect lighting for dynamic directional.

One question, do you have a Lightmass Importance Volume around the house / grass area? Without it, it’s said in the docs that Lightmass generates more photons for the entire level / map. I’m not sure how it would be affecting the scene in dynamic mode, though. It could brighten it, or not have an effect, is my guess.

Thanks for the reply. I will check it out tomorrow as it is 11:30 PM here and I am about to sleep.
Anyways, you made a point, as I lit it dynamically initially, I didn’t set a lightmass importance volume but today when I baked it, I forgot to add it. I will add it tomorrow and see how that looks.

Also, I didn’t add any reflection capture sphere/box. That could also be the issue. I remember in my last 2 projects I faced something similar.

Set mobility to static and turn dynamic shadowing off. Dynamic shadows are extremely expensive and mostly useless on grass.

If you’re having trouble getting decent depth without shadows I would suggest you put a gradient fade in the material so that the roots are darker than the tips.

Further optimization will most likely require reducing the overdraw and triangle count of your meshes.

Also use the cull distance settings for the grass and other small meshes. You won’t see any grass detail further away from the camera. If your texture below the grass blends well with the grass then you won’t see that there is no 3D grass in the distance. Here are my settings. It’s and older project running in 4.21 without ray-tracing on a laptop with a RTX 2070. Over 100 fps so it is possible to do grass without hitting the performance too bad.

Turning Off Dynamic Shadows did help in gaining some fps but the grass still looks unreal at some angles. BTW The grass is from megascans assets and I also checked Overdraw and shader complexity and they seem fine.

I tried yesterday playing with almost all the relatable settings in the foliage static mesh window and directional light parameters besides skylight. I also replaced the HDRI backdrop with a static skybox. l also set the sun to static. With static skylight and movable sun, I have got the best results yet. But without the grass blending in nicely and giving 60+ fps, I can’t move forward.

Did you model the grass yourself in this scene or bought from the marketplace. And what about lights? Are they static or dynamic?

I tried yesterday playing with almost all the relatable settings in the foliage static mesh window and directional light parameters besides skylight. I also replaced the HDRI backdrop with a static skybox. l also set the sun to static. With static skylight and movable sun, I have got the best results yet. But without the grass blending in nicely and giving 60+ fps, I can’t move forward.

Did you model the grass yourself in this scene or bought from the marketplace. And what about lights? Are they static or dynamic?

The sunlight is a stationary light with Dynamic Shadow Distance of 555 units = 5.55m - anything further away will have only static shadows (3.8 lux)
The skylight is stationary too and has a HDMI image in it. (1 cd/m2)

I actually used a layer grass type which lets you paint the foliage with the landscape grass layer. Here are the settings for this layer. They are a bit different than what you would have for foliage but it is practically the same as foliage.

Dynamic shadows are very expensive. That’s why you have to cull out grass that is further away if you want to use high quality dynamic shadows for the grass.

The grass is from a marketplace package called “Grass Pack”. At least that is the folder name in the project. It isn’t anything special. I remember having some problems with the materials in my setup so I had to make a custom material for it. But generally the material should work that comes with that package.

My scene is not a ray traced scene. You could use the max roughness setting to make the grass not being included in ray traced reflections. If you set the grass roughness to 0.61 and the max roughness to 0.60 then it would be excluded and would use a capture cube for reflection. Should be more than fine for grass.

It is very important to use culling when you have an outdoor scene. You can place cull distance volumes like post process volumes. They have a priority. You could place one to cull out any small objects from the interior when the player is outside.

https://docs.unrealengine.com/en-US/…ume/index.html

You can also manually cull individual objects. Let’s say you have a 500.000 polygon bed in the bedroom but you really only see it when you’re in that room. You can give this a max draw distance. It might get occluded anyway when you leave the room or look the other way but cull distances are the fastest and most save way to make sure it won’t be drawn when not in view. At least it used to be.

okay, guys, first of all, thanks for all your help and I did my best using the methods described trying to mitigate the grass and fps issue but in vain. If anybody would like to check the scene, I will upload it in a few minutes