Making an Atmospheric Garden of Dragons Scene with Procedural Texturing
Rebecca Ma3D Environment ArtistInterviewed byKseniya Serebrennikova28 October 2026Rebecca Ma discusses how she sculpted the intricate patterns on dragon statues with ZBrush's Make 3D tool, explains how procedural…

Rebecca Ma discusses how she sculpted the intricate patterns on dragon statues with ZBrush's Make 3D tool, explains how procedural texturing in Maya and V-Ray helped her save time, and talks about how she created a water simulation and an atmospheric fog in Houdini.
Introduction
My name is Rebecca Ma, and my journey into 3D art began after graduating from UCLA with degrees in Mechanical Engineering and Film. Although I majored in a STEM field, I've always loved art, and deep down I knew I wanted to pursue a more creative career. I especially enjoyed the 3D modeling aspect of engineering, and while exploring different career paths, I stumbled upon VFX and CG art. It was the perfect blend of my technical background and creative interests.
In October 2025, I enrolled in Think Tank Training Centre's CG Asset Creation program, specializing in Environments and Props for Film. Since then, I've learned so much about different workflows and software while connecting with an incredible community of 3D artists through my mentors and classmates.
My background in engineering and CAD gave me a strong foundation in 3D, and I found that hard-surface modeling and procedural, node-based workflows like those in Houdini came more naturally to me. Meanwhile, studying film introduced me to lighting and cinematography, helping shape my eye for composition and visual storytelling.
Together, these experiences have shaped my approach to CG art, allowing me to combine technical problem-solving with a passion for creating visually compelling environments.
Getting Started with the Garden of Dragons Project
During the advanced term of my Think Tank program, we were tasked with selecting a piece of concept art and recreating it as a 3D environment over the course of 16 weeks. When I came across Dao Vi's work, I immediately fell in love and knew I wanted to try my hand at bringing it to life. I'd also never created an outdoor landscape before, and it seemed like a great opportunity to challenge myself and expand my skill set.
Beyond its beautiful colors and composition, the concept allowed me to explore areas of environment art that were new to me, including sculpting dragons and rock formations, creating and scattering foliage, generating terrain, and simulating water and atmospheric fog.
I chose the daytime view as my primary reference because it showcased the environment and its textures most clearly, but I initially hoped to recreate the other views as well. I unfortunately ran out of time to complete them all, but perhaps I'll revisit this project in the future.
Sculpting
Since Maya was the software I was most familiar with, I chose to use it as my primary scene assembly tool. I started by importing the concept art into my render camera and creating a simple blockout using basic geometry like boxes and spheres. I also brought in a human model from Maya's Content Browser to establish a sense of scale throughout the environment.
I sculpted the dragons in ZBrush while using the references on Dao Vi's page as a guide. Having had limited experience with ZBrush before, I initially struggled to familiarize myself with its interface and tools.
One particularly useful feature I discovered was the Make 3D tool in the Alpha menu, which converts a 2D alpha into a 3D form by extruding it. The dragons featured intricate patterns across their bodies and heads, so this tool allowed me to design these details in Photoshop first and then turn them into geometry, rather than having to figure out how to cut the patterns directly into a 3D mesh.
For the mountains and other terrain, I brought my initial blockout into Gaea and used its erosion tools to quickly generate a more natural-looking terrain. I then imported it into ZBrush, where I adjusted the terrain features to better match the concept and sharpened certain formations.
The smaller rocks were sculpted directly in ZBrush using brushes such as Clay Buildup, Dam Standard, Flatten, etc. to refine their shapes and surfaces.
I created the trees in SpeedTree by following Think Tank's lesson tutorials, gradually adding branches and foliage until their shapes and silhouettes matched the concept. I also incorporated subtle wind animation before exporting the trees to Maya.
For the grass and flowers, I sourced existing meshes and textures from online libraries such as Quixel Megascans. I brought the terrain into Houdini, painted masks to control vegetation placement, and used the Scatter and Align node to generate scatter points.
I randomized attributes such as scale, rotation, and object ID to introduce variation in both the distribution and selection of vegetation meshes. I also created separate scatter setups for grass and flowers, giving me greater control over their placement and density.
For the flowers, I tried to organize them more into patches or clumps to mimic natural growth patterns. Once the scatter points were generated, I transferred them back into Maya through a Houdini Digital Asset (HDA).
I followed Houdini to Maya Particle Instancers and Attributes by Guy's Dojo to set up this HDA workflow, adapting the technique to suit the needs of my scene. In retrospect, assembling the scene entirely in Houdini might have been more efficient, as transferring scatter points between Houdini and Maya introduced additional complexity to my workflow.
Before scattering, I converted the vegetation geometry into V-Ray proxies to keep the Maya viewport more manageable. I then used Maya's nParticle Instancer to distribute the grass and flower meshes across the terrain. I followed a similar workflow to scatter rocks throughout the riverbed.
Unwrapping
Almost all of my assets were textured procedurally without UVs. My mentor recommended this approach to avoid spending too much time remeshing my ZBrush sculpts while trying to preserve their intricate details, as well as eliminate the time-consuming process of unwrapping complex meshes such as the terrain and dragons.
As a result, my retopology process focused primarily on reducing polygon counts to make the assets manageable in Maya without overloading the scene. I primarily used ZBrush's Decimation Master to quickly optimize my sculpts while retaining as much detail as possible. Since these assets would remain static in the final scene, the resulting triangulated topology was adequate for my project.
Texturing
I used a procedural texturing workflow in Maya and V-Ray, layering and blending multiple materials with procedural masks. I applied the textures using triplanar projections, which allowed me to texture meshes without relying on UVs.
For the dragons, I combined four primary materials: corroded metal, copper-toned rock, rust, and moss. I used corroded metal as the base layer, then layered copper-toned rock over it to break up the metallic surface and give more of an appearance of weathered stone statues. I created a mask for the rock material by combining two V-Ray Bercon Noise nodes at different scales, introducing variation across the surface.
Next, I layered rust over the existing materials. Since I wanted the rust to be more present around areas closer to the river, I used the V-Ray Dirt node to generate an occlusion mask around these areas, combined with additional Bercon Noise layers to break up the distribution.
For the moss, I used the V-Ray Falloff node to generate a top-facing mask, then introduced further variation with procedural noise. I also incorporated the V-Ray Dirt node to emphasize ambient occlusion in the crevices of the mesh.
Finally, I applied another layer of rust with reduced roughness to create a wetter, shinier appearance along the boundary where the dragons met the river, using the V-Ray Dirt mask to control its placement. I applied a similar layered texturing approach to other assets, including the rocks and terrain, using combinations of moss, lichen, and dirt to introduce variation, along with wetness masks around areas that met the river.
Within individual materials, I used remap nodes to fine-tune texture map values and achieve the desired results.
Displacement played an important role in my texturing workflow, particularly for the river. I combined two V-Ray Water Surface textures with different scales and heights to create varied surface breakup. I blended them using the V-Ray Blend Colors node, driven by a noise mask to create irregular patches of variation.
To concentrate the displacement breakup near the riverbanks, I initially tried using the V-Ray Dirt node to generate an occlusion mask. However, I discovered that V-Ray evaluates displacement before the Dirt node in this setup, preventing the mask from affecting the displacement as intended.
I therefore switched to a hand-painted mask to control where the displacement appeared, which gave me more direct control over the transition between the calmer central water and the more varied water near the shores.
Assembling the Scene
I assembled the final environment in Maya, separating heavier geometry and effects into individual scenes that I referenced into the main layout. These included the vegetation and riverbed rock scatters, waterfalls, and atmospheric fog.
Animated Elements
I created the water and whitewater simulations in Houdini using a FLIP workflow. Since I was new to Houdini simulations, I referenced various online tutorials to familiarize myself with the process.
I imported the dragon heads into Houdini and used them as collision geometry to guide the waterfall simulation. This also helped me position and shape the initial fluid source to ensure the waterfall originated at the correct height. I then ran the fluid source and FLIP tank through a FLIP Solver, using the dragon heads as static collision geometry.
Once the simulation was complete, I passed the resulting particles through the Fluid Compress node and the Particle Fluid Surface node to convert them into polygon geometry.
I followed a similar workflow to generate whitewater from the waterfall simulation, using Houdini's Whitewater Source and Whitewater Solver nodes. Before exporting, I converted the whitewater particles into polygons to make them renderable as geometry in Maya. Once both simulations were complete, I exported the water and whitewater as Alembic caches for integration into Maya.
I also created the atmospheric fog in Houdini, using the Cloud Shape Generate node to build up distinct patches of fog throughout the scene. I converted these into fog VDBs, then introduced additional detail and variation using Cloud Noise, Billowy Noise, and Wispy Noise. I exported the resulting volumes as VDB files and imported them into Maya through V-Ray's Volume Grid nodes for rendering.
For the fish, I created simple meshes, constrained them to a curve, and keyed their positions at different frames to create movement throughout the scene. The birds were sourced from online stock footage and composited into the final scene.
Lighting
My primary lighting setup consisted of a V-Ray Sun and Sky system. I supplemented this with Rect Lights to selectively illuminate areas of the grass, along with several sphere lights to introduce subtle blue highlights and reflections on the dragons. I also enabled caustics and used V-Ray Aerial Perspective to introduce atmospheric haze and enhance the sense of depth in the environment.
To streamline rendering and compositing, I organized the scene into separate render layers for the terrain, river and water, and fog. I rendered both multi-channel EXR and deep EXR passes, along with additional passes such as cryptomattes, light selects, and depth to give me greater flexibility in compositing.
In Nuke, I used Shuffle nodes to isolate individual lights, allowing me to grade them independently before recombining them into the final image. Following my mentor's advice to use cinematic references to guide my lighting and color grading, I sourced several shots from ShotDeck that matched the mood and atmosphere I wanted to achieve.
As I graded my render, I adjusted the gain, gamma, and saturation sliders at the top of the viewport to compare and bring my render closer to these references. I also used cryptomatte passes to isolate and grade individual objects independently. Finally, I used a deep compositing workflow to combine the rendered layers into the final image.
To integrate the birds, I projected them onto a card to position them within the scene. By adjusting the card's placement, I was able to position the birds behind the dragons but in front of the mountains. I also created a sky matte painting in Photoshop and projected it onto a sphere to produce realistic parallax as the camera moved.
I created God rays in Nuke by combining the Radial node with the Noise node to break up the elliptical shape and introduce variation. I positioned the effect in the upper-right corner of the frame and connected it to the God Rays node, using the Roto node to mask out areas where the effect wasn't needed.
Finally, I applied overall color correction and added subtle lens effects, including chromatic aberration, film grain, glow, vignetting, and defocus, to bring the final image together.
Conclusion
One of the biggest challenges during production was bringing all my assets together in Maya, especially the vegetation scatter. Looking back, assembling the scene in Houdini might have been easier, or I could have explored creating certain assets and workflows natively in Maya to simplify the pipeline.
Animating the river was another challenge. I wanted to animate the foam on the water's surface in addition to the V-Ray Water textures, but achieving a convincing, realistic result proved to be difficult. I also struggled with animating the grass and flowers.
Since I had used Houdini's Scatter and Align node to orient the vegetation along the terrain's surface normals, figuring out how to animate the rotation and orientation attributes was challenging. I eventually experimented with Vellum to simulate the individual vegetation meshes rather than the scatter points, but the resulting motion was too subtle to read clearly in the final shot.
My biggest piece of advice is to keep pushing and stay curious. A year ago, I was just starting my program at Think Tank with no experience using industry-standard software. I'm proud of how far I've come, but I also know that there's still so much left to learn, and I still consider myself a beginner in many areas of 3D art.
I'd also encourage artists to experiment and step outside their comfort zones. Learning unfamiliar software or tackling a large project can be overwhelming, but breaking things down into smaller, manageable steps makes the process much less intimidating.
My final piece of advice is to not be too hard on yourself. Improvement takes time, and it's important to take care of your mental health along the way. Over the past year, I've gradually learned the importance of stepping away from my computer and giving myself time to recharge, and I find that reconnecting with friends and family always helps me return to my projects feeling refreshed and motivated!