Jean Pierre Vargas has shared a comprehensive breakdown of the Favela Diorama project, explained how the props for the scene were modeled and textured, and showed how the environment's true-to-life visual style was achieved.
In case you missed it
You may find these articles interesting
Hi, my name is Jean Pierre Vargas and I am a freelance 3D Environment Artist from Spain, currently residing in the United Kingdom and looking for an in-house position. I studied Fine Arts at the University of the Basque Country, and later, I did a Master's Degree in Art and Technology at the same University. The program was very focused on Contemporary Art practice and theory, and it wasn’t very focused on creating 3D art. So, I had to learn 3D mostly on my own while I was studying, but my education was useful because it provided me with good analytic visual skills, and I learned a lot about different forms of art and their contexts.
For my latest portfolio piece, I wanted to build something more organic, an environment that seemed lived in with contrasts in shape, materials, etc. A type of environment that matched these criteria was a Favela environment and due to time restrictions, the project was scaled down to a Diorama.
This project was also part of the Dinusty Empire Environment Art Mentorship with Jeremy Estrellado, Lead Environment Artist at Ubisoft Massive. It was a great experience to have Jeremy’s feedback and guidance throughout the whole process.
Blockout and Scale
The very first step of the project was gathering some references from pictures of favelas, but I also used Google Street View and tried to navigate around favela neighborhoods in Brazil. This way, I was able to gather more interesting references that are not usually found just by searching pictures, and these inspired key details on my environment, like plants growing between each flat of the building, certain props, the concrete layers on top of the bricks, etc. I also took as reference other artists’ works, like Máté Válent's As Favelas environment.
After gathering a good amount of references, I started blocking out the building in Maya. I decided to build a four-floor Favela built beside a mountain cliff, in which the higher the floor, the less finished seems to be the construction. This would give the impression that the environment was built generation after generation, maybe as if a family was growing in members and expanding the building over time. On top, I decided to add a wood cabin, which is something that got my attention from some references and it would further accentuate this idea.
At first, I wanted to go with a modular approach, but the more I worked on the project and analyzed the reference images, the more I realized that this approach wouldn’t be very suitable. Favelas are sometimes built in steep mountain ladders, and often upper flats are extruded or intruded over lower ones. This is something that I wanted to represent.
So instead of going for a modular approach, I built each flat as a separate mesh, which I then imported into Unreal. I measured the scale using the UE mannequin and after some iterations and adjustments, I considered them finished. Something that I also wanted to include in the environment was a bit of nature, so I added some Megascans cliff rocks and Megascans vegetation and placed them in Unreal's foliage toolset.
Textures and Shaders
Base floor material
The environment is textured through Megascans surfaces and authored surfaces, which I created using Quixel Mixer or Substance 3D Painter. Quixel is a great tool for creating realistic tileable materials combining surfaces from the Megascans library. I created two painted wall material variations this way – a smooth version and a bumpier one.
The shaders I created for the building are using Material functions, that way I can easily iterate by changing different textures.
For the paint colors of the base floor, I used a secondary UV channel, then I painted an RGB mask in Substance 3D Painter. This would allow me to apply different paint colors on different areas of the model, as well as to separate a layer of bare concrete. The next step was to work on the shader and set up parameters so I could pick the specific colors of paint.
The shader also has a mask to add a general pass of dirt, and the bumpy paint material and a mold material are controlled through vertex color.
Upper floors shaders
Favelas are usually built with bricks and concrete, and most of the time, the brick is left out without any type of concrete finish, and other patches of concrete appear on top. This makes favelas have an unfinished look. In order to achieve this, I created a vertex paint shader much simpler than the one for the base floor, which uses the height lerp node to blend between the base brick and the rough concrete, a cleaner concrete, and mold.
I added some blend angle corrected normals nodes to the brick and the rough concrete layers as I wanted these layers to interact more with each other and added more controls to the mold layer, as I wanted to have further on the molds’ falloff.
My approach with the road shader is really similar, just a series of material functions combined through height lerps. It can basically be broken down into two different asphalt types.
The wood cabin was something I was really interested in creating. The image below is one of the materials, a liquid layer for puddles and an opacity layer set to 0. The shader mode is set up to Masked, and through vertex paint, I’m able to mix the asphalts, paint puddles, and create an organic-looking transparent edge, which fits the whole environment aesthetic of my main inspirations, it appears as if each plank of wood was grabbed from a different place, or from scraps from previous constructions or woodwork.
Achieving a similar level of variation was key for me. In order to do it in the most efficient way possible I created a trim shit composed of bits of Megascans surfaces. These wood surfaces were usually wood floors or made out of beams, so I had to remove the seams. Secondly, most of the wood surfaces looked very new and wouldn’t fit the environment. To avoid this I edited them, reducing their saturation to make them look as if they had been exposed to the sun for a long time and adding some color changes with tileable masks as well to add grunginess.
This process saved me a lot of time, and in the end, I only had to model very simple geometry for the wood planks, which I then UVed so they mostly matched one of the plank trims.
With Material instances, I could fastly change the texture offset, changing the look of the planks.
After assembling all the pieces and applying different instances, I completed the cabin by reusing some corrugated metal Megascans as roofings. The same object was useful as the door. And lastly, I added some decals for extra wear.
Silhouettes are key when you’re trying to create a realistic environment. I took my time to skew most of the geometry of the buildings on the edges ever so slightly so that the edges wouldn’t be a hundred percent straight.
One interesting Idea that I had for the base and first floors was to use edge decals, which was a technique I haven’t used before. I was placing some concrete beams Megascans in the environment and I thought I could use the same asset to bake an edge decal from it.
I did it by placing some super simple geometry on the high-resolution mesh from Megascans, then I UVed them and baked the normals in Marmoset Toolbag. After that, I painted a simple opacity mask in Photoshop. This is the result I achieved on the edges:
For the brick floors, I modeled some simple bricks in Maya and UVed them to match the tileables I was using for the building. I applied the same vertex paint material to them as the brick walls and placed them on the edges of the brick walls, giving a more natural feel:
Props and Set Dressing
In the first stages of the process, I started set-dressing the environment with Megascans assets. This was a great way to add detail and context to key parts of the scene. However, there were many objects that I knew I wanted to add and I had to author myself, starting by modeling them in Maya.
I decided to go with two different approaches for the props' texturing and their shaders. The first set of assets I worked on were objects that were made mostly out of rusty painted metal. This includes the stairs, window frames, and railings of the building and balcony.
For these objects, I took a Material layers approach, using tileables on the first UV channel and a second UV map channel to drive a mask for them. All the objects shared the same material layers, which were instanced to add variations to each asset. The base was a paint layer, after that a rust layer, then some dripping rust, and finally some dirt.
The RGB mask was created using a mix of generators and hand-painted detail in Substance 3D Painter.
For the rest of the props, I went with a more classic PBR material and all the texturing was done in Substance 3D Painter. As some of the objects were not going to be seen from a close-up, I didn’t spend much time on their textures, instead, I focused more on making them fit the whole scene aesthetic.
I also used Marvelous Designer for the hanging cloth simulation and for creating some very simple curtains.
After creating all the props, then I had to place them in the environment. Something that I tried was to make objects feel more grounded and connected to the whole scene. In order to achieve this, I used drips and dirt decals. I also added graffiti, paint patches, and cracks on the walls.
For the road, I added some asphalt patches, trash, and debris decals.
I also added some Megascans vegetation in the corner of the buildings, which helps break up geometry intersections.
Lightning and Post-Processing
For the lighting, I knew from the beginning that I wanted to try a sunset look with warm tones. Something that I was really excited to try about Unreal Engine 5 was to try Lumen. It is a fantastic tool that saves lots of time as it is no longer necessary to bake lighting. The lighting setup is fairly simple and just consists of one directional light, one skylight to help with global illumination and reflections, and one sky atmosphere.
During post-processing I tweaked very few things, I created a LUT by adding some curve adjustments in Photoshop and minor color corrections.
Here are some final renders:
Creating this scene was quite a challenge on all levels: artistically, technically, and from a time management perspective. It took six months of working on it part-time almost every day after my full-time job. I know there are many things that could still be improved, and maybe in the future, I will revisit this project.
It was also a great experience to have Jeremy Estrellado’s guidance throughout the process. It helped me a lot to make certain decisions and to build the environment much more efficiently.
80 Level has been a key resource for me, the amazing projects that are usually showcased here have inspired me throughout my years of learning environment art. The breakdown articles have been crucial resources to learn new techniques. Having a breakdown published here feels like giving back a little to this platform, which has given me a lot.
Thanks a lot for reading, and I hope this article also inspires someone to take on a new creative challenge.