Look How to Create a Detailed London Environment in Unreal Engine

Quentin Godillon told us about the London has Fallen project, delving into the inspiration behind it, detailing modeling, texturing, lighting, and post-processing stages, as well as sharing what he learned from the project.


Hi! My name is Quentin, and I'm a 34-year-old Environment Artist. I was quickly introduced to 3D in my school years back in 2010, but my real journey as a 3D Artist began in 2022 with the goal of teaching myself how to make an Overwatch-Style Map…and, of course, I failed spectacularly! However, this allowed me to get a grasp of the whole pipeline. I'm interested in everything related to 3D, and now, over a year later, I have learned a lot about the different workflows, software, and techniques. For me, being a self-taught artist wouldn't be possible without the communities and the people I have met along the way. So, today, I'm happy to give back some of that knowledge with this breakdown.

The neo-Tokyo challenge on ArtStation was a shift in my workflow and how I was able to articulate my thinking. But the London has Fallen project was a breakthrough, I was able to anticipate and address future problems earlier in the process. I'm less thinking about my technical abilities and more about the vibe I want to bring. I think, in the end, this is what makes the environment coherent.


I chose the London Spitalfields area for the mix of old and new, with a lot of bricks because my goal was to showcase my brand new brick material! Next, I spend a lot of time gathering references through Google Images and Google Street View, trying to isolate strong and simple architectural elements. I like to gather references whenever I can (commute, lunch break, camera, etc.), so I use Miro instead of PureRef.


The blockout in Unreal Engine is very rough and is just here to test compositions and scale. I was hugely inspired by the work of Tiffany Nguyen on The Last of Us and The Continental series. At this point, I know I want to keep the scope of my scene short and not have to build a whole background. So, the alley is perfect! The small tunnel adds depth for free with all the architectural lines leading to it. It's done when I have an easily readable composition and a good sense of scale. The camera is a 12mm wide-angle to emphasize the depth and display a large part of my environment.

Asset Production

For the big architecture pieces, I don't use Nanite because vertex painting wouldn't be an option. The modeling part is pretty straightforward, I lean on good references and real-world measurements to keep a believable scale. Big pieces are made on a modular grid. I like to model and UV at a fast pace. For example, 90% of the Pub storefront mesh was done in an hour. The trim sheet material and vertex painting are doing all the heavy lifting. If I don't like a piece, it's just an hour of work. When I'm confident about my assets, I clean the mesh, check the texel density, and create a nice grid ready to be painted in Unreal Engine.

The smaller pieces are Nanite and textured in Substance 3D Painter. They were made towards the end of the modeling part to not lose myself too soon into detailing. They are important to support scale and storytelling, but I like to think the environment could work without them.

On this project, the brick texture is at the center of my work, and I spend almost half of my time in Substance 3D Designer. I have a second screen with my references to break down the shapes and relations between the brick, cement, damage, and irregularity. I always begin with the Height Map and then propagate to the roughness and base color. The roughness variation is something I'm always struggling with and never really happy. In a way, I think it's the most subjective element.

I try as much as possible to make decisions based on my references and not my memory. It's also fun to see how things actually work versus what I thought.

The base color evolution is an addition of noises on top of noises and the Directional Warp. In the end, I don't want any flat-color area.

The trim texture is an old technique but allows me to add details for free without painting each piece individually.

When it comes to unifying all these textures in Unreal Engine, I use a Master Material with 2 additional channels, red for the dirt and green for the weathering. The flip side is that I have to create these 2 variations for all of my materials to easily propagate variations. Mesh painting is so powerful that I don't see myself moving to full Nanite right now.

To save time and resources, I often create a mask to edit the tint of my base color. Here the blue and red woods are the same material, but different instance settings.


When the vertex painting is done, I hand-place foliages and decals to have more localized details. Like the wind pushing the leaf on the walls' edges, the small cracks, and leaks. The crack decals and foliage are Quixel Megascans. For custom decals like leaks, dirt, and leaves, I'm usually very lazy, and I think I can get away with a lot in Photoshop. It's basically retouched Google images. I then create an alpha, a quick roughness variation, and even a Normal Map if I feel the need.


The lighting is one of the most important aspects. I'm using an awesome PBR workflow learned in the Thiago Klafke environment tutorial. It's instantly elevating my environment without having to scratch my head. 80% of my lighting is just real-world value, and then I add a few lights to art-direct my composition.

First, I set an ultra-dynamic sky, but it can be done with standalone tools. We can see the sky and the sun shining, but we are looking at the underworld of this post-civilization. For this reason, I put the whole alley in the shadow because we are hiding something in this street. I then set and lock the exposure with a real-world value. A good resource to get this value is this Wikipedia article. Next, I adjust the directional light value to match real sun luminosity. Unity docs have a great post about this here.

At this point, I have nice values between the background light and foreground shadow, but I'm missing the midground gradient. So, I'm using a very large rect light above the scene to create a nice soft light and make my materials' normals and roughness pop. I'm also leveling up to 4 the indirect lighting intensity in this light to get more details in the shadows. This is a technique we can see on a real movie set; a big lightbox will reveal details and give volume.

Color Grading & Post-Processing

I'm a sucker for the Fincher look, and I have accumulated over the years a collection of LUTs. So, I take a screenshot in Unreal Engine and do my color grading in Photoshop because it's easier for me. Color grading is a beast of its own, and at this point, it's purely subjective for me. I just take a look at my references and try to break down why I love this or that. Then, I take a look at my library and tweak a few gradients

When I'm happy, I make a custom .png LUT as presented here.

My post-processing volume doesn't require much setup. But for the final presentation, I'm making sure the Lumen and reflection quality settings are cranked up to the max.


On this project, I learned a lot about how to make sense of a whole environment: the relation between materials, storytelling, lighting, and what I want to emphasize. And to achieve this, for me, the most important part was gathering references. 90% of what I do needs to be based on real-world observation. Only then can I choose where the spotlight will be. And for this, Google Street View is a gift – to be able to travel from your couch. I know I have a strong reference base and a clear idea when the production phase is smooth.

I think I could have done more to create even more context (flyers, signs, tags, bullet holes, etc.), and that's because I was too focused on the brick texture. So, I will keep an eye out for this on my next project.

Quentin Godillon, 3D Environment Artist

Interview conducted by Theodore McKenzie

Join discussion

Comments 0

    You might also like

    We need your consent

    We use cookies on this website to make your browsing experience better. By using the site you agree to our use of cookies.Learn more