Andrew Lund made a huge breakdown on his recent project, Winter Street Scene, and shared some organizational tips.
In case you missed it
Learn more about production
Introduction and Career
Hello! My name is Andrew Lund III, and I’m a self-taught Environment Artist / World Builder from the Seattle, WA area.
I played a lot of video games as a kid. The environments I explored from my own bedroom were simply magic to me; doors opened to other worlds, and I couldn’t get enough. The imaginative architecture in video games was especially fascinating. Coming out of high school I didn’t realize that making video games was a possible career option, so I studied architecture in University instead.
Following graduation I established myself at a ‘career’ job, creating drawings and later on consulting and designing solutions for large-scale commercial buildings. I loved architecture, but after nine years it had become apparent that this work wasn’t my calling.
Searching for another career path, I reinvested in myself at night and on weekends, getting back to drawing, creating art, and playing video games. Returning to these things after a long break offered me a chance at a new perspective, and soon I re-realized my passion for architecture in game environments. I began learning how to make 3d game assets in my free time and found that I loved it. With my wife financially supporting us, I eventually took the leap and left the architecture and construction industry completely, dedicating myself to making video game environments.
The Winter Street Scene is my latest environment, and I’m proud to be able to share with you how I created it.
Note: In this breakdown, I walk through the creation of my latest environment, from start to finish. There are many ways to create the environment; this is just what worked for me this time. I’m continually learning better, faster and more efficient approaches as well, so let’s all keep researching and improving our skills together, and if you have any comments, critiques, and/or thoughts drop them in the comments!
About the Project
It’s been said that travel sparks the imagination and feeds the curiosity, and I tend to agree. A while back I was lucky enough to have the opportunity to visit southern Germany and Austria. I was immediately fascinated with the local architecture. The buildings were old and tall and cramped and sometimes incredibly odd in their composition. They’d obviously been through dozens of rounds of repairs, renovations, retrofits, and remodels not to mention the many different owners and uses they’d endured over time. Their evolution and growth were immensely fascinating to consider and for me, thinking about the history of these more common buildings made them just as interesting as any of the major landmarks in the city. I knew that I had to create an environment showcasing this subtle understated beauty, and it was with this in mind that I began the Winter Street Scene project.
Inspiration photographs taken in Southern Germany and Austria
Every project needs inspiration, a spark, and this is especially true of an environment. You’re likely to be sitting with it for some time, so you’ve got to love the subject matter. Do you know what I enjoy about old German architecture? Can you tell by the way I talk about it? That’s right, I love EVERYTHING! That’s how you push a project through to the completion. You can bet if you don’t love it in the beginning, you won’t love it in the middle, and you won’t finish.
Accountability and Community
Full environments are not meant to be created by one person alone; it’s a lot of work. You need to find a way to hold yourself accountable to complete something of this magnitude. Some people stay motivated simply by their own internal pressures, but for most of us, a bit of external accountability is quite necessary. This is why signing up for challenges with fixed deadlines is a great idea; it's why posting your progress on Polycount, or your Artstation blog or your website is so helpful. Getting a community around you that you don’t want to disappoint can be a great motivating driver.
In my case, I had a really good friend who was invested in helping mentor and critique this project. I sent him updates every few days; just a bit of text and a few screenshots of the recent progress. I felt a personal responsibility to show him something every few days, and it helped drive me to completion.
Gathering the Reference
As always, I started gathering reference before doing anything else. I sorted through my travel photos, looking for anything that showed the unique vernacular (i.e. local) architecture and the interaction of small interconnected spaces. When putting together the reference sheets I used wonderful little program called PureRef. Do yourself a favor and get it into your workflow. I promise you won’t be sad.
Architecture-Massing Reference Sheet
Having some good ideas for the architectural massing figured out, I also did a cursory search for material reference, which I would later expand into separate sheets of reference for each material as I built them in Substance Designer.
Overall Material Reference Sheet
I then searched through Google/Pinterest and created a mood/lighting reference sheet to help nail down the feeling I was targeting for the environment. At this point in the project, I was aiming for an early morning sunrise when you might have the streets to yourself while breathing in the cold air of a morning full of possibilities. Soon, however I would begin shooting for a foggy evening near blue hour. UE4 had recently added volumetric fog to their game engine that I wanted to try out, and the idea of snow flurries in the air with snow on the ground coupled with nice warm lights in the street lamps and windows was really fitting together nicely for me.
Mood-Lighting Reference Sheet
Covering the scene in snow was going to prove tricky, so I dug quite up a bit of reference for it.
Snow Reference Sheet
And finally, I searched around for AAA game quality reference. I had every intention of attempting to match current AAA game quality, and without real-time game play and console limitations, there was no reason not to shoot for that bar.
AAA Game Quality Reference Sheet
These images are but a small portion of what I gathered to build this environment. My reference sheets were always being altered as the project evolved. Gathering reference isn’t a ‘one and done’ kind of task that only takes place at the beginning of a project. Constantly monitoring your reference throughout allows you to be as accurate and helpful as possible.
Working on the Concept and Planning
Some people concept entirely in 3d, but something about the physical act of laying down ink on paper helps me think when developing design concepts. While looking back through my reference, I began sketching ideas for how to combine my favorite and unique architectural features into one small environment. I sketched and iterated until eventually, I had created something manageable to build in 3D. At this point, I was already thinking about modularity and the ‘GRID’ which I’ll discuss later.
Concept-Planning Sketches
Using my concept sketches, I created a quick checklist for the assets and materials I thought I might need to produce and I started a Trello board to help keep track of everything.
Early Project Organization on Trello
The reality was that while working on this project, I would also be remodeling our home in preparation for the birth of our twins, so I (correctly) assumed that there might be large stretches of time where I couldn’t work on the environment. I wanted to be able to jump right back in without wasting time reorienting myself to the project over and over again.
The Blockout
With a solid plan in place, I started blocking out the buildings and main shapes in 3dsMax.
Greybox Blockout in 3dsMax
I referenced everything against a scale figure, paying attention to the dimension of the spaces and areas they enclose. The idea here is to keep to primitives and extremely simple geometry as you’ll be replacing all of these meshes later. And seriously, don’t be precious! Don’t worry about matching the concept perfectly. If something isn’t working move things around and experiment until you find what you’re after!
Primitive Blockout
Pretty soon after starting the blockout I began bringing those pieces into the game engine (UE4 for me) and getting a super basic HDRI map, stationary skylight, and directional (sun)light into the scene. I also began experimenting with cameras. That’s right, cameras in Blockout! This is super important! With an idea of the lighting and a few killer camera positions figured out you can prioritize work on the larger parts of the image as you progress. I knew I was going to be making a few 2d presentation images, and possibly a small 3d flythrough video, so I could target my work towards those finished products specifically.
Check out Polygon Academy’s advice on blockouts (aka Greybox Level Design).
Modular Kits and Environment
After blocking out the main building walls, lighting, and cameras I jumped back into 3dsMax and started splitting up the primitive Blockout into functional blocks with modularity in mind. Creating something on an environment scale requires you to be working smart, not hard. So, cutting up your assets into modular kits that fit into a ‘gridded’ space is immensely useful, especially in human-built hard-surface environments like this.
Modular Blocks in 3dsMax
On this project, I once again fell into the trap of going a little too detailed in this phase. It’s much better to shoot for proxy models worrying only about proper shape/size/dimensions with good pivot points, naming conventions, etc. Then you can get those models placed properly in the game engine and improve their quality one by one over time. This helps to make sure you’re only putting time into models that you are absolutely sure you need.
This Polygon Academy tutorial by Tim Simpson is quite useful in understanding Modular Environments.
Simple Materials and Lighting
Once I had re-imported and arranged all of my proxy models into UE4, I created proxy materials with only color and roughness values and spread them around the environment. I had no UVs at this point and wasn’t baking any lighting. The lighting was pretty much just set to default. The idea here is to get a better idea of the composition of your 2d views and how all of the surfaces are reading with light bouncing around. This is an important step to check your progress and let you know if your environment is heading in the right direction. After assessing the simple materials and lights, you can make quick adjustments and changes that would be much more difficult to make later on.
Basic Material and Overall Lighting Blockout
At this stage, and for this environment, something wasn’t sitting right for me in the composition, and I couldn’t quite put my finger on it. So rather than waste a bunch of time spinning in circles, I took a break from modeling assets. I knew that lighting the scene was going to be really important, and it wasn’t my strongest suit, so I took the opportunity to dive into Tillman Milde’s UE4 Lighting Academy tutorials and really get to learning. His real-time work through lighting environments from scratch was invaluable, especially as he encountered problems and had to come up with solutions on the fly.
Re-Focusing the Project
After filling my brain with lighting knowledge, I came back to the project as a bit more of an impartial observer and finally put my finger on the problem. My composition had no clear focus. I talked it over with one of my lighting artist friends (Kevin Dalziel) and doubled down on the arched door as the primary focal point. Relegating the alley to the right and the tunnel to the left as secondary interest rebalanced the focus of the scene. This realization alone clarified and simplified my decisions going forward.
Allowing yourself the chance to breathe and re-examine your project is crucial. Take a break every once in a while. Putting your head down and getting the work done will certainly get you somewhere, but it’s those intermittent breaks to check where you’re going that will lead your project to success in the end.
Mid-Poly Sub-D Modeling
Refocused and back on track, I began to slowly work up the quality of each asset: adding polys, edge definition, and creating proper UVs, etc. I paid special attention to my reference and gathered more when necessary. I worked from the larger to the smaller on my asset list and added a few things along the way. It was all fairly straightforward. There is plenty of information out there on low and high poly modeling, baking, UVing, etc. so I’m not going to revisit it here for the sake of brevity.
One thing I did decide to do a bit differently than normal was in skipping sculpting and baking altogether, going with a mid-poly and decal workflow. Having a darker scene shrouded in fog, I figured mid-poly assets would probably hold their own well enough. With that in mind, I left each mesh off at a mid-poly level, figuring to come back and improve the mesh quality of a few of the more important assets later. Most of my work in 3dsMax was done at this point.
Tiling Materials and Decals
With all of the meshes now up to a mid-poly level in UE4, I began to replace my proxy materials with tiling materials created non-destructively in Substance Designer. I set up fairly basic shaders in UE4, allowing the non-destructive controls in Designer to handle most of the adjustments.
Street Materials in Marmoset
UE4 and Substance Designer talk to each other fairly seamlessly now, and it’s a wonderful thing. By exposing a few of the more important variables in Designer I was able to adjust the materials pretty much in real-time in UE4.
Allegorithmic has some fairly decent tutorials on how this all works.
Wall Materials in Marmoset
Once applied to the assets in UE4, the tiling materials didn’t look too procedural, which was great, but they were still fairly clean, bland, and dare I say, boring. So, I set about adding decals to really wear on the surface. I downloaded a bunch of cracks, specks of dirt, molds, deteriorated stucco, etc. for free from textures.com and processed them through Substance Designer to normalize all of the map types. And then I went nuts adding cracks, dirt, and grime, etc. with UE4s decal system.
I took a few of the more focal assets into Substance Painter for their own custom materials, like the main door below:
I also used trim sheets for the wood panel elements of the environment, but mostly I stayed with tiling materials and overlying decals for this project.
Blueprints and Material Functions
With the goal of increased technical efficiency, I finally dug in and learned blueprints and material functions.
In the end, I really liked the flexibility of creating multiple variations of object sets, and I put together quite a few actors in blueprints. It was sort of like using an advanced form of ‘groups’ and it really helped speed up the population of assets in the environment. This wasn’t only helpful for groupings of set dressing props, but also for street lights, signs, windows, etc. anything with multiple pieces that needed to be put together.
Check out this tutorial concerning Prefabs/Blueprints, by Polygon Academy for more information.
Knowing that my three snow-ice materials (rough snow, smooth snow, and ice) would be intertwined with many of the other materials I used material functions as containers in UE4. This allowed me to make changes to those three materials in only one place and it would automatically update in my other materials. Consistency across materials was automatic. Checkmate!
Check out this 80lv article How To Use Material Functions in UE4 by Clinton Crumpler for an in-depth look at material functions.
Z-Up Snow Master Material Shader with Vertex Painting
Putting snow on the whole environment could be accomplished with materials and shaders or with separate snow meshes. Not wanting to create snow meshes for every single thing, I created a Z-up shader that would tessellate and displace the top facing horizontal surfaces of any mesh with my snow materials.
This Moss Material tutorial by Mind Games Interactive explains how to set up a Z-up shader in UE4 quite well.
I then added a few nodes for vertex painting out the snow in areas I didn’t want it. I found that there was a limit to how far the tessellated snow could go before it started looking really wonky, and in the end, I did have to create snow meshes for the sloped roofs and copings to get a more believable build-up.
Mesh Blending Master Material
My largest technical hurdle was in figuring out how to handle the street and ground materials. I’d seen enough games with very visible and ugly seams where meshes met, and I wanted to find a workaround. Looking into articles on 80lv, posts on the polycount, and info on DICE’s Star Wars: Battlefront, I cobbled together a workable solution.
Mesh Blending and Vertex Painting Test using Placeholder Materials
I created a vertex paintable material shader that would blend the separate maps (including the normal) of each mesh and layer for a seamless transition between the ground and snow meshes. Both the ground and snow meshes had the same material applied, with the snow mesh having the ‘affect distance field lighting’ box checked. The shader used the distance fields created by the snow meshes as a mask for the transition area, and I was able to vertex paint right up to it with ice, rough snow, and smooth snow over the arched cobblestones. I created separate height masks for each transition and used HeightLerp nodes to blend one material over the other.
Mesh Blending Test w Separate Height Masks using Placeholder Materials
I was getting odd seams between meshes after building the lighting so I switched the ground and snow mesh actors to stationary, abandoning the lightmaps for those actors. In the end, I also did a little bit of color correcting at the transition area edge, and ended up removing the pixel depth effect as it just seemed to cause color/shadow issues.
*I want to take a moment to note that this 80lv article, Creating a Snow Forest, by Leah Augustine, really nails a lot of the things I was trying to do here. I wish I had found it before I got so far into making my master material for the street. As previously mentioned, I had issues with the PixelDepthOffset and removed it from my shader, but otherwise, at minimum, I could have benefited from Leah’s detail normal approach for the snow and her parallax occlusion mapping (POM) approach for the ice. These are the first things I would update if I were to go back in and work on this environment. Thanks to Leah for sharing all of that wonderful info with the community! It’s gold.
Lighting + Volumetric Fog
This environment ended up using a hybrid lighting approach. As I noted above, the street and snow meshes had to be set to stationary to avoid weird lightmap seams, but most of the rest of the meshes in the environment were set to static, using UE4s automatic lightmaps. Smaller thinner meshes were also set to stationary to help save on baking times.
I ended up removing the directional light since the entire environment was shrouded in fog, and it was near nighttime anyways. I gave the Skylight a colder blueish color and set it to stationary. A few stationary spotlights were set in the sky to bounce off an invisible sphere, giving the sky a glow from behind the buildings and emphasizing the roofline silhouette. Quite a few subtle point lights were included to brighten up dark areas, and spotlights were used to help emphasize the desired light direction from the street lamps and glow from the windows. Every so often I would also set up spotlights on different lighting channels to fake a rim light and pop a silhouette. A lot of lighting tricks were in use here, and I have Kevin Dalziel to thank for that!
I included a basic Atmospheric Fog, but the Exponential Height Fog and the volumetric lighting that came with it really did the heavy lifting here. There aren’t a ton of volumetric settings, but I tweaked them all… and often. I was continually working on finding the right feeling of moisture hanging in the air.
Volumetric Fog Blockout in UE4
Story Elements
The story of a scene or image is where an environment really becomes something. I thought about this a lot over the course of the project, and kept coming back to the idea of reinforcing a warm reception in that central doorway. Maybe the viewer has paused for a minute to enjoy the beauty of the environment, but is headed towards the door for a kind embrace and a wonderful dinner with family. Maybe they just got off work. Maybe they’re returning home after a long stretch away at school. Maybe they’re just passing by, and they notice a little Christmas tree sitting outside the door and they pause to wonder why. Maybe the little tree reminds them of their home and family. Maybe they’re an international traveler just looking for their hostel. And on and on. A lot of potential stories seemed to spring from the cold environment and the warmth at that door, and that seemed to work for me.
Continuing to emphasize that arched doorway, I adjusted the snow mounds and the vertex painting on the ground to help lead the eye towards the door. I added subtle boot tracks leading from the viewer to the door and cracked it open just a little to invite the viewer in. I punched up the texturing on the main door, giving it a warm red color with a lot of wear, and exposing the wood material underneath. And, I created a welcome sign, added friendly fir branches and a wreath. I mean, who doesn’t love the smell of pine needles in the winter, right?
Particle Effects (VFX)
One of the last things the environment needed was moving particle effects to make it come alive. The subtle movement of fog, steam, snow, etc. really helped to sell this environment as a whole world, extending down streets and alleys and tunnels, far off the screen.
Now, I’m no VFX artist and I hadn’t targeted this area for personal growth on this project, so I simply grabbed fogsheets, god rays, steam, and experimented with types of snow effects from a few different free UE4 example projects (I believe most of these came from the Particle Effects and Blueprints Projects). I heavily modified the steam to give it that lazy upward drifting feel, and customized a copy of that for the chimney smoke.
The snow flurries system took much more iteration to work through. The size and shape of the flakes, their movement patterns, and their speed all impacted the feel of the scene. I wanted a nice slow lazy snowfall that felt sublime, rather than a stormy blizzard that made you run for cover. I kept coming back to this particle system over the course of the project, adjusting and adjusting until it settled in just right.
Feedback and Critique
At this point, I had most everything in place and thought I was simply tweaking elements for a more pleasing composition before a final polish. But I had been in the scene too long and was losing my critical ability. Luckily, I could sense this and searched out a few friends who agreed to really give it a go with the constructive criticism. And did they ever…
The overall lighting needed work. There weren’t enough props scattered around to make the environment feel lived in. The Z-up shader wasn’t giving the roofs enough snow, and the snow material wasn’t looking great besides. And on and on. It didn’t feel great hearing how much work I still had to do, but you know what’s worse? Pretending your stuff is finished and putting it out when it’s not really ready. Constructive criticism is worth its weight in gold. Ask for it. Be quiet and take it and build on it. Even if it’s tough to hear, you’ll come out a better artist every time.
Before Feedback/Critique
Implementing Feedback
Not all feedback is directly applicable and appropriate for your project and your vision. You have to figure out what to take, what to leave, and how to implement it. With that in mind, I began making changes and adjustments and adding and tweaking and this is a rundown of some of it:
I pushed the post-processing towards blues in the mid-range and shadows for a more cold winter feel to the edges of the image. I adjusted the fog and tweaked fog sheet placements to help with layering and increase scene depth. I added more damage to decals, props, and populated the scene more heavily. I tweaked materials, UVs, and mesh edges for better silhouettes. I adjusted window glow and indirect lighting, and the volumetric fog and added light masks for emissive variation. I added subsurface scattering (SSS) to the snow and ice materials. I added a simple subtle sky with clouds as tertiary interest. I added chimneys and roof vent pipes with smoke and steam to improve the roof silhouette. I added noise to the corners of the building meshes to break up lines that were reading overly straight. And much much more. All of these changes came from having other sets of eyes looking at the environment, and being open to their critique. And it made all the difference.
After working through all of the notes, I went back for another round of feedback and this time, I received only a few constructive criticisms. Addressing those comments, I soon had wrapped up the environment.
Winter Street Scene Environment – Close View
After working through the standard end of project checks (looking at the scene through all manners of buffer visualization view modes. I was on creating the presentation images/videos. I had already set up my camera viewpoints fairly early on in the project, and so now it was all just about translating those basic cameras into UE4’s cinematic cameras. The Cine Camera Actor settings replicate actual real-world camera settings, so it was fairly simple to set up screenshots, GIFs, and other animations. Getting the focal plane set appropriately ad adjusting the focal length, etc. was just a matter of playing around. UE4’s high-resolution screenshot option captured great images to work with and from there I was able to create all manners of presentation materials.
I did run into one issue when creating the screenshots. The motion blur didn’t seem to be working on the snow flurry particles. I wanted to find a solution in UE4 but abandoned the attempt after searching for some time. I came up with my own solution where I grabbed a separate ‘falling snow only’ screenshot from UE4 and composited it back over the top of the main image with motion blur added to the only snow layer. Fairly simple workaround, but the static snow stuck out like a sore thumb as you can see below. Now it looks a lot more like the reference I was targeting.
Snow VFX Motion Blur v No Motion Blur
In the end, I even dusted off my animation abilities and created a short little drop-in video that I really love.
For this environment, I made just about everything, and it took quite some time. This was a specifically targeted challenge that I personally choose for this project, but it certainly isn’t necessary every time.
There are plenty of free demos and content from even the major game engine companies out there that can be tweaked to suit your needs. I might argue that its best to know how to do something yourself before using a pre-made option from an asset pack, but as long as proper ownership is noted and you’re clear about what you produced and what you didn’t, there shouldn’t be a problem. I’ll no doubt use more high-quality assets from others on my next project and lose no sleep over it.
Conclusion
It was a wonderfully enjoyable challenge to produce this entire environment, from concept to finish. Some parts were certainly more fun than others, but the more you create, the more you learn, right?! And that’s always the real win, the knowledge gained.
Sporadically working between raising newborn twins and remodeling our home, this project took a bit over a year to come together and I'm immensely pleased to be able to share it with you. I would love to hear your thoughts and questions in the comments! And please do check out the entire environment on Artstation.
I’d like to thank Mukul Soman and Tim Diaz for their incredibly detailed feedback, my wife for continually supporting and encouraging me, and most importantly, Kevin Dalziel, without whom none of this would have ever been possible.
Andrew Lund III, Environment Artist / World Builder
Keep reading
Learn more about production