logo80lv
Articlesclick_arrow
Research
Talentsclick_arrow
Events
Workshops
Aboutclick_arrow
Newsletter
Advertiseplayer
profile_loginLogIn

How to Create a Japanese Street View Using Unreal Engine 5 & ZBrush

Massimo Rossa shared with us the workflow behind the Japanese Street View project, explaining how he used different lighting scenarios to see how the environment could change.

Introduction

Hey, I'm Massimo Rossa. I am currently a 3D Art student enrolled in the Think Tank Training Center course, specializing in environmental art for games. But let's take a step back: I studied and followed a path that was totally different from that of the classic "artist". I obtained two degrees in Law and Economics and worked for years in Sales and IT. Over time, however, passions always tend to take over our lives, directing us towards new paths, hence the decision to embark on a completely new journey from scratch.

Since I was a child, I have always been passionate about video games, never limiting myself to a specific genre: Metal Gear Solid, Final Fantasy, Age of Empires, Sid Meier's Civilization, and so on. This allowed me to take an interest in various aspects of video games, both artistic and technical. During my last few years of work, I managed to balance my commitments and graduated from the DigitalBros Game Academy (DBGA) in Game Design, focusing on Level Design, creating documentation such as pitches and GDDs, as well as small projects in Unreal and Unity. Working in groups with programmers and artists, I got to know many people and exchange ideas and passions: this is where my initial curiosity for the 3D world as a true "artist" was born.

My journey began with the idea of creating creatures, because at that time, Soul's games had inspired my passions with amazing pieces. So, I started teaching myself by following various resources: YouTube videos, Udemy, private lessons, and more. The problem I encountered was the need for training that could give me a 360-degree view of all the processes behind the creation of 3D projects, so I enrolled in the Think Tank Training Center's "Foundation" course.

Here, I consolidated the knowledge I had acquired and learned new workflows that motivated me to continue and choose Environment Art for Games as my specialization, precisely because it is a field rich in variety, with multiple decisions to be made on both the artistic and technical sides.

Project

The Japanese Street View was my 2 Term final project at Think Tank. This was my first full environment project in Unreal Engine, created over a period of approximately 5-6 weeks at the end of the term.

The choice of concept was fundamental and required careful consideration: trying to optimize timing given the limited time frame, working in a modular way, using workflows familiar to Unreal. This left less time for experimenting with new workflows, focusing on consolidating the knowledge I had acquired during the term's lessons.

I am a big fan of Japan in general, a lover of anime and manga, but also of a culture so different from that of the West. Before starting my journey at Think Tank, I took a trip to Japan to fulfill a dream I had always had, allowing me to fully experience a world I had only seen in photos and videos.

This inspired me to want to work on something inspired by this life experience, so that I could try to bring out my emotions in a 3D project. At the same time, my idea regarding the artistic direction was to follow and reproduce vibes that were close to the world of Persona games, which I really like because of their stylized but not totally cartoonish style, a good compromise between elements.

In fact, stylized should be considered as a style to which you add your own touch, which adds personality and distinctive characteristics to the scene. I mainly followed this concept as the basis for my scene:

After studying it, I decided to replicate this side of the road in a similar way to the concept, while creating the rest of the scene following additional references that I searched for online, mainly for the creation of the right and front sides of the road.

My goal was not only to create a project to present as a static render, but to create a real game environment where the character could move freely and show off the unique features of this scenario.

Modeling

When it comes to modeling, various types of workflows can be considered, depending on your knowledge, the time available, and the project requirements (e.g., a specific maximum poly count for individual elements). In my specific case, considering the project timeline and the composition of the scene, it was essential to have a clear idea of which elements to consider as hero props and which to consider as modularity/replicable.

Considering that most of the scene is characterized by buildings, I preferred to start working on the composition of these (large elements) rather than on the details (small elements). My workflow is based on Autodesk Maya for modeling and UVs; for this project, I decided to proceed with the blockout directly in Maya instead of Unreal Engine, so that I could get direct feedback while modeling.

When I reached a level that I considered acceptable, I exported everything to Unreal to set the initial composition and get a clearer idea of the scene as a whole. But let's proceed in order:

The initial decision to be made concerns measurements and texel density. I decided to proceed with a texel density of 1K/1m. Consequently, I set the measurement of a square in Maya to 1m, so that it would be easier to work in a modular way, in my case, snapping everything to the grid, considering that the modules will then be incorporated into individual elements (the buildings). Creating a simple cube with these dimensions and UVs is a good way to create a reference element for the scenes.

When designing buildings, I typically use an imported mesh of a mannequin with a height of 1.80 meters as a reference for constructing walls.

The creation of the various elements of a building follows realistic measurements, while always considering the need for modularity to simplify the creation process and facilitate the replicability of the modules. These modules will use tileable textures and vertex painting in Unreal, so it is essential to create them with supporting topology and edges.

In this specific project, I have no limits on the number of polygons, although it is always good to think in terms of the gaming industry and current processes. Unreal can handle high polycounts well thanks to Nanite, but it is always essential to understand the destination of the object you want to create.

If the object is in the foreground and fundamental to gameplay, it is advisable to dedicate more topology to it (especially in the case of cylindrical/curved elements) and probably go for a specific workflow (such as hero props high to low). For the roofs, I decided to follow two different workflows:

  1. Model the roof in a unique way, as a single piece, and then assign a tileable texture. In this case, we will have a limited polycount, which uses tileable textures to create variety, so it is suitable for elements that are not in the foreground (roofs in the distance often use simple textures on a plane).
  2. Create individual tiles, approach a high-to-low poly workflow, and then distribute them randomly to achieve the final result. In this case, we are dedicating a higher polycount to create unique tiles, which will take advantage of the high-to-low bake process, as well as having unique textures. Therefore, this process is recommended for elements visible in the foreground, where you want to focus on the detail.

In my case, I wanted to experiment with various workflows to learn and understand their potential and limitations, but as I said, it is always essential to think about the intended use of the elements in the scene.

Finally, based on these individual elements, I created the various buildings. These are created with the various elements, set up in different ways, so it is essential to work based on correct measurements and snapping to achieve a consistent result.

For the props, I decided to follow a middle poly workflow. Due to the tight deadlines, I preferred to avoid a hero props workflow (bake high-poly to low-poly) and instead focus on creating assets with a higher-poly count in order to create variations on the surfaces and add details directly in Substance 3D Painter with unique textures.

Once I had a solid foundation of elements, I decided to move to Unreal to enhance the scene and understand the positioning. My idea was to broadly follow the reference concept, but also to create the opposite side of the street by adding more buildings and diversifying the whole thing.

In these cases, color coding, even very simple, is very useful for getting a visual idea of the direction to take and the balance you want to achieve.

UVs, Texturing & Material

For texturing, as mentioned, many elements were handled with unique textures created in Substance 3D Painter to give greater enhancement and diversity.

However, it is essential to say a few words about UVs, especially in the case of textures that require lettering or labels. About labels, the aim is to create UVs that are as clean as possible and directed in the right direction, as this will allow you to work incredibly faster within Substance 3D Painter.

I created the UVs in Maya, dividing the object into different materials based on type, to better manage space and maintain the correct texel density. In the specific case of vending machines, I used three different materials:

  • One for the body of the vending machine.
  • One for the cans/bottles and labels.
  • One for the glass (it is advisable to manage this separately from the rest of the mesh).

The labels and decorations on the posters/frames were sourced from various websites (mainly Pinterest, Google Images, and the official websites of the various brands) and then edited in Photoshop to adjust the resolution, size, and coloring in some cases.

About the air conditioner, I decided to manage the element not as a single mesh, but as individual elements in order to better manage both the modeling phase and the UVs and texturing. Considering the elements it is part of, I managed the UVs by avoiding repeating the same elements (just do the UVs/textures of some and then at the end of the process duplicate and rotate them to avoid obvious repetitions) and mirroring some UVs: this way I gained space in the UV island to keep the texel density consistent.

I used the vertex painting technique mainly on the road and walls. In the case of the road, I set the red and blue channels to affect only the white line marking the edge of the road, or the remaining asphalt, in two different ways to allow for creative flexibility.

In the case of the walls, I limited vertex painting to the red and green channels to add cracks and manage color intensity, trying to create a gradation between the various buildings.

These are some of the materials and textures created for the project:

Composition

For the entire scene, I started with the main elements of Unreal Engine regarding light: Directional Lighting, Exponential Height Fog, Skylight, and Volumetric Cloud.

I set the directional light to 7.00 lux and a temperature of 4700 to achieve a slightly warmer view. However, most of the effect is achieved through the post-process volume settings, which I would recommend experimenting with, even if you make mistakes sometimes.

In my case, I set manual exposure instead of automatic to have full control over the light. Check the "shadow contrast" parameter (in "Local Exposure"), as it is very useful in scenes where shadows are important and you want the freedom to manage them with greater or lesser intensity.

Another setting I would recommend is "color grading", but in this case, I advise you to be mindful of the changes you make and avoid "overdoing" it. This involves a series of composition settings that should be considered "post" to a solid working base.

Below is an example of a scene without and with post-process volume settings:

In this regard, given that many changes need to be made to different parameters, if you think you have achieved a good lighting compromise but want to experiment with other settings, it may be useful to create a specific level for light > Windows > Levels > Create New. The persistent level will be the base level you are working on, while on the new level, you can decide to manage only the light elements (hiding those of the persistent level). This is particularly useful for day/night settings (where HDRI is also supported, but which I did not use in this scene).

Another tip I would give regarding composition, which usually takes place at the end of the project, is to create individual renders and note down the various changes made to the lighting. It may seem like a tedious process, but you won't be surprised to find yourself with numerous renders of the same scene, with various changes to the light, fog, or other settings, and unable to achieve the same effect you had in the first render due to the different settings. Simply noting down the modified values (directional light, post-process, etc.) can be really useful.
 
Regarding the fog, I set the volumetric and managed its parameters. My idea was to obtain a light fog mainly positioned at the end of the road, in order to achieve a warmer effect and make that background area less detailed.

After that, I decided to add point lights in specific areas where the shadows were very pronounced due to the composition of the scene. I wanted a light/shadow effect created by the direction of the sun, but at the same time, I didn't want the shaded areas to be completely black. This can be achieved by using lights that simulate the refraction of light rays off the ground or other objects, bouncing towards the more shaded areas.

The renders were created using various actor cameras in Unreal, exploiting the ability to change the camera focus during video sequences. In this context, the goal is to set the main camera for the final shot right from the start of the blockout to understand which elements to focus on most. Then create cameras on specific elements that will be highlighted (hero props, vegetation, one specific tileable texture, and so on).

The idea is to create a journey between these cameras, starting from the main one, following the path defined by the chosen elements, and ending with an overview of the landscape (or the same main camera in reverse).

Conclusion

This is my first real project in Unreal of this magnitude, in which I focus on creating a 360-degree environment, working on all steps of a complete production. Furthermore, having followed a very tight timeline of about 5 weeks allowed me to understand how priority management is fundamental, in addition to the artistic and technical skills that characterize an artist.

I used Maya for modeling, ZBrush for sculpting, Substance 3D Designer/Painter and Photoshop for the texturing part, and Unreal as the main engine. Many techniques were new to me, and many elements of the scene could have been explored in greater depth and characterized more specifically, but this is all part of a growth process that includes improvements and mistakes. I would like to point out some elements that I consider fundamental and have taken into consideration in future projects I am working on:

Create a reference file (for simplicity's sake, a PureRef) that is as complete as possible from the start of the project, not only in terms of reference research, but also in terms of organizing timelines and elements of the scene. Have a list of the assets that will be part of the scene, have a clear and defined nomenclature from the outset, and a list of materials/textures that you want to use to understand how to divide the management of unique textures (for hero props) and tileable textures (e.g., modularity). You will be surprised to discover how many props are easily manageable with the same tileable textures already created, optimizing time and avoiding further processing.

Choose an artistic direction, not only in terms of realistic/stylized or something in between, but also in terms of real-life references (even stylized art conceptually draws on real elements that it makes its own). If my concept has a mix of styles, making decisions from the outset to focus my interest on a specific style, what we like/are passionate about will always be easier and more motivating to achieve.

Making mistakes, perhaps the most important thing. Making mistakes is the most normal thing for human beings, in any context. From personal experience, I have made mistakes at work. I call them "controlled mistakes", i.e., mistakes limited to a controlled situation and therefore not affecting other contexts, not causing damage that is difficult to resolve. Personally, I am in favor of this type of mistake because it allows you to learn, take responsibility, show initiative, and be proactive in resolving the mistake and seeking feedback.

If you have difficulty with topology, for example, follow a tutorial to begin to understand the subject, then continue on your own, experiment, and ask for feedback. A topology error can affect other workflows, but there are many steps to verify its validity (sculpting, texturing, shading, rigging). Each step will help you understand why your work is considered an "error", what it affects, and how to resolve it.

I would like to thank those who supported me in this project, ThinkTank for teaching me, and 80 Level for the opportunity to share all this. I am working on many other projects, and I hope to be able to share my knowledge and my journey again with many people who love this world and want to improve and discuss 3D issues. If you enjoy my work, feel free to follow me on Artstation or Instagram to see my projects.

Massimo Rossa, 3D Environment & Prop Artist

Interview conducted by Emma Collins

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