Hey, my name is Matt, I’m an engineering student from sunny West Australia. My involvement with Unreal Engine and 3D art has stemmed from my interest in things like photography, music, and travel/real-world exploration. My experience with 3D has been gradually progressing over the last year and a half, I’ve been able to utilize some programming that I learned at the university, but mostly I just learn by making things and messing around. Most of my time goes into my own short interactive exploration projects (for lack of a better name), along with doing some visual art stuff for musicians/friends. I’m beginning to touch on the game development side of things and experiment with ways people can interact with the scenes I’ve made.
When I first visited the shrine in Kyoto it was before I knew I’d be capable of making projects like this. The atmosphere of that place definitely left a nice impression, the way the gates are laid out over the mountainside, and the culturally unique significance that it has. I just imagined that the combination of the distinct red gates and its natural setting would be the great base for a project. The experience definitely puts emphasis on the calm, relaxed feeling you get when you explore somewhere alone. I also wanted the project to be simple and not too overwhelming, to leave room for the player to draw their own thoughts and feelings from what they see.
The scale of the map was pretty hard to implement at first. From a game design standpoint, I wanted to have manageable distances between points of interest so exploring wasn’t too tedious, while also having a somewhat realistic scale (similar to the real shrine). I ended up drawing a few maps, making constant reference to photos I took there and put things together thinking “yeah this is about right”. I’ve also never used blockouts to create my scenes, I guess probably because I’ve learned game development in a weird way. In fact, I don’t really see the benefit of it for projects like mine.
Foliage is always the area that I like to push the most. I think the ‘lush’ appearance of the vegetation comes from a combination of everything – cohesiveness, variety, placement, lighting, the way it all works together. It was also a huge challenge to make the scene as busy as possible without butchering the FPS.
Let me try to explain my process:
- After making a selection of foliage assets from reference photos, I spend a fair amount of time tweaking the appearance of the materials (particularly color and brightness)
- For placement, I always make heavy reference to my photos, trying to utilize as many different foliage instances as I can. I heavily randomize the placement of everything to try and get it looking natural, but also coordinate instances with one another (e.g. no grass on roots), in an attempt to match my reference photos.
- I then try and utilize lighting/post-process effects to blend all the foliage together even more. I always try to aim for a larger brightness difference between light and shadow, and I always crank up effects like Ambient Occlusion. I even use AO decals to create larger patches of darkness and create more variation. I think the lighting and post-process adjustments carry the most weight, they would be the black magic in my case.
Speaking about optimization, I always find myself making weird visual compromises just so I’m able to carelessly litter foliage everywhere. I use Blender to reduce poly counts for 3D models and to make suitable billboards. I also reduce a lot of LOD draw distances to the bare minimum, which can be considered a wrong choice. I often find that casual players don’t notice LOD transitions as much as developers do, and if the scene is filled with lush foliage they are much more likely to focus on that instead.
Reusing Assets & Textures
The assets/textures I chose were heavily influenced by how everything appeared in my reference photos. A huge majority of Megascans assets were actually part of the Book of the Dead demo by Unity that they released for free. I also used some marketplace packs, such as Evermotion’s Archmodels for UE Vol 4 pack for several trees, and Epic Games’ Kite Demo pack for various textures.
Like I mentioned before, I really value the cohesiveness of the assets when they’re all put together, which can be difficult to achieve when there are so many different sources I’ve used. You can really notice the differences in brightness and color when they aren’t fine-tuned, for example, two different sources will probably use two different tints of green for their leaves, or one asset might be too bright/dark in comparison to others. I keep a relatively simple master material design that I use for all of my instances.
This short string of nodes is what I have consistently included throughout my master materials. I figured out how to make these kinds of modifications when I started learning to design shaders, and I haven’t changed my approach since. Just continuously configure these scalar values throughout your material instances and you’re good to go.
Especially for maps of this size, I always use fully dynamic lighting, and also because I lost the patience for baked lighting a long time ago.
The values I used for my dynamic lights in this project (both set to movable):
- Directional Light – 12 strength
- Skylight – 1.2 strength
I used these values in combination with post-process exposure to make the brightness ‘pop’ a little bit and also have a dark edge to the shadows.
I also used a few tricks for specific parts of the map to create more realistic variation. Like I mentioned before, I have a simple Ambient Occlusion decal setup which I used extensively. I designed this shader because I wanted the shadows to be darker only in areas that needed it. I littered these decals all over the map in a varying amount of different strengths. I think this was the largest change I made to make the shadow variance more realistic, considering that I couldn’t use any static lighting.
Another simple addition was the occasional point light, to try and replicate bounce lighting in bright areas. I noticed in my photos that there was a lot of influence from the light reflecting from the rich red of the shrine gates on other surfaces. Using point lights I could replicate this effect pretty well, and I found it made a huge amount of difference especially in the corridor-type areas of the map. Just remember to set your draw distances and turn off shadows to reduce the impact on framerate.
Preparing the Scene for VR
Most of the changes I’ve worked on for the VR version include interactive elements and compatibility. When considering the changes made to the scene itself, it’s mostly post-process changes to make the colors feel right in the headset, and heavy, heavy optimization to meet the hefty framerate requirements. I’ve found that using a VR headset can shift what parts of detail are focused on by the player. When making optimisations it’s important to consider what things are more noticeable. This can vary depending on the project, I found myself making a lot of changes I didn’t think I would make. In the case of my project, It would have been useful to consider VR compatibility while making the Desktop version, and I could have avoided several problems down the line.
Among other things I was doing, the scene took me three months to complete from start to finish. Because I’m no expert, I had to spend a considerable about of time learning and researching new ideas that I wanted to implement. The biggest challenge for me I think was making the right compromises for what I could or couldn’t include in the game, in order for the project to be finished in the time that it was. I would have to rule out ideas if they would take too long to create or if they would only make a small contribution to the project as a whole. Something I was afraid of was that I would spend too long on the project and it would become boring and uninspiring. Luckily, I feel as though I made most of the right decisions and could push through days when progress was slow, so the project would continuously feel fresh to work on.
Matt Newell, 3D Artist
Interview conducted by Daria Loginova