Static / Stationary vs Dynamic / Movable vs Dynamic Sky Plugin for big scenes?

Hey everyone -

This is long-winded but I hope it’s descriptive enough to help others in a similar situation to my own.

I’m an arch-viz professional, originally with 3DS Max / V-Ray, currently with those plus Lumion added into the mix. Myself and another colleague are considering making the jump to UE4. The work that I do often consists of creating scenes for huge developments such as parks and mixed-use. Sometimes they end up being close to 120 acres worth of buildings, foliage, attractions, people… you name it.

At work we have big tanks of desktops with two 10-core CPUs and two Quadro GPUs. At home, in my spare time, I use my own “mid-range work-play” desktop with a stock clocked Intel 6700 and a GTX 1070. For the purposes of this discussion I’ll use my 6700 / 1070 as the base case.

With that in mind, I’m trying to understand what a usable and flexible lighting solution would be for me to start seriously migrating into Unreal.

Pretty much all of my UE4 scenes thus far have been 3DS Max scenes imported into Unreal via Datasmith. Those 3DS Max scenes typically carry everything except for landscape and entourage - people, foliage, etc, with buildings and the like often starting life as Revit models. All of my materials are already set up as V-Ray materials. I’ve instanced geometry where necessary (such as poles for a fence). The scenes also often carry two lights - a V-Ray dome with an HDRI, and a V-Ray sun.

I’m trying to achieve the lighting flexibility I get from Lumion, in UE4. In Lumion, I can adjust time of day, cloud cover, all of that on the fly. It means that I can set up one shot of my big scene in mid-day, or do one with streetlights on at night, and I don’t even need to use my HDRI to get nice-looking lighting. I realize there’s often the stigma of using Lumion as a “just push the render button” solution, but when I spend a lot of time doing technically-oriented model work to then import into Lumion, it becomes important to be able to work artistically, see the changes as they happen, and tweak to my heart’s content. 90% of the time I export still images, but occasionally video animations and real-time flyover demonstrations have to be made as well.

Here’s what I’ve tried so far:

First scenario (what I’ve mainly been trying) - I dump the lights upon import and re-construct them in UE4 with static skylight, stationary directional light, and sky sphere; Repeat for various pre-computed lighting scenarios. Where I run into trouble is when I have to build the lighting. When I’m just working with a small scene, say, a single building exterior, it’s fine. But it becomes problematic when I have this gigantic scene and I need to build the lighting to see how everything looks. Even in preview quality, with only the two lights, the lighting for my gigantic scene could take hours to build. It’s even more frustrating when I need to tweak lightmap resolutions on certain objects, and I can never really see the results unless I build the whole scene again. I’ve experimented with some settings tweaking (such as the static level lighting scale) but it’s hard for me to tell a difference.

As a base case - I have a half-open pavilion constructed like a log cabin, 22 meters in diameter and about 8.5 meters tall, housed in a lightmass importance volume, with a flat landscape surrounding it. My 6700 CPU built the Preview-quality lighting in about 5 minutes, medium 11 min, high 20 min, and finally 48 min for production. Default lightmass settings apart from increasing the indirect lighting bounces to 7 and the sky lighting bounces to 3 (for more light under the roof). I’ve found that keeping the V-Ray lights in the scene really doesn’t do a whole lot to help me, and sometimes actually makes build times worse.

**Second scenario - **fully dynamic / movable lights. As scenes get larger, framerates drop, of course, but I get to see everything right away and adjust on the fly like I can in Lumion. The problem there is that with no real indirect lighting and / or global illumination and / or Lightmass calculations, the scene just looks dull and flat, which is not what I want. I’ve done poking around, reading about LPVs, Nvidia’s VXGI, etc for somewhat of an indirect lighting solution, but I’m not even sure where to begin. I really don’t want to waste time wrapping my head around building VXGI from source. I know UE 4.22 will be incorporating some ray-tracing solutions but that would mean I would have to upgrade my GPU to a new RTX card, right?

Now here is what I’m considering trying:

**Third scenario - **Luoshuang’s GPULightmass plugin. Obviously my GTX 1070 GPU is more powerful than my 6700 CPU, so why not take advantage of that for light building? My GPU performs like a champ in gaming, in Lumion and in V-Ray RT. If that would help to reduce my build times, that would be really helpful. But it still wouldn’t

**Fourth scenario - **Third-party dynamic sky plugin, such as Everett Gunther’s Ultra Dynamic Sky or Simul’s TrueSky. Obviously the $130 for a TrueSky license or $30 for Everett’s plug-in is a drop in the bucket for our company, but as an individual I’m apprehensive about spending the money, considering I’m not 100% confident with using Unreal for my personal work yet. Thankfully TrueSky has a free thirty-day trial so I have some time to experiment with it. Michael Gerard’s work comes to mind in thinking about the results I could get with one of those plugins (apparently he used TrueSky). But that also raises the question - how effective are either of those plugins when dealing with interior scenes?

While I believe that I have a basic understanding of working in UE4 (thanks to those fantastic video tutorials from Matt Doyle and everyone else), I’ve probably missed something… Right now I’m really leaning toward working with one of those dynamic sky plugins. I know that’s probably “the easy, buy your way out” but I want to be able to work quickly and visually, and be able to make new iterations often based on client feedback, my own tastes, etc.

Can anyone give me some advice on how to proceed, based on what I’ve written here?

Thanks in advance!

Hi there, LostInTheHead.

I come from the same background and around a year and a half ago, we wanted to see if we could adopt UE into our workflow and offer outcomes to clients using this. Though we haven’t yet attempted anything vast as you (referring to the 120-acre size projects) we’ve done scenes that are high in detail and are enormous when it comes to lightmass builds. We had several issues with building both lightmass and the final exe too. I’m not a professional in Unreal Engine by any means, I’m 19 and have used UE for just over a year and a half and have a built a decent amount of knowledge on it for the purpose I’m using it for so I’ll try and help as much as I can.

From my previous issues with scenes, lighting is obviously a huge factor to consider for achieving accurate results for Archviz. I’m guessing you already know the difference between the light modes but if not you can find out the advantages and disadvantages of them here:

Static lighting, for us, is more ideal as it’s just cheaper to render and run for people. The issues I found with static is: the build file can become massive and cause issues later when you want to build the file, lightmaps will show artefacts on the edge of light causing jagged shadows and the only way to fix this is to scale a lightmap using more RAM and creating more massive files in the build file giving you issues later on final builds and wanting to change a light intensity value means you have to build the lighting again so you have to then wait a while for that to build. (Distributed lightmass did save us a lot of time by the way so if you don’t do this already, definitely look into it.)

Stationary and Moveable lighting are the ones I tend not to use when it comes to Archviz but they have their places. My recent workflow has been either a static or stationary sky-light with a moveable sunlight and then static lighting inside the spaces (so general internal lighting is baked and external is dynamic). This has worked well so far with the projects we’ve tested in and we’ve not had issues with them as of yet, or found any, but of course, there’s a reason not to use all Dynamic on a massive scene. Following the link above about lighting, these “dynamic” lights are the most expensive to use because in every-frame, they need to be calculated and then updated to the game and this can take a lot of juice from the machine to do smoothly at 60 fps.

One thing we did try was to use Level Streaming for a scene that involved details in several rooms. Baking the lighting and the geometry didn’t work so level streaming almost was like an X-Ref in 3ds and let us control each room separately and fixed some issues in the final build.
The pain of this was working out Level-Streaming… and not being a professional or being able to ask a professional, I had to do hours and hours of research and watching tutorials to understand it, but it did pay off to get something BASIC done to work but it was no-where near close to being able to use in a final outcome. What I did find out, was that it was good to load the necessary elements of a scene when you needed rather than always loading because there’s no reason to load elements of a scene if you’re not going to see them in a certain place so why not just load them when you need? What this allowed us to do was mix dynamic and static lighting in each room so we could use expensive lights in the space and then simply hide/unload them and then load another set leaving space for it to use dynamic lighting.
Now, I realise you work with external spaces and I’ve not worked with external spaces as of yet but this principle will still work. If you can find a way to cut up space and work out a system of where to load bits, and what bits to load then you can try this with lights you feel are appropriate for the part you’re lighting and then keep tweaking from there. Level-Streaming isn’t too hard to grasp, it’s just a bit of work that needs going into it to make something basic work but to do something really solid and professional it will take some grafting but there are plenty of tutorials online and on the forums that can help.

I know this was a bit all over the place and not an exact answer, more of an opinion on workflows and some advice. My verdict is, try using level-streaming and lighting the divided levels separately and then reference them into an empty level that only has the natural lighting of the sun and sky. If you want me to explain the level-streaming system we use and how we reference parts in, I can if it will help. Sorry, this was long and all over the place, it’s a heavy topic with different opinions and answers on.