3D Environment Artist Asa Jin has walked us through the creation process behind the Little Hotel project, focusing on how the scene and its stylized vegetation were made using Substance 3D Designer, Maya, and Unreal Engine.
Hi, I'm Asa Jin and currently I'm looking for an opportunity as a 3D Environment Artist. Before I got into the 3D world, I had studied illustration and done photography at the same time.
My favorite game genre is a walking simulator. I find it fascinating how interactive environments can tell a story. My initial goal was to become a Concept Artist since I already draw a lot.
After downloading Blender for perspective references, I discovered how enjoyable it was to build things in three dimensions. Moreover, in terms of practical reasons, 3D skills had more opportunities than the realm of 2D alone. This realization prompted me to choose a school and pursue the goal of exploring the video game industry and pushing my boundaries.
The concept artist I took inspiration from is 橄榄油 (Gan Lan You). To determine what I should create, I dedicated a whole week to browsing ArtStation. I dragged more than a hundred concepts to PureRef and then narrowed them down to six. I listed the pros and cons of each and finally made the ultimate decision with the guidance of my mentor. Throughout the process, I clarified what I wanted to achieve in the project which was a stylized environment with a strong composition, an intriguing dominant subject, including modular building opportunities, and a good amount of vegetation. I also set a deadline which was 6 months to finish it all.
After deciding on the concept, I proceeded to analyze it, identifying modular pieces and listing and grouping all the props I was planning to create.
Since I wanted to achieve a Valorant-inspired style, I included references from Valorant, and supplemented them with Overwatch screenshots. At this stage, I only aimed to develop a general idea of creative direction. While some recommend gathering sufficient references upfront to prevent interruptions, I don't find this disruptive personally. Thus, my reference board will expand as I add more detailed references and generate fresh ideas.
The Workflow Behind Vegetation
There are three types of vegetation in this scene. The first group is grasses and flowers.
I created the high-poly models using Maya, then imported the high-poly parts and a plane to Substance 3D Painter, baked them down to the plane, and textured it, resulting in a set of 512 textures. In my case, I had separate sheets for flowers and grasses. Upon returning to Maya, I cut out each part and inserted additional edges according to their shapes. So these components were prepared for assembly.
I received valuable advice from my mentor, Billy Matjiunis, along with his ArtStation vegetation post. He suggested clustering the dominant grasses at the center and dispersing smaller elements to establish a visual rhythm, allowing them to blend well together. After completing several grass patches, the next step was applying Vertex paint to the roots. This would help to add a wind effect in Unreal Engine.
The second group consists of bushes, which are essentially a set of leaf cards.
The leaf card was generated in Substance 3D Designer. I began by creating a leaf shape with geometry nodes, then generated various combinations using the Splatter Circular tool (although in my project, I ended up using just one combination, which is visually fine). The Height Map was the foundation for generating the Normal, Roughness, and Alpha Maps. The Base Color Map was created by blending an overlay of a gradient from the Height Map and a gradient from a brush stroke texture.
To assemble the bushes, I experimented with two different approaches. Firstly, I manually positioned them together in Maya. Additionally, I explored the use of a tree-generation tool called TreeIt. Both methods were considered to achieve the desired result.
The third type was trees. I used TreeIt for this project. While it was not as powerful as SpeedTree, it was straightforward and satisfied the needs of my scene, which didn't require complex tree variations. I generated some basic trees and then imported them into Unreal Engine.
Regarding the leaf cards, I created them with the help of Photoshop. Each leaf card basically was an Alpha Map that portrayed the silhouette of a leaf-shaped cluster. The base color shared the same image as the previous grass, which was a subtle gradient. I found out that using muted colors tended to get better results when integrating subsurface color and tint within the Unreal Engine's shader.
All vegetation (except tree trunks) shares a basic master material, which is depicted in the attached screenshot. The wind movement effect was adapted from Quixel Megascans shaders and was adjusted slightly to suit my needs. In terms of shaders, blueprintUE allows you to share and copy other's shaders. It is a great tool for learning from other Unreal Engine devs.
Speaking of materials, most of them were created in Substance 3D Designer.
The green wall was the first material I made for this project, as it occupied the largest screen space other than vegetation and the sky. I spent a lot of time figuring out the right material style for the scene since it could really influence the overall mood. After some experimenting, I downloaded a brush stroke Bitmap and used the tile generator to make a randomized painterly style texture. I added a low-intensity blur and warp to soften the texture, then reduced the light and dark with histogram, and the map was ready for adding micro details.
Drawing inspiration from plaster wall references, I incorporate air bubbles, darker dirt spots, and long scratches into my work.
To create these intricate details, I typically follow a similar process. I select a Grunge Map and connect it to a histogram scan/selection node to obtain the desired mask. I then blend the mask with the previous result using techniques like addition, subtraction, or multiplication. To refine the effect, I make adjustments to the Grunge Map by applying blurring and warping techniques until I achieve the desired outcome.
There is a tip for making a Roughness Map I learned from other artists: I align the Roughness nodes with a base color. When adding a color layer, I blend the same masks to the Roughness either with add or subtract.
Here you can see the result:
Another fascinating material I would like to discuss is the wood trim sheet. It involves a combination of ZBrush sculpting and Substance 3D Designer for baking and coloring. Setting up a tileable plane in ZBrush can be a bit counterintuitive, it requires a larger surface than the intended size to achieve a seamless tiling effect. Thankfully, there are well-explained and popular tutorials on YouTube that cover this topic. In Substance 3D Designer, I managed the Roughness, Normal, and Curvature bakes.
For this specific trimsheet, I divided it into three sections. I sculpted parts one and three, while the second part was dedicated to painted wood, for which Substance 3D Designer proved efficient in creating smaller chips. My main focus was on creating the Color Map, and I am quite satisfied with the results of layering colors. The process involved using a histogram scan/select to subtract masks from the stroke texture, and then using this as a mask to blend new colors on top. I repeated this process to add numerous warm reddish-yellow and subtle blue layers until I achieved a satisfying color combination.
Setting Up A Scene In Unreal Engine
I already had a concept, so it was easier to get the composition. Firstly, I used Maya to create a blockout with a fixed camera viewport on the side. Once I completed the blockout, I combined the entire scene and exported it as one FBX file.
Then, I imported it into Unreal Engine and gave it a translucent material to serve as a guide. This helped me to set up the Unreal Engine camera and determine where to place everything. Having a camera position at the beginning reduced my workload, as I could focus only on what could be seen.
However, since I wanted to work for games, I ensured that the arrangement was reasonable and the proportions were consistent. It could be a bit back and forth since the concept was in 2D, and we had to imagine the layout in 3D. After completing the block out, it was just a matter of replacing it with finished, UV-wrapped models. This process helped me stay organized and ensured that everything was in its proper place.
When it came to lighting, I mostly tweaked the Directional Light. I found out that the shadow shape could have a significant impact on the overall mood of the scene, so I tried to find an angle that created interesting and non-distracting shadows. There were some trees behind the camera that I used to create leaf shadows on the walls, adding some interesting light-dark contrast. As for the light intensity and color, that can be a bit subjective. I typically experiment with different settings until I find something that appeals to me. In this case, I ended up going with a slightly stronger light with a hint of warm orange, even though it was a bit warmer than the original concept.
For the post-processing stage, I wanted to give the scene a welcoming retro feeling. I turned up the Bloom Intensity tool to increase the brightness of the scene, and I slightly increased the Chromatic Aberration to add a bit of a vintage feel. I also adjusted the temperature to make the scene a little bit warmer. Finally, I used the color grading tool to offset the shadow towards yellow and the highlight towards blue, which gave the scene a nice retro vibe.
Overall, I am really pleased with how the scene turned out, and I think the post-processing tools helped me achieve the mood I was going for.
The Reflection and Final Words
It took me six months to finish this scene. I had scheduled five months for it, and I was able to make it presentable within the time frame that I set for myself. However, since I was willing to use it as a portfolio piece, I gave myself an extra month to add more assets and refine some decals and material maps.
The main challenges were sticking to the schedule and being determined to finish the project. There were some technical challenges, but luckily, I had a mentor who was able to find a solution for almost everything with the help of free or affordable online resources.
When starting a new project, we tend to have a big plan and want everything to be perfect. However, my mentor and previous instructors have told me to focus on quality over quantity. This statement helped me to feel less stressed when I realized I couldn't create every small prop and meet the deadline I set for myself. Instead of rushing to create unique objects or pushing my deadline, I decided to reuse some assets and rework the layout to make the shot look good.
One of the lessons I learned from this project is that "done is more important than perfect". Once I overcame my fear of not doing the right thing and not being good enough, I was more free to try different techniques and workflows. I put what I learned together to create a project that might lead to new opportunities.