Liam Mynhardt showed us the workflow behind the FJOLLUM Viking Village project, discussing setting up a picturesque scene with lifelike details and adding vegetation and atmospheric lighting using SpeedTree and Unreal Engine 5.
Introduction
Hi, my name is Liam Mynhardt, and I'm a 3D Environment Artist from Cape Town, South Africa. I got into 3D art a couple of years ago when Unreal Engine 5 first launched. I remember seeing The Valley of the Ancient Tech Showcase and being absolutely mind-blown by what was going to soon be possible. I remember being obsessed with Unreal Engine 5 from that point on. I started by doing random tutorials on YouTube, and not long after, I figured I might as well invest in my passion and learn from true industry professionals. That's when I went to Vertex School and learned the fundamentals of 3D.
During this time, I put every ounce of effort I had into learning 3D and developing the skills I would need to be a good artist. Soon after Vertex, I landed a couple of gigs freelancing. After about a year of working, I decided I wanted to go further, and that's when I signed up at Think Tank Training Centre for their portfolio production term.
Inspiration & References
When I first saw Imad Awans' Viking Village concept, I knew that this was the one I was going to recreate in 3D. For this project, I wanted to play with modularity and see how much time I could save by using this technique to create all the buildings visible in my scene. Something else I wanted to try is to push my material creation skills further by creating a wood material that could be used 100 times and still look different each time.
I started by gathering references and planning out my scene. I drew over the buildings and started planning the modular kits I was going to create further down the line. I also started thinking about the details of each hut/house and asked questions like, Who does this building belong to, and what kind of person stays here?
Examples:
Composition, Blockout & Modeling
After the planning stage and gathering references, I felt ready to begin blocking out my scene's basic shapes and composition. This stage was very important to me because I wanted a good foundation to work with before things got more complex later down the line.
When it came to moving past the block out stage, I started by developing a paintable landscape material that can scatter objects like grass, ferns, sticks and pebbles. I used scanned materials from the Megascans library to create the landscape since I wanted about 4 or 5 materials I could use to paint with.
I also used Megascans foliage and trees as a placeholder for the time being since I was only planning on using SpeedTree much later down the line.
Down below, you can see an image of me testing the landscape material and playing with the grass scatter values.
When it came to working on my material for the water, I wanted to create a simple material with a couple of parameters to be able to adjust and edit the look of my water on the fly. I began with using a panner node to animate two versions of the same textures with slight variations, and then I simply blended the normals together like this.
I also stumbled across a combination of nodes online that creates ripples where the water intersects with any object in my scene.
I also made sure to use the Single Layer Water node, which is physically accurate and very simple to set up. This was the result:
Modeling, Texturing, and Optimization
The next development phase for me was to begin replacing my blockout meshes with higher-resolution models. I did this one by one for each building, and I saved time by creating two different modular kits and a master material that could be used for all the wood in my scene.
Down below, you can see an example of my modular kit and an example of how it can be used:
While I was modeling and importing my buildings into Unreal Engine 5, I also had to worry about the thatch, as well as the wood material. I opted for a powerful master material that I could instance and customize. I started with base material from Substance 3D Designer and added different parameters inside Unreal. Here's a screenshot of some of the parameters I added into the master material.
Check out this example of me using the material parameters to create a completely different-looking wood:
Rather than creating modular roofing for the buildings, I decided to go with unique meshes. Although this took extra time, I feel that it helps distinguish each building from one another. I started with modeling and sculpting a base mesh in Maya and ZBrush for each and then created thatch cards, which could then be scattered on top for extra detail. I followed this tutorial by Jakob Keudel to help get the job done:
Assembling the Final Scene
When I reached this point in the project, I started refining and polishing while adding props and set dressing. During this phase, I played with lighting, added tonnes and tonnes of different camera angles, and began bringing in the foliage I created in SpeedTree. I used the Foliage brush tool to scatter sticks and stones from Megascans to help add extra fine detail to my landscape. I also hand-placed quite a few of these extra details to have more control over how the shot would turn out.
Lighting, Rendering & Post-Production
After polishing and set dressing, I began finalizing the lighting in my scene. From early on in the project I knew that most of the scene was indirectly lit. I made sure to enable Lumen with hardware ray tracing, and ray-traced ambient occlusion since having that enabled can give your lighting a huge boost in quality. To me, these settings were very important since basic rasterized lighting doesn't look nearly as good when comparing the areas of the scene that are in shadow.
Have a look at the scene with UE5's stock screen space lighting:
And with Hardware Lumen:
Here's my scene with lighting only:
One of the final steps was to add atmospherics. I used William Faucher's plugin EasyFog to place fog cards around the scene and add extra depth to my scene. It’s a beginner-friendly plugin that is very easy to use. Once I was done placing fog cards and working on the lighting, I began rendering. I used UE5's plugin Movie Render Queue for the best results. I also made sure to spend a bit of time editing my camera's depth of field settings and ensured that everything was right before rendering.
Conclusion
At this point, I want to give a huge thanks to my Think Tank mentor Stefan Oprisan. He was a huge help on this project and I gained a lot of valuable 3D knowledge from him. One of the main factors in this project was the scope. It was very overwhelming at the beginning, and Stefan helped me break it down into something I could more easily manage. Overall, it was a great experience where I learnt a lot about Unreal Engine and 3D as a whole. This project took me
about five months to complete. In the end, I managed to level up as a 3D Environment Artist and update my portfolio to better showcase my skill level.