Learn How to Make A Realistic Modular Environment in Unreal Engine 5

Environment Artist Giovanna Barcelos walked us through the Corners of Croatia project, explaining the step-by-step process of making the beautiful realistic town scenery and sharing useful tips and resources for beginner 3D Artists interested in mastering Substance 3D, Maya, and Unreal Engine 5.

Introduction

Hey everyone! I'm Giovanna Barcelos, an Environment Artist and a recent graduate of Think Tank Training Centre. In this article, I'll outline the pipeline for creating my most recent environment piece, Corners of Croatia. I'll also share techniques, workflows, and the challenges I encountered during this project, along with reflections on what I could have done differently.

If you're unfamiliar with the process of creating an environment, I'll list the steps I followed and provide explanations and tips along the way.

The steps include reference gathering and grey boxing, tileable materials creation, modeling, UVs, and sculpting, foliage blockout and creation, asset texturing, polishing, and finally, lighting and post process.

Before getting into the 3D talk, however, let me quickly share a bit about myself.

I grew up with video games as a part of my life. Since I was always moving from city to city as a kid, my brother and I were each other's closest friends and gaming was our way of bonding. So, it only made sense that when I finished high school, after realizing I had a passion for art and tech, I'd pursue a career in the field I had an established knowledge and love for.

That's when I learned about Think Tank Training Centre, and thankfully, received a lot of support from my family to leave all I ever knew in Brazil and have a serious go at working with games. I started my classes having absolutely no knowledge of 3D, and after 2 years of dedicated practice and studies through the course, I managed to learn many industry techniques and work on my first demo reel piece.

So if you're someone still at the beginning of your journey in 3D reading this, I hope what I share today will give you information that helps you move forward on your own journey and take the steps that once felt obscure and daunting to me.

Reference Gathering and Grey Boxing

If there's one stage I deem crucial to spend time on, it's this one. The foundations laid here influence everything that follows. While it's essential not to get stuck in this step, don't underestimate how much work you can save in the long run through the value of thorough reference gathering and proper blockout.

Concepting and References

Making an environment starts with an idea that inspires you to create.

In my case, I was moved by the beauty of the Old Town area in Dubrovnik and Split, Croatia. In search for reference images I stumbled into a cozy little street on Google Maps called Ulica Zvijezdićeva, I loved the lush feeling and the old "medieval" vibe the street had.

However, I felt like a bit more visual interest was missing if I were to just translate what was there into 3D. So I decided to build up my own vision of the scene by gathering as many images of Old Town Croatia as I could and picking out the supporting references I'd need to build up a scene I could see coming to life in a game.

Something I learned through this experience is how important it is to have proper references to make sure most decisions you make are grounded and feel believable. PureRef proved invaluable for organizing my reference images.

Grey Boxing

Once the concept was clear, I grey-boxed the scene in Unreal Engine 5, refining the layout and gathering asset-specific references. This step involved placing simple shapes in Unreal, mostly boxes, representing scene elements, and blocking out lighting.

It's crucial to ensure assets are proportionate, with proper thickness, and define the layout without delving into detailed modeling. A good way to keep track of proportions is to have multiple Unreal Engine 5 character meshes in your scene. This way you can always compare how your assets look next to what the average human height would be.

An extra step I wish I had followed is to block out the materials by assigning a color that represents each texture you'll be needing (e.g., applying red to everything that would use the same wood material or assigning blue to all that share the same metal type). This way I'd have had an idea of which and how many materials I need to create from the get-go.

Setting the Scene for Modularity

After establishing a satisfactory blockout in Unreal, I made a list in a Google Doc file of all the assets I would need to make. This is where thinking modularly gets really important.

When I first listed my assets, my mentor helped me realize there was going to be an insane amount of work ahead of me if I were to make everything I had in mind in a unique manner. So, I tried to find ways to repeat assets as much as possible, reduce the number of props I'd need, and have my architecture separated into fractions that could be duplicated and repeated in Unreal. This way I'd be able to cover more ground while doing less work. I updated my blockout as I reduced my asset list to reflect what was written.

Here's an image of most of the finalized modular pieces both for architecture and props:

As you can see, I managed to fill out a larger scene with a relatively small amount of props and assets. Having the list of assets written out, I searched for more specific references that illustrated how I wanted each element to look.

I made sure most images would feel cohesive in the setting of modern Croatia and would usually have 2 or 3 main references for each model and a few more supporting references that I'd only check if I needed a bit more clarity on different angles or close-ups of texture.

Having everything set up and organized, it was time to get into the production part of the project.

Tileable Material Creation

Substance 3D Designer

After the blockout was set up and I had a clear vision for what I wanted the scene to be, I went into creating the tileable materials that showed up most often, such as the floor (both in the main alley and cafe area) and wall (for belltower, houses, and café building) materials, a standard wood, metal, and more.

This is where having that blockout of materials would have been handy, so I could have listed them out as easily as I did with the props. I made all the textures using one of my personal favorite software, Substance 3D Designer.

I was lucky to have an insanely knowledgeable teacher who went over producing materials in Substance 3D Designer while truly understanding what each node does. Delving into the more advanced techniques he taught would take me too many paragraphs, so I hope it's helpful that I recommend watching some of the videos he's recently released through YouTube on the subject.

However, I can say from my experience in creating multiple textures that I've found mastering Flood Fills is crucial for achieving better texture variation.

I've prepared a brief demonstration, showcasing how I employed Flood Fills in most of my materials to achieve more natural and organic-looking Normals and Height Maps.

As you can see, with a few maps created by using Flood Fill and its branching utility nodes, we can use them to blend into the Height and Normal information to go from a flat-looking texture to a visually interesting and organic result, as well as providing you with more masks that will give you control over this creative process (masks that can be used and altered when also creating the Base Color or Roughness Map).

This workflow works best with materials that are composed of many elements with defined outlines such as brick walls, mosaics, tiles, pebble floors, etc.

I found incorporating this quick tip into my process to be extremely valuable, but there’s so much more to Substance 3D Designer. As I've learned through this project, though, the best way to improve at this software is by following tutorials and lots and lots of practice.

Vertex Painting and Parallax Occlusion Mapping

Another tip I can give you, however, is that a great way to achieve a rich variation over large areas textured by tileable materials (such as walls and floors) is through the use of Vertex Painting.

Since I decided not to use Nanite on my scene to explore the technical restraints that have been part of the gaming industry for years, the best way to have an organic-looking surface with a sensation of depth was through having a Master Material that incorporates Vertex Painting paired with Parallax Occlusion Mapping (POM) and have that applied over a simple "flat" mesh with enough supporting geometry to apply the vertex paint.

Node for Vertex Painting is in red and for POM in green. This is my shader setup for my Floor and Wall Materials.

Modeling, UVs, and Sculpting

During the modeling stage, I noticed I had a problem in which I would tend to spend too long working on the same asset, trying to achieve perfection.

Perfectionism has its upsides, but when it comes to making a bigger-scale scene, it is paramount that you're able to let go of perfectionism and worry first and foremost about getting everything in the scene as quickly as you can.

A strategy that helped me achieve this was separating my modeling stage into two passes. The first pass consisted of getting each grey-boxed asset and refining the silhouette, double-checking proportions, and making sure every element that composes that asset is present. In general, if I caught myself trying to refine my assets to the point of completion, I knew I was going too far and would skip to the next model.

After going over every asset, I went to the second pass, where I refined details and geometry that needed to be corrected. With this approach, I made sure the progress would be seen more uniformly through my scene with a consistent level of quality.

As I modeled, I also went through setting up my UVs. Although UVing might seem like a straightforward process, there are quite a few techniques that can save a lot of time when you reach sculpting and texturing, as well as making the texturing of big assets more viable.

For this project, many of my architecture assets were made from a smaller kit of "building blocks" that, after UVed, I altered as required to form my windows and door frames. Since the assets were quite big, this was the way my mentor showed me to be able to have some unique detailing throughout the assets, while still making the most of the ease of just applying a tileable texture in Unreal.

You can see in the image the foreground assets are my building blocks, and in the background are the assets I managed to create with them just by cutting down their size and adjusting their rotation and position.

By having a few UVed parts that I could use to build my frames, I would only need to sculpt damage on the edges of a handful of pieces instead of every single window and door frame individually, which would not only take very long but require a lot of extra textures just to store very similar baked Normal information.

By doing it this way it all fits in a single UV tile, just one texture adds crucial information to 7 different large assets.

Once all the assets were built, I gave them two UV sets: one for the Normal information to be plugged in, preserving the 0 to 1 nature of the building blocks, and a second one where all the UVs would be set up as if for a regular asset and spread out through multiple UV tiles (to preserve Texel Density) so that a tiling texture could be applied to it.

The best of both worlds, the assets get varying surface details but still contain sculpted information from the 0 to 1 set.

As for smaller assets, I would UV them as they were modeled and try to fit as many assets as I could into one UV tile. And if it was simple enough, I'd make a high-poly version of the asset in Maya to make sure I wouldn't need to spend too much time sculpting every single model.

After all my modeling was done, I made sure to go back to each asset and add some "unevenness" to it. Grabbing an occasional vert and scaling or moving with soft select, or slightly skewing elements that would make sense to be a bit tilted was essential in making the scene feel more alive and grounded. In general, breaking symmetry and the natural straightness of CG really helps in making things feel "real".

Foliage Blockout and Creation

Blocking Out with Megascans

When it came to foliage, I started by blocking out what plants I wanted to have by placing some placeholders from Quixel Megascans. Being able to layout the foliage and figure out what I would need and how many variations would be required helped me go into the creation process with a solid idea of how I wanted each plant to look like to achieve my vision.

Creating Foliage Atlas and Models

As I was working on this project, I realized there were many different approaches to making foliage, and I ended up having to use a different method for each plant on my scene.

In terms of texturing (aka making an atlas) for example, the hosta plants, ivy, and hydrangeas were made by sculpting leaves and texturing them in Substance 3D Painter. I closely followed this article by Sven Mrđen that describes his process in an incredibly didactic way.

The following images show the high-poly sculpt (in red) being baked into the low-poly (white square plane), and a screenshot of the final texture in Substance 3D Painter, which was made on the low-poly mesh by using the maps obtained from the bake, Normal, Ambient Occlusion, Curvature, Opacity, etc.

Meanwhile, since canna lilies have a leaf pattern that is very straight and has a higher frequency of veins (which is difficult to reproduce when sculpting by hand), I opted to make the atlas entirely in Substance 3D Designer, making each individual shape I would need and combining it into the same texture.

It was fun making an atlas in Designer.

Given the procedural nature of the software, it was quite easy to obtain multiple variations of a single leaf for example by just adjusting some sliders, such as obtaining variation in how many holes are cut into the leaf.

As for setting up the models, for most smaller plants I arranged and placed the leaves by hand in Maya, while for the fuller vegetations that required more variation (in the case of the ivy and bougainvillea), I arranged in SpeedTree.

The use of this software allowed me to quickly set my plants in the shape I wanted, and to make variations all I had to do (once I had my attributes tuned in) was to press the randomize button and change some of the attribute sliders as needed.

After doing so, I baked each variation into a plane, and using the baked atlas, I set it up as a material in Maya and made simple geometry. I made a "kit" I used to build up each proper ivy variation asset so that they'd have a bit more density and apparent volume, as you can see in the side view of each final ivy asset.

Huge shoutout to Milos Komazec, he is an incredible artist and the one who showed me this handy approach to making Ivy. Be sure to check out his work!

Asset Texturing

Asset texturing is one of the areas I would like to improve on.

Most of my assets in this scene were textured 0 to 1, and although I shared as many UVs as I could in the same texture space, that still ended up being costly in actual game production.

For my next projects, I hope to explore more the use of Material Layers, which allows for more flexible texturing, for better control in maintaining Texel Density and overall seems like a more modern approach to texturing than just doing it 0 to 1.

If my future projects require many assets that don’t need unique texturing, Trim Sheets would also be a viable asset texturing technique to speed up production. For this project, I textured all my props using Substance 3D Painter, except that most of the materials I used I made myself in Substance 3D Designer.

Texturing is one of the stages where you can do the most visual storytelling aspects of a prop. I tried to make sure my assets all looked a bit worn out so that the space would feel more lived in. But as I mentioned, I still have some way to go to be able to successfully express a story through texture.

A trick I can show, however, is the use of Color Tinting in your Unreal shader to change the color of your asset, which allows for quick and easy asset variation. For example, when texturing my plastic crates, I made sure the Albedo in Painter was a light gray value so that when brought into Unreal, I could set up the Main Material for those props with a color node that would be multiplied or overlayed into the Base Color. By exposing the parameter for the color node, I could make instance variations that have a different tint each.

This way, with one texture, I could have an infinite variation of plastic crates.

It seems like I have four different crates but it’s just the same geometry with different Instances of the same material, where the only change is the color assigned in the Tint parameter. The crate to the left is the original texture with no tint.

Polishing

Polishing is the stage in which everything comes together in terms of feeling coherent and lived in.

I made a couple of "dirt" Decals in Designer that I used to dirty the corners and edges of my floors, add some color variation to my walls, and cover pretty much most architectural points of contact, for in real life usually those areas get dirtier.

The same goes for areas where props are resting on the floor and walls.

The images show a before and after decal use. It helps with some color variation on the wall and better integration with props touching the floor.

I also made a few brick meshes that I placed coming out of walls to add depth, as well as covering every building edge I had with even more brick geometry, making it more uneven and believable.

Overall, I tried my best to break up any clear straight lines to make it feel more natural, looking over my entire scene to review any set dressing changes, assets, or texturing issues.

Lighting and Post-Process

It took me many attempts to figure out the lighting in my scene.

I struggled to find guidance on how to technically and creatively approach it, and ultimately, what allowed lighting to feel like less of a blur was the "Ultimate Lighting Course" on ArtStation. That tutorial is what pushed me to achieve the final lighting in my scene and I'm grateful for the heaps of detailed information Tilmann Milde shares on Lighting with Lumen in Unreal 5 and encourage others, who also feel stuck at lighting, to check it out.

I still have a way to go in a deep understanding of the technicalities, but what I can say is that lighting is a crucial part of any project. It is what defines the quality of your presentation.

It doesn't matter if you have the most beautiful models or textures in your scene, if they're not lit properly, they won't read well. It is what makes or breaks a project. I'm glad I spent my time to get the lighting to where I wanted it to be and I would recommend putting in the time to learn a solid foundation through online courses.

Although this was a stage that took me a while to figure out, it was one of the most satisfying, for I could slowly see everything come together into its final look.

Final Thoughts

Working on a project like this on my own was hard. However, through it, I got to meet many other passionate people who guided and taught me so much about different software and techniques to be able to finish it.

I cannot recommend enough getting in touch with the great community of artists that is out there. You'd be amazed at how many people are willing to help out if you ask for feedback or some tips.

I sincerely appreciate you taking the time to go over my process on Corners of Croatia and hope the information I shared here is beneficial in some way. If you liked this article, check out my ArtStation, where I’m going to post a couple more breakdowns. Thank you and I wish you all the best on your journey!

Giovanna Barcelos, 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