logo80lv
Articlesclick_arrow
Research
Talentsclick_arrow
Events
Workshops
Aboutclick_arrow
profile_loginLogIn

A Step-by-Step Guide on Recreating Venice City View in UE5

Florian Wagner provided a detailed breakdown of recreating Venice street view in Unreal Engine 5 and shared some useful texturing and composition tips to achieve a desired look with rich and natural layering.

Introduction

Hi everyone! I'm Florian Wagner, a 23-year-old 3D Environment Artist from Germany. I began my 3D art journey at the Fachhochschule Dresden University of Applied Sciences, where I built my fundamental 3D skills and discovered my love for game art. From childhood on, I have been very interested in architecture from different epochs. When I found out about environment art later, I instantly fell in love with it.

During my studies, I worked on a horror game demo inspired by Backrooms in Unreal Engine 5 and later on some smaller 3D side projects. I also completed an internship as a 3D Artist in the point-of-sale cosmetic furniture industry, which was really interesting and a new experience for me.

After I finished my Bachelor's Degree in Fine Arts, I applied to dozens of game studios across Germany. I either received a rejection or nothing at all, an experience many juniors like myself can probably relate to. I discovered that I'd need a lot more skills in order to get my first job. The skill level for entry was much higher than I had initially expected.

That's when I decided to start my Venice project to show what I'm capable of. In total, I've spent about 1,000 hours over the course of a year working on it.

About the Venice Map Project

I knew I wanted to do a big project that sets me apart from other people and makes me proud of myself. At the time, I felt very anxious and had low self-confidence in my art skills, especially when comparing myself to everything I saw on the ArtStation front page. Ultimately, my goal was to earn an entry card into the gaming industry with the help of the project. However, in order to achieve this goal, I had to acquire more knowledge about certain tools, skills, workflows, and software.

I've loved playing the Anno series by Ubisoft Mainz since I was a child, beginning with Anno 1404 in 2010. In an extension, they released a Venice-themed island, which I really liked. This is where my initial idea of the Venice Map comes from, and that’s the first reference I had. Assassin's Creed II's Venice has also been an important reference for me, as I've loved the game way back, and it's still one of my all-time favorites.

When I initially started out the project, I didn't have much knowledge about blockout stages. I watched some tutorials on YouTube, but after a month, I hit a roadblock. I felt like I was missing a big part. I needed workflows and guidance as I realized that a single YouTube video without a connection wouldn't assist me anymore.

That's when I discovered the Environment Art Mastery course by Thiago Klafke and decided to buy it. In retrospect, this was one of the best decisions I could've made at the time, as it turned out as the perfect guide and piece of the puzzle I was looking for.

After I began watching some of the videos of the course, I deleted 90% of my previous work and started over. I gathered more references and made a new design blockout that stayed pretty close to the ideas that I had before.

Modeling

I set up the design blockout as if it was a small part of a larger city with multiple entrances to the map and mostly pretty high buildings. There are some smaller side streets with tighter spaces and larger open areas, which give the eye more room. The palace is the point of interest and instantly catches the observer's eye. The canal system separates the map into three different sides with two bridges connecting them.

The modeling was done solely in Autodesk Maya. My first scene was entirely made out of modular elements; but at times, it felt too restricted. So I decided to go with unique building shells, modular windows and doors, as well as doing a lot of the modular work inside Maya to reduce workload. 

Everything I created inside Maya utilized the same grid steps as in Unreal for easy assembly in the engine. An important modular object I made inside Maya was the stone railing, which I used countless times inside the level. I made a one-meter-long version once and could then easily assemble it on different buildings, windows, and bridges inside Maya with small adjustments sometimes.

For the palace, I decided on a different approach and made it entirely out of a modular kit. It also uses Nanite, as some of the modules are quite heavy in their poly count. 

Nanite was also used on the building's ground floor wall material, which is a damaged stone tileable, as well as on the stone ground material. They use Nanite tessellation in the material to have a high resolution. The roof is using Nanite tessellation as well, but an older technique where it's configured inside the mesh editor. It has a much lower resolution because you will see the roof only from a faraway distance.

Texturing

I created 95% of the textures inside Substance 3D Designer, and for the props, I used Substance 3D Painter. The only materials I didn't create were the red plaza material from Megascans, as it was already perfect for this scene, the foliage, and most of the decals.

For the tileables, I've always used the same workflow, starting with the height map to the normal map. Then, get in the color, roughness, ambient occlusion, and, if necessary, metallic.

In the example of my Damaged Stone Tile Wall graph, you can see the different parts of the graph. First, I get the overall shape done, and then, the base color and base normal; after that, different kinds of damage, dirt, gravel, dust, and other types of variations. I usually have the ambient occlusion pretty subtle and just get the overall shape. Roughness and metallic originate from the height map and then get edited to fit.

For the window and door trim sheets and some ornaments, I used a different workflow. Using the window trim sheet as an example – first, I modeled the basis in Maya and applied vertex color to separate the glass material, as well as the horizontally and vertically aligned wood. Then, I baked a Height and Vertex Color ID Map inside xNormal. Finally, I imported them into Substance 3D Designer and made the actual texture using the two textures to start.

In Substance 3D Painter, I made texture sets for the lantern, the metal railing kits, and the flower pots. I kept it fairly simple and used many of the preexisting smart materials and one from Substance Share. With some variation and layering, I achieved the desired look reasonably quickly.

Composition

In my opinion, good composition is one of the most important skills to have as an artist. As I didn't know much about it at the time, I researched a ton about different concepts and rules. I can highly recommend the YouTube channel ArtOfSoulburn for this.

The buildings are supposed to look rough, dirty, and damaged. But at one point, I figured out that I needed to reduce some of it. I followed the 80/20 rule where 80% of the buildings look old and crumbled and 20% less so to achieve variation and tension. I also tried to consider having primary, secondary, and tertiary shapes, which basically means having spaces that are highly detailed and ones that are less to allow room for the eye to relax and bigger shapes to appear. Using Volumetric Fog and a Height Fog, I tried to achieve some layering between light and dark, where buildings further away from the camera get lighter and, therefore, easier to visually separate for the eye.

Throughout the time working on the project, I've spent countless hours looking through Google Maps and stock images to get a feel for the place. I realized early on that I'd need to create a ton of smaller details, especially because I followed a pretty realistic art style. The most important thing for me was nailing the layering of different materials on the walls. Most buildings in Venice have a solid brick wall as the base and then lime mortar on top of it. As they get old, the mortar gets dirty and changes color due to sunlight exposure, rain, and the maritime climate. In some areas, it gets crumbly and destroyed. That's where the brick is then showing through, just like the mortar is exposed to these external influences.

For this task, I decided to use the Material Layers System in Unreal. First, I concentrated on the mortar. With the help of Thiago, I achieved my desired look using a Procedural World Scale Grime and a separate overlay, which I then plugged in as Material Functions inside my Layer Shader. With a few simple noise masks made in Substance 3D Designer, I could create a ton of variation for each layer very easily. 

Regarding the brick material, I discovered Parallax Occlusion Mapping Decals, which, in combination with some textures from Textures.com, looked extremely convincing. I ended up with four large and three small POM decals to scatter around the map. After that, I used more leaks, cracks, and grime decals to make the buildings feel more aged. I used rust decals for the lanterns and metal railings and made puddle decals inside Substance 3D Designer for the floor to get more variation. I ended up with a lot of decals, but after analyzing the performance hit, it was just a tiny fraction. 

To make the floor more interesting, I bought a dead leaves scatter pack. Using the Physical Layout tool, I could easily scatter the leaves using gravity. I then baked them into different instance meshes, combined them, and could now use these meshes to scatter around the map.

Due to time constraints, I used a bunch of third-party props. The props I made myself were the lantern, metal railings, and flower pots, using Maya and Substance 3D Painter. I evenly spread the lanterns and created a Blueprint so that when it gets night, they turn on with a short random delay. I also decided to turn some of the windows into Blueprints so they get an emissive texture with a random emissive intensity and delay when it gets night.

The flower pots were scattered around in small groups to have areas of visual detail in contrast to areas of visual rest. It's a bit untypical for Venice, but my goal was to have a cozier feeling. Almost like a small town where neighbors take care of their plants together, something you wouldn't normally see in a large, crowded city like Venice. 

Just like in real life, the map contains some trash lying around, e.g., empty bottles, papers, or plastic, but subtly enough to make the place feel vivid but not unpleasant. The last thing I added was some Niagara particle effects to simulate leaves falling from the trees, which added more to the overall ambiance.

Lighting

Lighting was a part that I iterated a lot on. I can recommend the Ultimate Lighting Course by FastTrackTutorials to learn the basics about physical lighting, how to set it up, and how different parts interact with each other.

From the beginning, I knew that I wanted to use Lumen and not light baking. First, I played a lot around with different HDRIs, but I wasn't satisfied with any of them. That's when I discovered the Ultra Dynamic Sky plugin, which made things a lot easier. I changed a bunch of settings to my liking with real-time volumetric clouds and a beautiful, slightly warmer lighting setup. I decided to use auto exposure with a customized exposure curve to stay close to how it would be in a true game.

Through the Post Process Volume, I added slightly more overall saturation, bloom, vignette, white clip, and some Lumen quality settings.

I set up the cameras in a pretty artistic way, always as if someone on the ground could've actually taken the pictures. Furthermore, I paid attention to some fundamental composition rules, like the rule of thirds, avoidance of tangents, and compositional management. I especially like the shot of the side wall of the palace, as it’s a typical photo a tourist would take.

Performance

I considered performance a lot, as my ultimate goal was that my map could theoretically be used in a game. But there were some elements I couldn't fully control. The real-time lighting and volumetric clouds are hugely expensive in performance, but I really wanted them at that level. Also, some of the props I bought are not optimized for gaming. As I didn't want to retopologize and retexture them, I let them be as they are. However, I paid attention to performance improvements I could do in a reasonable amount of time. This included minimizing draw calls, which meant minimizing the material slots needed on a mesh, as well as combining textures into MRAO textures.

Additionally, all textures were reduced to either 2K resolution for most tileables or 1K to 512 for props. I simplified the collision a lot and tried to reduce quad overflow as much as possible. Of course, I also paid attention to polycount, which had no back-facing or unnecessary edge loops. But because this isn't as big of an issue as it used to be, I've made a few extra edge loops for better vertex painting on the building walls. Overall, the performance is playable for most mid- to high-end GPUs. I tested it with a RX 6800 XT and got around 70 to 80 FPS without any upscale method. If I had the option to turn off volumetric clouds and use an upscale method, this would certainly increase performance.

Summary

I began the project in September of last year. It took me around 1,000 hours to finally complete it in September of this year. This also included learning all the new software to a degree where I could comfortably make quality work for the project, which included Maya, Substance 3D Designer and 3D Painter, ZBrush, xNormal, and Marmoset Toolbag. 

One of the biggest challenges for a long time was that I didn't have a clear picture of what I wanted my environment to look like. I didn't have any concept art to follow, but many different references from which none of them were exactly what I wanted. The difficult part for me was to extract things I liked from many different references and stitch them together. In the beginning, I also struggled a lot with modularity, as I was unsure how much I wanted to make modular.

I think one of the biggest lessons for me is to make a stricter plan as early as possible. For example, deciding how many window kits I want to make and how many materials I'll need. I wasn't confident enough to make these decisions early on, but now I am for my next project.

Also, I learned about myself that I am able to consistently work on a project for a long time every day and stay on it until it's done. I had times when I felt like I wasn't sure how to proceed, but I never thought of abandoning the project because it was very important for me to get to the finish line. 

For beginners, I'd advise you to always stay open to new techniques and workflows. It's easy to stay with what you know already, but it's best to be super curious and learn as much as possible. Don't comfort yourself with what you already know. YouTube and Reddit are great platforms to learn more, but I also highly recommend learning from professionals in the industry through paying for a mentorship or course, as these can help you out immensely. For me, it was overwhelming to learn all this new software in the beginning. But if you tackle them one by one, it gives you small successes along the way, which keeps you motivated. You sort of level up, which you can actually feel, and I think that's super rewarding.

If you want to see more of my breakdown, go check out the breakdown I've made on ArtStation as well!

Florian Wagner, 3D Environment Artist

Interview conducted by Gloria Levine

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