Brandon Mays did a breakdown of his modular UE4 environment made at Gnomon.
Introduction
Hi, I’m Brandon Mays and I come from Austin, Texas. Before Gnomon, I studied Computer Science but after discovering Blender and the work of artists like Vitaly Bulgarov, Furio Tedeschi, and Cki Vang I became obsessed with hard surface modeling and wanted to continue in that area after school. Previously, I’ve worked as a concept artist/3D modeler for an indie game project over the internet which, unfortunately, crashed but I got some experience and came to realize how difficult developing a game can be.
At Gnomon
Going to Gnomon has been an incredible experience that I’m very grateful for. I’ve learned so much that it’s hard to believe I went from barely understanding what a UV map is to making full 3D game environments. I refer to it as a real-life Hogwarts. I was one week away from committing to a different school in LA because Gnomon didn’t have the BFA program at the time but thankfully they announced their degree program just in time for me to switch. It was one of the first schools that drew me in because of the incredible student work they put out every year. That level of work indicated to me that the staff at Gnomon knew what they were doing and that it would be an exciting challenge for me to try and get my work to that level.
UE4 Environment
The scene I will talk about was my first serious game environment so my main goal was to try and match the concept as close as I can and maintain 512 pixels per meter squared while also learning to modularize parts, use trims and decals in different ways, and make my first game ready foliage. Thankfully, I had two awesome instructors, Raul Aparicio and Anton Napierala, to help me along the way.
Pre-Production Phase
The concept for this environment came from Ya Lun who developed this beautiful medieval environment that had just the right amount of foliage, modularity, and style. I also created a Pinterest board of European castles and their unique gardens in order to get a better idea of what my materials and textures were going to look like. Since the concept only covers one angle, I have to imagine what the unseen areas look like which took some time spent scouring reference in order to model something that looks like it fits into the world. The main door, for example, was based on pictures I found of incredibly ornate doors found in France. The structure of the castle was not exactly clear in some parts of the concept so in the blockout phase I made sure those areas worked well and fit the world before moving on. I was very concerned with getting the colors to match with the concept because it was the very specific feel and color combination with the white and orangish-yellow that made this concept stand out to me. However, for my first pass of texture and materials, I didn’t worry about getting the colors exactly right because that would be taken care of near the end during the polish phase.
Blockout
The entire blockout was modeled in Maya while the hero pieces were done in ZBrush. For the skull and statues, I did a very rough draft sculpt in ZBrush and then decimated to a poly count that would work in UE4 that way I could make sure the proportions worked with everything else in the blockout phase before moving on to a final sculpt. I worked in centimeters in Maya and before exporting would scale everything up by 100 to get to Unreal scale. Raul Aparicio had some awesome Maya scripts for us to use which would create hotkeys that let you scale up the grid in Maya to help you keep your assets snapping to the grid. For the blockout phase, I didn’t bother snapping to the grid because I was still experimenting with different proportions and tried to keep everything to multiples of 2 or 4. When the blockout was done and proportions looked good in the engine I went back and snapped everything to the grid. To make sure scale was accurate I imported a 6ft human into my blockout scene so I could always compare each piece and make sure it didn’t look odd. It was an ongoing process of bringing things back and forth between the engine and Maya and adjusting scale while also figuring out how to break up and modularise larger assets. Raul wanted us to keep every asset smaller than 4 meters which meant I had to break things like the columns and pillars up into 2-meter pieces I could snap together. I didn’t block out the foliage with anything which might’ve been a mistake but I did block out the garden walls I knew I would be putting the bushes and trees behind. The design and scale of these areas were based off European castle gardens I had gathered in my reference. When the blockout was done in Maya I used the handy Game Exporter in Maya to quickly send everything to UE4.
Architectural Elements
For each architectural element, I first created a super simple blockout that I would put together with everything else in UE4 to make sure proportions were correct and matched the concept. After making sure the proportions of each piece was correct, I then went back and broke up the pieces that were bigger than 4 meters and figured out where they would snap together. For elements like the bunch of square pillars under the horned statue, I broke them into multiple pieces that snapped together. For that element specifically, I made the trim area in one piece and the long middle part was broken into 3 separate pieces. There were certain areas where the concept was vague so I filled them in with pieces from other areas sometimes scaling them differently to make it less obvious they are reused pieces.
Assets
For assets like the skull and statues, I had to take some creative freedom and tweak them a bit to better fit in the world. I added the lights to the skull’s eyes to help draw the overall focus to that area and as just an excuse to add cool fantasy lights somewhere. I also changed the design of the helmet of the statues with the sword to be more angular to help them look more militant. Each asset was started as a blockout in ZBrush then decimated and checked in UE4 to make sure proportions were good. For assets like the skull, in order to maintain 512 pixels per square meter, I had to break them into 2 separate UV sheets. The statues with the swords were 4 different meshes that I first sculpted in T-pose and then baked and finally posed before sending to the engine. The most challenging hero asset was the statue with the horns and spear because of the asymmetry. I sculpted the body separately and in symmetry at a low resolution and then posed it with the spear, upped the resolution, connected the head with dynamesh and finished the hi-poly sculpt. To make the lo-poly meshes for each of these assets I used a technique showed to us by Raul Aparicio using the decimate feature in ZBrush.
I decimated to a point where the edges would be good enough to support a good bake and maintain the silhouette I wanted. Then I masked the edges out and decimated the flat areas even lower which I then took into Maya and cleaned up. After clean up in Maya, I baked out the normals, AO, and curvature which I plugged into a Substance Designer node graph to get a few custom masks to use for material blending in UE4.
Materials
I used a lot of material functions and instancing in this project to make plugging in the maps I created in Substance Designer and texturing each asset in the engine as quickly as possible knowing that I could go back in afterward and add an extra layer of detail with decals and vertex painting. For example, everything that used the same white stone material that’s used in most of the environment uses an instance of a parent material that allows you to plug in your normals and 3 different masks for creating edge wear, dust, and grunge. The instance also has controls for adjusting the color and level of each mask by parameterizing those controls in the base material.
Because I had to create tons of different architectural assets quickly I created a Substance Designer Graph that allowed me to quickly take maps baked in Marmoset and plug them into Substance Designer which would then export the 3 masks for edge wear, grunge, and dust into one pack map. After this process, it was just a matter of plugging the pack map and normals into my material instance for the asset and it was done. For example, the green channel of the pack map would be used as the edge wear mask for the “Matlayerblend_MultiplyBaseColor” node to multiply a color over the material to get edge wear. No asset was textured uniquely with Substance Painter, they were all textured with material blending and decals in the engine.
The glass for the front windows was done following an awesome 80 level tutorial found here with some minor tweaks. I made only 1 trim sheet for the whole project by modeling some filigree pieces in Blender, capturing the normals by applying the normal material in ZBrush and rendering an image, and finally texturing in Substance Designer.
All textures were made using Substance Designer while a few were made using Quixel Mixer. For the stone textures I found some interesting results blending 2 stone images I found online plugged into their own bitmap2material node and experimenting with a levels node and different blend modes.
Effects
The camera animation was all done with level sequencer where you can easily animate cameras, fade-outs, and switch between any cameras you’ve created. The particle effects were a last-minute thing I added after following a simple dust tutorial. To create the glowing eyes I put 2 rectangles with a blue light material applied into the eye sockets. Then I duplicated the dust particle system and dust material and tweaked the particle size and added a blue emissive light to the new dust material. The leaf particles were also a duplicate of the dust particle system with a new leaf material applied and a few changes to the fade out and gravity of the particle system. The particles are GPU sprites which means I could fill the scene with quite a few and still have them run quite well in UE4 rather than using the more intensive CPU particles. Since I wanted these effects to be quite subtle, it didn’t matter whether I used GPU or CPU particles because there are so few in the scene.
Lighting
The lighting was done to match the concept as close as possible using the default skylight and directional light. The directional light let me get the right angle I needed to match the concept with the temperature settings turned off and volumetric scattering turned to about 4. The overall warm atmosphere of the scene was achieved by tweaking the textures and color-correcting done with a post-process volume. There is also a very subtle exponential height fog volume with the fog scattering color turned to a slightly warm color.
Brandon Mays, 3D Artist
Interview conducted by Kirill Tokarev