Breakdown: How to Create a Peaceful Fantasy Nature Environment
Antonin Pardon shared the workflow behind the Hidden Pathway project, explaining how he translated a 2D concept into 3D and detailing the sculpting of the arches as well as the creation of the grass.
Introduction
Hello, I'm Antonin, a self-taught 3D Environment Artist living in the north of France. So far, it's only been a hobby for me, driven by passion to just make beautiful scenes, especially ones focused on landscapes and nature. Whenever I played a video game, I always valued the beauty of its environments and how much I could immerse myself in them, eventually making me wish I could make my own.
I began my 3D art journey at the end of 2020, as a 26-year-old with no experience in any kind of art. I started by building environments in Core Games, which only allowed kitbashing with its own library of assets. In 2022, I wanted to start going further and make entire scenes from scratch. So I began learning Blender, and later Unreal Engine and Substance 3D Painter, nearly entirely from free tutorials online.
I've always preferred stylized art in general, but specifically stylized art that isn't too exaggerated, with a lot of details and more realistic proportions. With this project, I wanted to push that style as much as I could.
Here is the list of software used:
- Blender: Modeling and sculpting
- Substance 3D Painter: Texturing
- TreeIT: Generating the bushes and canopy
- Unreal Engine 5.6: Final scene setup
Hidden Pathway Inspiration
When you're self-taught, it's easy to get too comfortable repeating things you already know and stagnate because of it. But you're also susceptible to overscope, trying to learn too many things at once, and getting discouraged. Without a mentor or teacher to guide, you're on your own to find the right balance.
And so, when I begin a new project, I always try to make sure I'll need to learn a new skill for it, or at least practice one I'm not good at, but no more. In this case, I had just spent months practicing rock sculpting and setting up a better shader for grass and stylized plants, so I looked for an artwork that would focus on those things.
"Hidden Pathway" by Sylvain Sarrailh was perfect. It has a focus on vegetation and stone, both natural and man-made. The rocks and ruins are also fairly simple in their shape and not very numerous, so I was confident I wouldn't get swallowed up trying to make too many assets.
My mindset going into this project was straightforward: I wanted to reproduce my reference as closely as possible while making it the most beautiful scene I could. My priority was aesthetics above all else.
Breakdown
This was the first time I had decided to convert a 2D artwork into a 3D scene. The first challenge this brought was to break down the scene. I did this by drawing over the reference to isolate three categories of assets: rocks, bushes, canopies, and small foliage.
For each category, I circled with one color what I thought I could make with one reusable asset. It didn't turn out 100% accurate (for example, I needed two assets for the arches instead of one), and it looked a bit messier than I liked, but it served its purpose, and I always knew what I needed to make next.
Blockout
My blockout was done in 2 main steps. First, I set up the scene with only simple shapes. Nothing is truly fixed yet, the purpose here is just to get going and get a rough idea of positions and scales for the assets.
Second, I refined the shapes and made a low-poly version for the largest props: the rocks and the arches. I wanted these to be ready for sculpting or close to it, so the shape needed to be as close as it could to the reference. I also added a spotlight to look for a first approximation of the lighting. It helped verify the angles of the props and their initial modeling, in particular for the central arch, and see if I roughly had the right shadows.
Stone Props
I made two arch models in Blender, following the same process for both. Throughout this process, I kept the stones of the arch separate and worked on them individually, joining them only once both modeling and sculpting were done. I started with a simple array of cubes, then deformed it following a circle using the curve deform modifier.
Then I aligned the arch with the reference image and started individually adjusting the shape of the cubes to fit the image, adding extra geometry if needed. Adapting to the perspective made this part harder than I thought. I had to do a lot of back and forth between Blender and Unreal Engine to test my model in the blockout.
Then came the sculpting. While it's clear that the stone arch in my reference is man-made, it isn't a fine, precise sculpture. I tried keeping that aspect. To make as clean a stylized look as I could, I used a combination of the following brushes: Clay Strips, Scrape Brush, and the new Trim Brush.
Blender brushes have lots of properties, and tweaking them often helps find how to achieve a certain sculpt style. For example, increasing the hardness and decreasing the spacing on the Scrape Brush helped me sculpt sharp edges much more easily and cleanly.
The idea is to start sculpting the general silhouette and work towards the details. For that, I start with a dynamic topology activated with a low resolution. This is how I proceeded:
- Flatten the edges with the Scrape Brush to give the stone an eroded look.
- Use Clay Strips to add a rough layer and give more volume to the sides.
- Use the Scrape Brush again to smooth the rough layer.
- Optionally, use the Trim Brush to carve larger dents in the silhouette.
Once the silhouette is done, I increase the topology and use the Scrape and Trim Brushes to clean the sculpt while adding finer details like cracks or edge damage.
I repeated this process for every stone in the arch, constantly going back and forth with the concept art to make sure I was respecting the shape and details as much as I could.
Rocks
The modeling and sculpting of the rocks followed a similar process to the arches, but with less precision. Since they are less central to the scene and more organic, I didn't feel the need to be as meticulous when matching the reference.
I started with an ico sphere and used the Grab and Draw Brushes with dynamic topology to approach the shape I wanted. For the large rock, I also flattened the sides with the Scrape Brush to get a squarish shape, and then added larger bumps with Clay Strips to keep the silhouette uneven and natural.
After that, I sculpted the details. I used a heavy amount of Scrape Brush in some places to get a smooth, rounded appearance, while flattening others. It was more instinctive than the arches.
Retopology and UV
Making an optimized "game-ready" scene was not my priority here, so I did not use any particular technique for the retopology of the stone props, only Blender's standard decimate modifier. For the arches, I decimated each stone individually and joined them afterwards.
Cutting up the UVs was fairly simple since I did not have any complex shapes. Since I knew which way each prop would be facing the camera, I could also prioritise putting the seams in less visible angles.
Texture and Shader
For the texturing of the rocks and arches, I started by using Substance 3D Painter's baking tools to bake all the necessary textures and masks, such as Normal, Curvature, Position, and Ambient Occlusion. I then began to build my material. I had a few references to define the style I was aiming for.
To get a similar look, my overall approach was one of trial and error, stacking layers with different Noise Textures, and just seeing what sticks. Ultimately, what worked was starting with a small-scale noise mask for detail, broken up by a larger-scale noise of the same color. Then I added more large-scale noise masks with varying shades of gray and blue.
Of course, I used slope blur for every mask for a stylized effect, increasing its strength when I wanted the color to blend smoothly, and decreasing it when I wanted it to stand out. For the Roughness, I didn't add a specific mask. I simply gave each color mask a slightly different value of Roughness. Here's a breakdown video of the result for the large rock:
I applied this material to every stone arch and rock, changing only the paint layer and tweaking things like slope blur intensity. Once the prop was imported into Unreal Engine, I used a shader material that I had already made for previous projects. So far, I've kept the same shader across my projects, upgrading it as I go.
The only new parameter I added for this project was a tiled Normal Map for some added variation and a more natural look. It uses a triplanar projection and is aligned to the world position. I did not use it on the arches, though, as I preferred a smoother, cleaner look for them.
The other two important parameters I used were a coverage material and a Runtime Virtual Texture (RVT) gradient. The first is to allow the moss meshes to blend onto the props better, and the second is for the prop itself to blend into the ground.
At this point in the project, I made sure to finish the rocks and arches before moving on to making the vegetation (plants above are placeholders), which, to me, must come last, as it generally covers everything else.
Canopy and Bushes
To make the canopy and bushes, I used a free software called TreeIt. The tutorial by Viktoriia Zavhorodnia on stylized fluffy trees gives lots of good tips on the software and was a big help (link at the end). I wanted to be able to make every canopy in the scene with one prop, so I focused on getting an asymmetrical shape that could be rotated to get different variations.
Then I imported the tree in Blender, got rid of the trunk and branches, and randomly selected faces to make them slightly larger or smaller, so the leaves would look less homogenous. That was it for the canopy mesh. I then made a smaller, rounder mesh following the same process for the bushes on the ground.
The next step was changing the normals to make it look more stylized, for which I tried many options. The standard normals that came out of TreeIt made hard shadows and weren't usable. I tried projecting sphere normals on the bush, which gave a smoother aspect, but the shadow felt too uniform for the large canopy mesh. Ultimately, the best result came from simply setting TreeIt's "leaf smoothing" parameter to the max.
This gave a result that was smooth but not uniform, which left more realistic shadows than the sphere projection. Nevertheless, I did keep sphere projection for the smaller bush.
Texture
All of the vegetation textures, be it grass, moss, or tree leaves, use cards drawn in Substance 3D Painter. I did not use 3D except for a few plant stems. I simply painted the shapes using an opacity layer in Substance 3D Painter. I kept the shapes as simple as I could, partly because I prefer a smoother, stylized style rather than a detailed one, but also because of my skills.
I have no experience in 2D art, and this was pretty much my first time drawing anything seriously since childhood. I also kept it white or grayscaled, as I wanted to control the color in Unreal Engine.
I drew five different textures for the canopies. Four of which I had identified when I broke down the scene, and one more for the background, which I also ended up making using the canopy mesh.
Unreal Engine Shader
In Unreal Engine, I used a "quad to billboard" shader, where the mesh's texture always follows the camera. On top of that, I added several color parameters. When it comes to vegetation color, I like to keep the maximum amount of control in the engine, to be as flexible as I can when making the scene.
Here, it was important not have one flat color for the canopy, as in real life, vegetation is never monochromatic, even when the individual plants are. So I added 4 extra parameters on top of the base color:
- A global gradient that affects the whole mesh from bottom to top.
- A radial gradient on each face of the mesh.
- A world-aligned noise texture, with triplanar projection on the mesh.
- An emissive Fresnel effect.
By playing with these parameters, I could reproduce the various shades of green and yellow of the trees while having a smooth transition between them. It's much more pleasant and natural than having different meshes of flat color that are visibly distinct.
In addition, enabling shadows or not on the mesh can make a big difference. Every canopy mesh in the background and middle-ground has shadows disabled, which gives them a less detailed appearance. They are also the only canopies that have Fresnel active, to give the appearance of stronger lighting without adding lights.
Grass and Moss
Grass has been an essential part of all my past projects, yet I was never satisfied with it. So before the start of this project, I spent a month working only on making a new setup for stylized grass. I wanted to find a workflow I could use for all future projects.
I started by looking at real meadows to figure out how to compose my grass in a realistic way. Wild grass in real life is rarely just grass, it's a mix of grass blades of various sizes, small leafy plants, moss, and more, usually with different shades of green.
So the first step was to make a set of grass assets diverse enough to be noticeable, but that could still be blended. I settled on 3 grass patches (short, tall, and tufted), 2 leaf plant patches, and 1 moss patch.
To make them, I started by drawing the texture cards, with the same process as the canopy leaves. I then proceeded to cut out the cards in Blender and build the assets. For the grass and leaf plants, I added some geometry to bend the cards, making sure the patch looked nice and full from every angle. In addition, I set all the normals upwards, which is key if you want a stylized grass that blends smoothly into the landscape.
UE5 Shader
In UE5, the most important thing I need to make my stylized grass look good is an RVT gradient, which allows the base of the grass assets to "adopt" the color of the terrain material they're placed on. Combined with a simple flat color material for the terrain, you get a great blending effect. I typically put the RVT gradient quite high on the grass so that its color is mostly driven by the terrain, and the base of the grass mesh is almost invisible.
Once the assets and shader were ready, the challenge was to figure out how to distribute the vegetation. I first tried using the vegetation paint mode in Unreal to simply paint my different grass assets in a way that looked natural, but it didn't work. The solution instead came from the terrain material I was using.
The terrain material itself is not mine, but the one made by Unreal Sensei in his tutorial, Unreal Engine 5 Landscape Material, which is free to download. I've used it for all my landscapes so far. It has plenty of useful features, including one I had never used until now: "Landscape Grass". In short, it allows you to associate vegetation assets with specific terrain layers.
You also have options to control the scale of the assets, their number, and at what density of the layer they spawn. I used this feature to create 3 layers of different colors: one with just short grass, one with a mix of tall and tufty grass, and one with a mix of grass and leaf plants.
This gave me a far better result. By mixing the layers and smoothing them in the landscape mode, I was now able to get a natural blending of both shapes and colors for the grass. I did end up also painting some extra assets directly, mainly moss and grass tufts, along with the flowers.
The last detail left to add was the moss on the rocks and arch. I used the same moss asset as for the ground. For the rocks, painting directly on them was sufficient, but for the central arch, it looked too flat. So I made a very basic mesh made of packed spheres and placed some on the arch where I wanted to have more volume. Then I painted the moss on that instead.
The difference is small but enough to make the moss look more inflated and spongy, closer to that thick moss you can find growing on rocks in a forest.
Lighting
First off, it was important to disable Lumen, as it creates noticeable shadows on the base of grass, which ruins the RVT's blending effect. Next, the goal was to follow the reference as close as I could, as lighting is a weak point for me. In particular, I don't have any knowledge of lighting optimization, so I decided to brute force it. I simply added as many spotlights and point lights as I felt necessary to copy the reference's lighting.
In the above image, I removed post-processing and the Fresnel emission from the canopies in the back, and broke down the lighting into categories. The main lights and background lights are pretty straightforward: they're very large spotlights used to act as sunlight and bring the focus onto the arches.
The detail lights are all the small spotlights and point lights I added to emphasize the edges of rocks and trees. I also used one as a filler light under the central arch, where the skylight felt too weak. These lights make the scene more natural, while not being strong enough to draw attention away from the arches.
Post-Processing
With post-processing, I had two objectives: adjust the color of the scene closer to the reference, and accentuate the focus on the central arch. I used a post-process volume and played around with the parameters, most of which I had never tried before, until I found a solution.
First, for the color, I thought the reference had a nice contrast between the yellow tint of the sunlight in the center and the bluer tint of the shadows on the edge of the scene, where the forest isn't illuminated.
I wanted to recreate that as best I could. So I first used the "scene tint" parameter to give a very slight yellow tint to the whole scene. Then, to compensate for that tint in the shadow areas, I adjusted the shadow gamma to a slight blue.
Second, to make the central arch pop out more, I activated the "shadow contrast" option in local exposure, increased global contrast to 1.1, and Ambient Occlusion to 0.7. While this was good, I then discovered that UE5 had a "vignette" parameter that darkens the outer edges of the camera's vision. By setting it to 0.8, I found a good balance that truly emphasized the center of the scene.
My final version has colors a little more vivid and contrasted than the reference, but that was also a personal preference.
Conclusion
The project itself, from the first blockout to final render, took me around 2 months, with an average of 1-3h a day, not counting the 1 month it took me to figure out my stylized grass setup. I'm really proud of how this project turned out. Looking at all my environments so far, this one is clearly the best in my opinion, and it gives me confidence to keep going.
The best part was making the foliage. Playing around with the shapes and colors of grass and trees feels so satisfying. It's hard for me to imagine making an environment without those. I also think the way I colored my grass and trees, with smooth variations that aren't attached to the meshes, is the key to the stylized 3D I want to make, and I'll be using and refining it more in the future.
A hard part was, as always for me, putting a WIP out early and asking for feedback. It seems trivial, but it can be hard to show work you know isn't ready, especially when, like me, you're a hobbyist with no connections of any kind with the industry. So thank you to the people on the DiNusty Discord server for all the feedback and encouragement.