Tim Nickel shared the workflow behind the Advostós Fishing Village scene, explained how the materials for the environment were created, and shared the rendering setup in Unreal Engine 5.
In case you missed it
You may find these articles interesting
My name is Tim Nickel and I’m a graduated Environment Artist from Frankfurt, Germany. My interest in game art and tech was sparked quite early in 7th grade. When we started programming small, little games at school, I knew that I wanted to create immersive and vivid worlds, which would immediately draw the viewer into a story.
Since then, I followed this dream of becoming an artist in the video game industry and graduated from SAE Institute Frankfurt in 2018 with a bachelor's degree in Game Art and 3D Animation. While I was at university still, I started teaching students at SAE Frankfurt, the very same school where I graduated. Currently, I am working as a Freelance Artist and look forward to exciting new opportunities.
The Advostós Fishing Village Project
The village itself is a fictional place, even though it resembles several places I’ve been to on Crete. Since 2003, this beautiful island in the Mediterranean Sea has been my number one vacation choice, so it was only natural that at some point, I started collecting textures, 3D scans, etc. from there.
When I went to Crete in 2019, I had just graduated with my final exam, where I created a rock study in combination with photogrammetry. Greece has so many interesting places that I couldn’t help capturing some of it. Due to the intense sunlight and harsh shadows, scanning proved to be quite a challenge. But I was able to post-edit most of the assets to be suitable for my needs. These assets lie around on my drive for some time now, and I really wanted to do at least something with them. I liked the scan of the olive tree trunk the most, so I decided to make that my center piece right from the start. I had a rough idea for the scene composition itself, and due to the fact that I have been visiting Greek environments for almost 20 years already, I had lots of reference images and memories of places that I liked.
The olive tree was supposed to be in the middle of the images at first. But somehow, I didn’t like the framing of that. I started moving the tree around and left it at the left side of the screen. After that, I blocked out very rough shapes, just for initial positioning. I wanted buildings that would look quite simple, but at the same time resemble the architecture of Santorini. One of the first things that came to my mind was a dynamic lighting setup, and I really wanted the sun to set directly above the sea.
Modeling the Assets
One of my main references, from a technical aspect, was Assassin’s Creed Odyssey. I call Crete a second home, so it was obvious that I really enjoyed that game. For my project, I wanted to tackle an open-world approach. That meant that all of the assets had to be scalable in regards to performance. I decided not to use unique textures this time and went for a solely tileable workflow. I looked through my files and pre-selected some captures and got rid of some that were not usable at all. Today, I would be much better at creating more consistent captures, but back then I lacked experience, and the conditions were difficult to begin with.
After I finished my rough pre-selection, I started making an asset list of different modules and props I’d need for the scene.
I began modeling the buildings, which this time were singular meshes. In retrospect, modular meshes would have been much more flexible (especially considering the open-world approach I mentioned). But for this project, the buildings I made were completely sufficient. The buildings from the very first Assassin’s Creed were a huge inspiration for the overall look of the clay huts. I started the modeling process with simple box shapes, which I remeshed later to get this smooth, clay-like look. I needed more vertices in the first place, since I wanted to utilize vertex colors for texture blending in UE.
When I finished the first building, I started creating the textures for the scene. The basic wall material was a capture of a concrete wall somewhere in Agios Nikolaos. I processed the scan with Adobe Substance 3D Sampler, which turned out to be the software of choice for this project. I had worked with Sampler before, but it really got a lot better with the newer releases. Most of the materials are based on scan data, only very few were done in Substance 3D Designer and/or with the help of image generation. The pottery in the scene uses a trimsheet, which I designed after the principals of the impressive work of Ubisoft's Material Artists Vincent Dérozier & Pierre Fleau. With that, it was possible to texture the entire pottery with one single texture set.
The olive tree consists of three different materials: the scanned trunk, the branches, and the leaves. I could have used a seam blend from SpeedTree, which would have introduced one more texture set, but I wanted to keep it performance-friendly. Instead, I used a simple cloth that hides the minor seam. The trunk itself was scanned with only 46 pictures and the albedo of it was edited in Photoshop. I also took pictures of olive tree bark, which were later color matched to the trunk and used as a tileable for the branches. The leaves were also scanned in my hotel room. I walked around with olive tree branches in my hand for the whole day.
As I said, all the models use materials from the small library I created for this project. That, however, leads to more materials on meshes, which results in more drawcalls overall. I still decided to use this technique, because it enables me to theoretically expand this world infinitely. I also wanted to show an industry-relevant workflow with that.
The tools I used for this project were 3ds Max for modeling and vertex painting, Substance 3D Designer and Sampler for material creation/processing, RealityCapture for scan processing, SpeedTree for vegetation assets, Knald for some baking operations, DALL-E/Craiyon for image generation and last but not least, Unreal Engine 5 for rendering/composition.
The vertex blending shader uses a simple approach. I made use of Megascans' built-in Material Blend function, which already supports height- blending. So instead of writing my own logic for that, I saved time by just looking in the right places. I used that technique for my terrain as well.
The buildings have stripe ornaments, which are actually meshes with a deferred decal material applied to them. I use the alpha channel of the vertex colors for masking purposes, allowing me to add some wear to the decals.
Usually, I tend to use Color LUTs for final grading of my scenes. However, with this project, I already liked the standard UE grading and stuck with it. I didn’t really change much in the post-processing, except enabling high- quality translucent reflections. This gave me much nicer surface reflections on my water.
For all the small scattering assets, I wrote a small BP tool that allowed me to raycast surfaces and place the meshes aligned on them. I originally created this tool for my final exam at SAE in 2018, but developed it further for any new project that needed scattering.
The overall scenery was supposed to give the viewer a feeling of relaxation and a slight breeze that blows through the leaves of the tree. Since I knew how such a small village would look, feel and smell, I tried to recreate this sensation as close as possible. I wanted to keep the temperature rather warm and welcoming and especially at nighttime. I feel like the scene conveys that, still.
Rendering and Lighting
Since I wanted to show a ‘full day’ in this village, it was obvious to me to use UE5's Lumen system for that. I used Lumen for my Star Wars and Down Below projects already, but only for static lighting scenarios. A fully dynamic day/night cycle was usually a bit harder to implement, but Lumen made it quite easy. With full sun position support and the new sky atmosphere system, everything looked pretty nice right from the start. I created the time-of-day system with the help of a tutorial by C:\Insert Name Here on YouTube. I changed a few things to match my requirements, but all in all it was rather straight-forward. The only thing Lumen could not handle was skylight propagation after I sped up the time of the cycle. For some reason, the dusk and down phases had weird artifacts, and the water began to flicker. It is still noticeable, but much better, after I set the playback speed of the final render to 2X.
The water itself is a custom shader by me, that uses forward shading for better reflections and four texture samplers for the normal waves. I also use the normal data for world displacement.
I finished this project in around 2 months. And to be honest, it felt a lot faster than that. I was really into the setting and everything came to me quite naturally. I guess almost 20 years of vacation on Crete does make a difference when it comes to bringing such an environment to life. Things I would do differently next time are definitely a more modular approach for the buildings and the implementation of the day/night system right from the start. I had to play around a lot with the sun position system until I was satisfied with the trajectory of the sun.
So far, this project got quite some attention compared to my other projects and a lot of people have written messages to me on how to achieve such a scene. I’d say, you can’t really setup fixed rules for that or give detailed advice. But the most important thing I have noticed is that you have to experience the world around you differently as an artist. Stop for the small things. Take pictures of an old wall or take a small rock with you (if that is legally allowed!). Appreciate the little details around you and you will find it much easier to create these details yourself.
Finally, I would like to thank 80 Level for this great opportunity! I really appreciated the shout-out. Thank you for reading!