Stefan Oprisan discussed the key techniques, which helped him to create this Tomb Raider-inspired virtual space.
Stefan Oprisan discussed the key techniques, which helped him to create this Tomb Raider-inspired virtual space.
Arctic Environment
First of all, I’d like to thank Kirill Tokarev for asking me to do this interview. It’s great to share my work and the process behind it. The Arctic environment began when I completed Rise of the Tomb Raider, specifically the Siberia mission.
The large-scale environment, combined with the dynamic cloud system and atmosphere, triggered my initial inspiration for the project. After this, I realized I wanted to re-create something similar in Unreal Engine 4.
The environment’s overall size and depth were a big part of this piece. Looking at other games and artists for inspiration, I wanted to create a simple system that could be optimized. This was mainly so that if I wanted, the player could roam. Towards the end of the project, I decided it would be best if the camera locations overlooked the large-scale details like the mountains and clouds.
Landscape
I started gathering references to create a mood board of the different positions of the sun dependent on the time of day, as well as cloud formations, etc. and picked features which I liked to use as a foundation. I began with a simple World Machine scene using perlin noise and voronoi to get some interesting shapes and then moved onto the erosion and snow build-up of the terrain. Once settled on the main landscape, I create variations of mountain peaks to scatter in Unreal Engine 4 to avoid tiling, as well as adding some more visual height and depth through moving cloud particles. (Image 3).
With this landscape, I created a base layout which allowed me to focus on the small details such as erosion, colour and composition. I really wanted to push the quality of the landscape in UE4, and so opted to go for an 8k height map as compared to the usual 4k. It took longer to render but I think the result was worth it.
Materials
Originally, I wanted to use splatmap as many other projects do, but given I only had two main materials in the terrain (Snow & Rock), It made more sense to find an alternative. Looking at other methods, I created a slope based material that calculates the angle of the terrain and applies the material. Creating functions for the snow & rock, I used UE4’s world aligned texture function to tile them universally across the terrain. This simplified the amount and the complexity of the shader, ultimately making it much more performance friendly, with a higher FPS.
The material allowed me to tile the texture based on the distance of the camera but since you would never get close enough to the terrain you wouldn’t have to worry about this issue. I also included control over the brightness, colour, normal, roughness, and specular. The same control was there for the distance meshes but without the maths behind it.
The textures themselves were quite easy to do. Since most of the level is covered in snow, I decided to do this in Substance Designer. I wanted to create a rough and fresh snow type of material but ultimately the rough snow had more interesting detail. The most detail was directly built into the height map (which was later converted into a normal map), and the albedo was almost pure white. It had a RGB range of 243 out of 255, and so to save even more shader instructions, it could have been replaced with a constant 3 vector.
Light
The lighting was quite tricky in this environment because I had to use modified components from TrueSky that would replace default features such as skylight and Skydome from UE4. To get the final result, it was a lot of trial and error to find out what the controls are in TrueSky but it paid off in the end.
I decided to go for an early morning time of day where the sun was still on the horizon but high enough in the sky. For this, the best thing I can suggest is to find references that you like and breakdown the visual components of the image, the direction of the shadows on the terrain and the clouds, size, shape, etc. The key is finding the right balance between realism and adding your own personal touch.
Adding an atmosphere and exponential heightfog added a lot more depth and fog to the scene which ultimately worked well together especially with the volumetric fog feature. On top of everything having a post process volume can add the key visual features that make the render even better. I found that white balance, LUT, auto exposure and lens flares work best for a large scene. The documentation says you should remove the skylight but I added it back in and created my own cubemap to light the level.
Using TrueSky
I had acquired a TrueSky license a few months ago, but this was the only real project that required the full power out of the plugin. TrueSky seems like a very complicated plugin, but once you get around the complex UI and figure out what does what, you’ll be able to create scenes that will blow people away.
To get the most definition out of your clouds, it’s a good idea to setup a correct time of day in the Sky setting and start playing with the sliders to make it look believable enough. Once that’s done, you can start tweaking sections such as Shape and Edge Noise in the 3D Clouds to create more natural looking clouds.
A good point to remember is that the lighting section adds a lot of volume and dynamic lighting by making it look like the clouds have subsurface scattering as the light penetrates them.
One last thing I can suggest is to make a duplicate of the ActiveSequence Asset so you don’t override the default preset.
Dynamic Clouds
The plugin allows the artist to create real-time simulations driven via the blueprint over a 24-hour period. The artist is able to cast real time shadows across the landscape from the main sunlight whilst linked to the time of day. Other artists have created time-lapse videos of their environments and although I didn’t get a chance to do for this project I do plan to create one at some point in the near future.