In case you missed it
Study more 3D environments
My name is Lucas Josefsson and I’m an Environment Artist from Stockholm, Sweden. I’ve been in the industry for 3 years. After I finished my studies at Vancouver Film School I started my career at Starbreeze Studios where I mainly worked on Payday 2 and Project Crossfire. I’m currently at a fairly new studio called The Outsiders working on an existing project soon to be announced.
In 2016 during the Game Design program at VFS, we had some courses in 3D graphics and it was there that I discovered I wanted to become a 3D artist. Environments have always been something very inspiring and important to me. I think it’s super interesting how we can get so affected by an environment both in real life and in games and movies. So the thought of creating an atmosphere for people to get totally immersed by is something very cool to me.
Veturheim Ruins: Start of the Project
By the time I started this project my portfolio mainly consisted of materials since that had been my main focus in my career at that point. So in order to make my portfolio a bit more diverse and stronger, I wanted to make a full environment that tells a bit of a story. Usually, when I’m working on a project at home, I want to do something that I don’t feel particularly confident in so that I can improve in those skills. So making something a bit more complex and organic that required me to step up my ZBrush and overall UE4 skills was another goal of the project.
When it comes to references my main inspiration was the new God of War game, the architecture was also inspired a lot by brutalism and some sci-fi shapes. I really like minimalistic and clean shapes which are also present in GoW.
Once I had an idea of what I wanted to do, I started blocking out spaces and base shapes in Maya. My environment design skills felt a bit rusty in the beginning so I went through a couple of blockouts before I found a layout that I was really getting the vibe from and felt that it could become something cool. I can really recommend this workflow to other artists if you feel like you have the time and patience. Your first blockout and sketch probably won't be your best one, or maybe it will be, but at least you’ve explored and enabled some options.
From Maya to ZBrush and Back
After I had a blockout I was happy with I started to refine the shapes in the main architecture a bit more. I was going for that raw brutalistic look so it was still pretty clean and basic in shapes.
I split things up into reasonable parts and imported them into ZBrush to start sculpting. My focus in the sculpting process was to break up the perfectly straight lines and surfaces, knocking up the edges a bit and adding some overall damage and history to it. I had 2 main brushes that I used for this, Trim Adaptive & Trim Smooth Border. I didn’t want to sculpt every little micro detail that was going to be in the stone surface, for that I was going to make a tiling material in Substance Designer and combine that with the sculpted details in the shader. Once finished the sculpting, I reduced it with Decimation Master and brought it into Maya for clean-up and UV mapping.
Since this was going to be a small scene I didn’t care too much about polycount and optimizing my mesh. It’s all about putting the time where it matters and to the things that are going to benefit the end result.
I baked all my maps in Substance Painter and made a Smart Material containing a modified curvature, a dirt mask, and a snow mask. I packed all this with the baked AO and from Painter, I exported one normal map and one mask map. I kept all my masks and the modified curvature procedural within the Smart Material. For all my remaining stone structures I just had to bake, apply the Smart Material, and hit the export button.
I made my tiling stone and snow materials in Substance Designer and blended all this in my shader inside of UE4. I used the same tiling materials for all the architecture, then blended the 2 object-specific maps on top of that. The normal maps with the BlendAngleCorrecsNormals node, and the curvature with overlay in the Base Color. With the help of some math, I also extracted the convexities to use in the roughness. Then I used the dirt mask to lerp in some dirt color in the cavities of the BC.
To add the snow I first set up my snow shader and then blended that with my stone using the snow mask from the mask map. I tried blending it based on vertex angles which worked great, but I felt that I got a bit more control by using a custom mask generated in SP. I ended up using the vertex angled method on my scatter assets and some other parts.
I can really recommend the Quixel environment breakdown videos, they have a lot of great videos when it comes to shaders and overall UE4 workflow.
The different trims and ornaments were made in Substance Designer. I’ll go a little bit more in-depth on how I made the one with the dragons. I drew the main shapes of the dragon with the curve tool in Photoshop since there was no reason to have these shapes procedural and making it in SD was just going to take me way longer. I then took that into SD, beveled and leveled it to get the height. I made one dragon scale shape and then used the Tile Samper node together with my PS mask to place it along the dragon. After I had combined the height maps of the dragon with its scale I slope-blurred it just a tiny bit to get a more natural feel to it.
When I had the height map done I converted it to a normal map and overlaid a cell noise to get the hammered surface effect. Then I created a mask for the oxidation with my AO and some blended noise. I then used that to make my metal, roughness, and color map. All my ornaments are built as trim sheets and placed on the mesh in Maya.
I always compare my base color against correct PBR values, these are very easy to find online. To do this a little easier I’ve made a node in SD that I plug my color into, the color then gets an average blur and I can compare that to 24 different PBR values stored in the node. I usually try to stay within the mid gray range for most of my materials in the beginning to create a soft and balanced image. Then towards the end, I can go in and push values in areas that I want to stand out and draw attention.
I usually try to get my assets into the engine as soon as possible. When I see them in the engine together with everything else I get a stronger sense of progress and can build up the motivation. It is also going to look a bit different in the engine, the light will interact with the materials differently, and so on.
I import and apply my materials as soon as I have the height and normal in a state where they are representing the idea of the surface I want to do.
I usually build up my environments in Maya and place everything the way I want it to have full control to customize and modify my assets. For the parts that are going to be placed only once in a specific spot, I use a locator as pivot so I can zero its location in UE4 and get it exactly in the same spot as in Maya. For some parts, like the angled pillars that are the same pillar placed 6 times rotated and mirrored, I want to have the pivot in the middle of the base so that it can easily be moved around in the engine. I then used snow, ice, and destruction decals to break up the repetition.
For all my snow and ice I’ve plugged in dithering to the pixel depth offset input in the shader. This really helps to get rid of the hard edges between intersecting meshes and get a soft transition.
For the snow and ice rubble, I downloaded a stone debris pile from Megascans and retextured it in Substance Designer. By the time I needed this asset I really just wanted to wrap up the project, and spending time making debris wasn’t something I was super excited about. By having access to the hole Megascans library and by being able to just modify the asset to your needs you can really help reduce the workload and still be able to reach the result you want.
Lighting & Post-Process
Exploring new lighting workflows wasn’t one of my goals with this project. Based on my previous work experiences I wanted to bake the light in the scene to get that soft bounce light and shadows. So whenever I am finished with an object and UV mapped it I duplicate my UVs and pack them in the 0-1 space. In that way I know I have proper unwrapped light maps and nothing is going to cause any bake issues.
The majority of the light in the scene is relying on indirect light from the skylight and sun. After I’ve baked the light I placed a few extra lights to highlight some areas.
The Exponential Height Fog is also playing a key part in the lighting and helps a lot to create atmosphere, in addition to that I also added some alpha cards with fog in specific areas.
Last but not least comes the post-processing and color grading. To color grade, I take a screenshot and bring it into Photoshop where I make my adjustments and apply it to a lookup table which I can bring into UE4 and apply to the cameras.
Overall, there was a lot of iterating on everything included as well as asking for feedback from many different people, while at the same time believing in my own vision and what it was that I wanted to do. This was really a developing project for me, I learned a lot and I’m excited to take all the new knowledge to my next project.