Albert Vahitov shared the workflow behind the Pilgrimage project and showed the techniques he used to set up the scene.
My name is Albert Vahitov. I'm from Ufa, Russia. I studied architecture in college, then worked in architectural visualization. But when faced with working with architecture in reality, I was a little disappointed and decided that I needed to do what I had dreamed of since childhood – games!
It's only my second year in the gaming industry, now I'm working for an outsourcing company 8080FF. I was able to participate in the development of Kings Bounty 2 and a couple of other unannounced AAA games.
The Pilgrimage Project
This project was done in Sergei Panin's course at Smirnov School. I really liked a concept called Pilgrimage by a cool artist Artur Zima and I set a goal of recreating it as closely as possible as a game location. The whole location had to be done in 3 months. I started by analyzing the location and drawing up a content plan: what I would need to do and what I could use from the finished one in order to meet the deadlines.
Usually, if I recreate a location from a concept, I use the camera match technique, this allows me to get the composition more accurately. My main 3D editor is Modo, and I used it here, but there are similar tools in other programs.
The landscape is made up of several elements and layers:
- Unreal Engine Landscape tool for the foreground
- nearby mountains generated in WorldCreator and added to UE4 via a height map
- rocks from Megascans used over the mountains in close range
- faraway mountains from the Landscape Backgrounds pack in Unreal Engine Marketplace
The main building is made from a couple of parts that are arranged in a circle. I did not work on it much because I knew that I would not put cameras close, and this helped me save time.
I decided to try a new pipeline for myself in the production of modules to have time to do everything on time. I took game-ready surfaces and details from the Quixel Megascans library and reworked them into the shapes I needed. Thus, I skipped the detailed high poly and texturing steps. This is how I made the wall and stair modules. I can’t say that this method is good, it makes very noisy textures and colors that don’t match, but I managed to smooth it out using shaders and snow decals in the scene.
I textured only the main building myself in Substance 3D Painter and mapped small architectural forms on the same texture map. The other tiled textures I got from Megascans and changed them.
The main work with textures was in mixing ready-made tiles and snow in shaders. I blended materials using vertex color through a height map for a more realistic transition on large surfaces. In each object, I made the snow overlay on top of everything using the usual angle direction shader.
I learned a lot about snow from this article by Leah Augustine. If you want to know more detailed techniques, you should check it out.
The Scene Setup
The main challenge for me was to put everything together and create a complete picture where nothing clashes. The snow helped me in this, it is universal, so it helped to smooth out all the roughness in the scene and make everything look whole. I did it with different techniques:
- the snow shader on everything
- geometry piles of snow using dither transition in places where architecture meets snow and in the corners, as well as for landscape diversity
- snow decals on surfaces
- snow VFX in the form of particles and fog cards from the Particle Effects scene in UE Marketplace
To convey the feeling of the storm, I animated the flags. I used cloth simulation in Unreal Engine. This is done quite easily, you just need to select the vertices that should be static and press the Simulate button.
The lighting in this scene is simple and fully dynamic. The bulk of the work was done by the Fill Sky Light using a ready-made HDRI CubeMap and the Directional Light from the sun. I used standard volumetric clouds, they needed little changes to the instance material to look less soapy and more beautiful.
In the night scene, I used a similar pattern, only with more fake local illumination. I did the post-processing in DaVinci Resolve, it is as simple as possible, I just tweaked the curves and color-grading and added some lens flares.
I used ray tracing in this scene. It was very cool in the picture, but I had to adjust the light and materials to the new realities to make everything look believable. In the night scene, I encountered a serious performance drop because there are a lot of fake lights and they have a very strong effect on global illumination. Having searched for how to quickly optimize all this, I saw how to use RTXGI on the NVIDIA Developer channel and decided to try it. This GI really helped me to reduce the load so that the scene could be worked with.
This was my first major location and it was a real challenge to do it in a fairly short amount of time. I learned that you need to clearly prioritize content and not go into details of what is not really visible.
Big thanks to Sergey for a lot of valuable feedback and cool lessons. I learned a lot about the intricacies of working with locations and the tricks of Unreal Engine.