3D Environment Artist Thomas De Lacroix shared a breakdown of the Chinese School project, explaining how the vegetation was textured, showing how the rain effects were made, and sharing the Stray-inspired lighting setup.
Introduction
Hi, I'm Thomas De Lacroix. I'm 23 years old, and I am currently in my last year at Artside School in Bordeaux, France, learning to be an Environment Artist.
I have been fascinated by games since childhood. I started playing on my mother's computer when I was only 4, and I was always passionate about them. I knew I would love making a career in games, so after graduating, I entered a game design school to learn the craft. Here, we learned everything about creating a game from start to finish. When the time came to learn to make 3D assets, I absolutely loved it.
During these years at game design school, I learned more about 3D through self-taught. Then, my Maya teacher at the time introduced me to a new school he was excited about, which had a specialization in 3D environment art (Artside School). I finished my game design school with a huge group project on UE4, in which I made a big part of the 3D assets. We learned how to work in teams and how to use GitHub. After graduating from game design school, I joined Artside School, and I realized that what I knew about 3D was only the tip of the iceberg. That's where I truly started my journey as a 3D Artist.
About the Chinese School Project
During my final year at Artside, I worked for 3 months on the Chinese school project.
It's the first time I could make a project as big. I saw it as an opportunity to explore skills I was not familiar with, such as lighting or VFX, without putting all my time into producing assets. So, I chose a fitting concept for these aspects. The 2D concept I found is a concept by Chinese artist ALLK. It reminded me a lot of the game Stray. So, I used it as inspiration.
Using Miro, I started by analyzing the concept and separating visible assets into groups: what is using tileable, what is baked, what is using shaders only, et cetera. Then, for each group, I searched for props and compositions from games that matched the art direction.
For this project, I used lots of references from Stray. Then, I gathered photos of material references from different sites; my favorite one is Freepik because there are a lot of high-quality images for free. I also tried to find photos of real-life environments that fit my references. Finally, I like to write a priority list of things to do, to remember what I need to work on. When I think about something I could add to the project, I can write it on the list.
Structure & Composition
I made the blocking in Blender and used fSpy on the concept to fit the perspective to its maximum. I created big blocks with windows for the buildings and simple shapes for the props.
For my composition, I tried to match my concept as best as possible. But I first needed to see if the image worked in 3D as much as in 2D. So, I created my base lighting, as soon as I finished importing my blocking in UE5. After setting up the camera in UE5 to match the view of the concept, I could just reproduce what I saw in the concept.
Modeling
With my blocking and camera placed, I could start detailing everything. I started by making a kit of modular building parts with extra geometry for vertex painting.
As my props were all simple shapes, I didn't need to sculpt them on ZBrush for the majority, nor did I use advanced techniques. I only needed a clean, subdivided high poly from Blender, and all details could be made on Substance 3D Painter later.
I made the cables with the splines on UE5. For the trees and vegetation, I used SpeedTree. It gives a good result with good controls and a big saving of time. The modeling part of the project was the fastest because I had no complex assets to make.
Texturing
I textured all my baked assets on Substance 3D Painter. When I'm texturing, I use my gathered real-life references a lot; it's very important to get the most realistic textures.
I always start with basic colors, roughness, and metallic values, and then, I start adding details to each different material layer by layer. When I'm happy with my texturing, I export the textures in ORM format (Occlusion Roughness Metalness). I then import them into UE5 to see how the texturing looks with the lighting. I often edit my texturing multiple times to get a better result in the engine.
With the shader I made, I could also control all the aspects of the textures, like the hue, luminosity, saturation, tiling, normal intensity, contrast, et cetera. So, even if it doesn't look how I wanted when importing the textures on UE5, you can always tweak some values.
I made my tileable textures on Substance 3D Designer using my gathered real-life photo references and multiple tutorials. Tutorials were very helpful because I wasn't that experienced with Substance 3D Designer back then, and I needed a solid base for my textures to look good.
For the vegetation part, I needed to gain time. So, I searched for a way and stumbled upon Substance 3D Sampler. After learning the workflow online, mainly with the help of YouTube videos, I gathered images to use for the vegetation textures. I used real photos of leaves, vines, and trees to make all the vegetation and bark textures. You can either take them with a good photo camera if you have one, or find free-to-use images on the internet.
After making my vegetation atlas and cleaning the textures both on Substance 3D Designer, I needed to make my vegetation work in UE5. For that, I needed to build a custom shader for leaves/vines and for the trunk, different from the main shader.
In this shader, I used different maps than my original shader. Here, I used an RGB Mask for color control, and to optimize, I combined the Roughness and Normal into one texture.
When I first had all my textures in the scene, it was not looking good at all. Because almost every texture on the walls and pillars was concrete, the look was bland. I had to accentuate the contrast and saturation in an unrealistic way to bring out the textures and use decals to add the missing details.
For the ground in the center of my scene, I made a shader that could add water puddles, using vertex paint. To realize this shader, I used elements from multiple tutorials on YouTube.
For the glass, I wanted to experiment with the new substrate system to get a more realistic look. Then, for the water droplets on the glass, I made another shader with the help of multiple tutorials on YouTube and assembled everything in my shader.
Unfortunately, the rain on my glass looked weird from a distance. So, I made the decision to hide it from the renders. I lost some time, but it was interesting.
As you can see, I used a lot of YouTube tutorials when needed. Even when I know how to make something, I always search for other workflows from multiple tutorials to improve mine. For instance, I watched 5 or 6 different videos on water puddle shaders. I took elements from each of them to get the best results.
Lighting & VFX
I played a lot with the post-process volume parameters to get a sharper look and to smooth the shadows with color grading. I also used a volumetric fog with a very small amount of emissive, some local fogs, and multiple lights to get the same look as my 2D concept.
I used almost all types of lights. The Directional Light and Skylight were used as fill lights. My main light on the building is a big spotlight to mimic the sunlight. Then, for the ambient lights, I mainly used a mix of Point Lights and Rec Lights. They often use red or green colors, even in my fill lights.
All the rain and leaking water effects were made using the UE5 Niagara system; it was really easy to get something good-looking. For the rain, I just needed to spawn basic sprites scaled on the Z-axis at the top of the scene, give them gravity, and give them a small amount of randomness in direction. Then, with collision parameters inside the Niagara system, I can spawn a plane on the ground where the rain touches to make a ripple (it's an animated mask made with a custom shader).
For the leaking water, I just spawn particles at one point, with some gravity and randomness in directions with added velocity.
The wind from my vegetation comes from SpeedTree. In the vegetation shader, I just had to plug the SpeedTree wind node, with the good parameters selected in the world position offset output. For the banner wind, I added wind in the vertex blue slot so that I could control where I wanted the wind to affect my meshes.
Rendering
To make my renders, I used the UE5 Movie Render Queue with a sequencer and made some simple camera movements with a low amount of camera shake to make the movements more natural. To get the right amount of camera shake, I tweaked the settings while making sure it wasn’t too noticeable in the animation. In my render settings, I used the game override, console variables with 150% screen percentage, and a lot of anti-aliasing to get the maximum quality.
Conclusion
The most challenging aspect of this project was the lighting, as I expected. Creating the main meshes and assembling everything in the engine didn't take me a lot of time. As for lighting, I don't know how much time I took, tweaking every light, creating new ones, making local fogs, changing their values and positions, et cetera. But thanks to my friends and teachers who gave me a lot of feedback when I needed it, I could make something that resembled my original concept a lot.
During this project, I learned how important it is to have friends and family who can give you feedback and share their views. It really is a game changer, and that's what often unlocked me when I was stuck.
Finally, don't be afraid to start a project without knowing how you will proceed. There were times during this project when I felt like I wasn't progressing at all; I was stuck on problem-solving or didn't know how to improve something. But in the end, if you don't give up, you'll ultimately reach your goal, and with that, you'll have acquired a lot of knowledge and maturity. When I started, I knew very little about lighting or shaders; I just had some basics. I challenged myself with this concept and learned a lot of things along the way. Even if I was afraid at the beginning and didn't know how to start, I'm now very happy with the work I've accomplished.
Thank you for reading so far. I hope that what I wrote can be useful for other beginner artists or any other person. Here are my socials if you want to see my work here: