How to Design an Abandoned Church Hidden in the Forest Using Unreal Engine 5
Enzo Lorenzi-Kohut shared the workflow behind the Abandoned Church project, talking about how he built the church and detailing how he created the trees, flowers, and rocks with realism.
Introduction
Hi, I'm Enzo Lorenzi Kohut, a 28-year-old 3D Environment Artist based in France. I originally worked for several years as a Video Editor, driven by a strong interest in cinema and visual storytelling. At the same time, video games have always been a major influence in my life, shaping how I experience worlds, emotions, and narratives.
Over time, I realized that this was the medium I truly wanted to work with. I started learning 3D alongside my job through online tutorials, and quickly became deeply invested in the process. Very early on, I understood that progressing in 3D requires focus and clear direction.
Trying to do everything at once often means not becoming truly good at anything, so I decided to specialize. Environment art naturally became my path. I've always enjoyed spending time in games simply observing environments, how spaces are composed, how they guide the player, and how storytelling emerges through architecture, lighting, and set dressing.
Eventually, I decided to fully commit and leave my previous job to focus on learning 3D and strengthening my artistic fundamentals. While I'm still far from being a strong 2D Artist, learning the basics of perspective, composition, and color theory has been extremely valuable and directly impacts the way I approach 3D scenes.
I trained at CG Master Academy, where I was mentored by senior Industry Artists and focused on environment art. Three years later, here I am!
The Abandoned Church
The Abandoned Church project started during my final 10-week CGMA mentorship under the guidance of Anthony Vaccaro, Principal Environment Artist at Naughty Dog. The primary objective was to create a comprehensive organic environment, encompassing the entire pipeline: blockout, modeling, sculpting, texturing, foliage creation, and final scene assembly in Unreal Engine.
While the mentorship itself lasted 10 weeks, I continued working on the project independently afterward, bringing the total production time to around 16 weeks. Initially, the idea was to create a small, early-1920s scientific camp situated in a forest. During my research, I came across The Green Chapel by Louis Sullivan, which I found particularly inspiring.
I was also strongly influenced by the breakdown Louis shared on 80 Level, especially his approach to composition, mood, and environment storytelling.
I decided to explore a related theme in my own way, with a modest chapel as the main focal point, while the camp evolved into a secondary element of the scene.
The goal became to depict a church abandoned for nearly a century, hidden deep within the forest. Although the structure is still standing and relatively well preserved, time has clearly left its mark. Nearby, a small scavenger camp suggests that the area is still occasionally visited by people searching for valuable remnants. This shift helped give the scene a stronger identity and a clearer narrative.
Since I didn't rely on a dedicated concept art to guide the project, I spent a significant amount of time on reference gathering and visual exploration. I built several PureRef boards for architecture, landscape, vegetation, and overall mood, which helped me progressively refine the artistic direction and stay consistent throughout production.
Composition was planned very early during the blockout phase. This does not mean that everything was set in stone once this stage was complete. The scene continued to evolve throughout production, and some elements changed significantly along the way.
At this stage, the main objective was to establish the story and overall structure using very simple forms. The entire blockout was created directly in Maya.
During blockout, I wasn't concerned with clean topology or detailed modeling. Instead, I focused on large shapes, scale, proportions, and overall readability. Even though the church appears fairly developed in screenshots, the initial blockout was made of only a few basic boxes and planes defining the main body, the tower, and the roof.
Having a strong understanding of the scene before moving into more advanced stages was crucial for me. All the main elements present in the final image were already established at this early stage, which made later decisions much clearer and more controlled.
One important aspect of my approach was working primarily from a player's eye-level perspective rather than relying solely on top-down views. This helped to ensure the scene remained readable from all angles, working in 360°, with a clear main subject, strong silhouettes, well-defined focal points, and secondary areas of interest that support the main composition.
Dividing the Scene
The scene was divided into two main asset categories: human-made assets, such as the church, tents, and secondary props, and organic assets, including foliage and rocks.
For the human-made assets, the main challenge was defining how to approach the church, both in terms of overall design and modular construction. From a design standpoint, I wanted the church to feel small and modest, with simple, readable shapes.
I worked from big to small forms, constantly looking for a strong balance between large, medium, and small shapes, while maintaining a clear and readable silhouette.
I first designed the church as if it were brand new, without any destruction. Once the base design was established, I introduced damage using Boolean operations to roughly define where the destruction would appear.
At this stage, I wasn't concerned about rough or unrealistic edges, as I knew I would later hand-place stone bricks, roof tiles, and wooden elements along these areas to make the damage feel more believable.
After the design phase, I focused on building the modular kit. Since there is no single "correct" way to approach modularity, I treated the church like a puzzle, aiming to use as few pieces as possible while reusing elements across the structure. The goal was to keep the kit efficient while avoiding obvious repetition.
All modeling was done in Maya. I made sure that every asset snapped cleanly to the grid, using dimensions based on multiples of 5 units. This helped ensure proper modularity and made scene assembly inside Unreal Engine much more efficient. One of the main challenges with modular assets is avoiding visible seams where modules meet. If not handled properly, mismatched UVs can cause noticeable texture seams along shared borders.
To address this, we can plan wall dimensions based on the project's texel density. Texel density can be understood as the "texture scale" of an asset, defining how many pixels are used to cover a given surface area so that all assets share a consistent level of detail. In first-person games, this value is often around 10.24 px/cm, while third-person games commonly use 5.12 px/cm, which is the value I chose for this project.
With a texel density of 5.12 px/cm, a 2K texture covers an area of 400 by 400 centimeters. In an ideal case, building wall modules that match this size allows textures to align perfectly. However, since it's not possible to rely on a single wall size, additional techniques were needed to handle variations.
One solution was using mirrored UVs. In this setup, the wall is split into two UV shells, with one shell mirrored and placed directly on top of the other so both sample the same area of the texture. For example, in the screenshot and GIF below, both the red and blue faces sample the same area of the texture. The only difference is that the red face is mirrored in UV space.
As a result, the left edge of the wall matches the right edge perfectly, allowing for a seamless transition between adjacent modules. The downside is that it can introduce visible symmetry in the texture, sometimes referred to as the 2butterfly effect,2 which can be more or less noticeable depending on the asset.
Another simple and effective solution was to hide the seams. Elements such as vegetation, pillars, or architectural details can be placed along module borders to naturally break up seams. In my case, I used wall pillars throughout the church, which helped hide seams while also reinforcing the architectural design.
For other human-made assets such as bells, doors, Catholic crosses, stone bricks, and similar elements, the workflow was straightforward. I usually started modeling in Maya, and when needed, moved to ZBrush to add sculpted details. If the sculpt didn't significantly alter the silhouette, the details can be baked into a Normal Map and applied back onto the original mesh.
If the silhouette changed too much, I created a new optimized retopologized mesh from the high-poly version and baked the details onto it. There are several approaches to retopology. One option is manual retopology using Maya's Quad Draw tool, which is the slowest method but produces the cleanest results.
Another option is using ZBrush's Decimation Master, which quickly generates an acceptable mesh. While this may not always be suitable for production, it works well for personal projects. UVs are usually created directly in Maya. However, for more complex or dense meshes, RizomUV can be a better choice, as it is more efficient at handling complex geometry.
Some assets required more specific solutions. For the bell, I created custom stamps for ZBrush to add details such as the Catholic cross, icons, and lettering. These were based on high-quality open-source reference images. Simply converting these images to black and white wasn't enough to generate usable height information, so I adjusted the values in Photoshop to clearly separate raised and recessed areas.
For more complex patterns like the rose window or metal fences, I could have modeled everything directly in Maya, but to save time, I designed the patterns in Illustrator, exported them as SVG files, imported them into Maya, and worked from there.
The fences required careful planning in terms of modularity. Manually placing each fence element around the church would have been very time-consuming, and even small landscape changes would have required extensive rework. To avoid this, the fences were divided into smaller modular sections with several variations, including intact and broken pieces.
A Blueprint was then created to instance these assets along a spline, allowing the fences to be generated quickly and adjusted easily. This made iteration faster and kept the workflow flexible and non-destructive.
Fabric Assets & Nature
For the tents, Marvelous Designer was the best tool to achieve believable fabric assets. The assets were too large for a purely unique texture workflow with optimal texel density, so I created a tileable fabric texture in Substance 3D Designer, then used Substance 3D Painter to generate masks for area-based details such as dirt, curvature, and decorative bands.
Inside Unreal Engine, these masks allowed me to combine multiple variations of the same fabric texture and a tileable dirt surface to add visual richness.
Another important asset was the dug hole and surrounding dirt piles, meant to suggest that looters had desecrated the graves. Sculpting was essential here to achieve believable shapes and ensure a natural blend with the terrain. Similar to the tents, these assets were textured using masks and tiling textures created in Substance 3D Designer.
For organic assets, foliage played a key role in the scene. I needed a wide range of foliage types and scales to create natural transitions and visual flow.
The most important foliage assets were the trees. I needed two distinct types: aspens and pine trees. Pines helped establish the forested mountain environment, while aspens introduced color variation with red and orange tones. While the overall workflow was similar, the approach to leaves and needles differed significantly.
For the aspens, leaves were sculpted in ZBrush, baked down to a 2D plane, and textured in Substance 3D Painter. The goal was to introduce subtle imperfections and color variation without overdoing it, because it can quickly overload the canopy, as excessive contrast tends to read poorly at a distance.
For pine trees, this step wasn't necessary. Pine needles were created directly in SpeedTree using simple cylindrical growth elements with a basic green gradient. The scale of the needles was intentionally exaggerated, as real-world proportions often don't read well in-engine from a distance. From there, I created branch atlases directly in SpeedTree, which were then baked into textures and used to create low-poly alpha cards.
These cards were distributed across the trees inside SpeedTree. This workflow may evolve with newer Nanite updates in Unreal Engine, as fully modeled leaves can now be more efficient than alpha cards, since Nanite handles high polygon counts well while transparency remains relatively expensive.
Texturing
The same approach was used for mid-sized foliage such as bushes. For very small plants, however, the workflow changed slightly. Leaves were still sculpted in ZBrush, then baked and textured in Substance 3D Painter.
The resulting texture was applied to a simple plane in Maya, from which individual leaves were cut out as separate low-poly meshes. Small plants and flowers were then assembled by hand.
Tileable textures played a major role in this project. Breaking down every material in detail would be too long, so the following section focuses on a few key techniques used to achieve specific effects.
For those interested, I'm also happy to share my Substance 3D Designer file for free. It includes six tileable surfaces used in the scene: pine bark, aspen bark, grass with an underlying dirt layer, rock, stone wall, and stone surface. Download Link.
Let's start with the pine bark material. It was mainly built using multiple Tile Sampler nodes to distribute bark chunks. Two separate Tile Sampler setups were used: one for the background layer and another for the foreground layer. Each Tile Sampler allowed fine control over the size, count, and distribution of the chunks, which helped create depth and natural variation across the surface.
The chunks themselves were generated using a custom bark chunk generator. These unique shapes were then plugged into the input of each Tile Sampler, giving me more control over the overall look while avoiding obvious repetition.
For the aspen bark, one of the most important elements was recreating the characteristic "eye scars" that appear across the trunk surface. These shapes were created starting from a flattened disc, which was then warped using a combination of shapes such as Ridged Bell, Pyramid, and Paraboloid to form the distinctive pointed upper arc.
A simple disc shape was used to define the inner cavity of the scar. Two variations of this shape were created and randomly distributed using a Tile Sampler. The result was then warped to introduce subtle deformation, ensuring that each eye scar remained unique and that visible repetition was avoided.
The grass material followed a similar logic to the pine and aspen bark materials. Individual grass blade shapes were first created from a simple rectangular shape, then warped using gradients to define the blade silhouette. From this base shape, four grass blades were generated, further warped to add variation, and cropped individually.
These were then connected as inputs to a Tile Sampler. I used the underlying dirt Height Map, converted it into a Normal Map, and fed it into the Tile Sampler as a Vector Map input. This allowed the grass blades to naturally follow the underlying surface. Finally, the grass and dirt layers were combined using a Height Blend node.
For the stone wall, one of the key challenges was creating a believable edge breakup. A technique I like to use starts by connecting the stone Height Map to a Flood Fill node, followed by multiple Flood Fill to Gradient nodes. Each of these uses a different random seed and is blended using a Min (Darken) blend mode, creating intersecting gradients.
A Levels node is then used to adjust the bevel size, allowing the effect to range from large, chunky edge breakups to much finer ones, depending on the desired result. This result can then be blended with other edge breakup techniques to add even more complexity and variation to the stone surface.
For the rock surface, an effective approach is to start with a Tile Sampler using a Pyramid shape, which is then deformed using a Non-Uniform Directional Warp. The Tile Sampler output is used both as the shape input and as the intensity and Angle Maps for the warp.
This allows the shape to be extruded and distorted, quickly forming a convincing rocky base. The result is then further deformed using a second Non-Uniform Directional Warp, driven by another Tile Sampler with identical settings but a different random seed, adding extra variation and randomness.
Large cracks are introduced using a Shadow node, followed by a Histogram Scan to strengthen and sharpen the effect. This technique is highly versatile: by adjusting the Tile Sampler distribution, shape inputs, or warp parameters, it's possible to generate a wide range of distinct and interesting rock surfaces.
Another important part of the workflow was the master material setup inside Unreal Engine. To manage the textures efficiently, I created a master material able to blend multiple texture sets, including Base Color, Normal, and ORM maps.
The material includes options to enable or disable landscape blending using Runtime Virtual Textures, as well as support for adding a baked normal or a detail normal when needed. On top of that, it allows a world-aligned blend texture, such as moss or snow, to be toggled on and off, helping assets integrate more naturally into the environment.
Finally, the material supports macro color variation, which is especially useful on large surfaces like rocks, helping break up repetition and add visual richness at a distance.
To introduce variation across the different wall modules, vertex painting was used on the stone wall material. Three variations of the stone wall texture were created: a clean version, a mossy version, and a dirtier version. These were blended using vertex painting, allowing moss and dirt to be painted directly in Unreal Engine, where it made the most visual sense.
On top of that, a mask generated in Substance 3D Designer was used to control the remaining stone cladding, suggesting an older facing layer that has partially eroded over time and now only appears in certain areas. This helped further break repetition and reinforce the sense of age and material history.
For every aspect of level dressing, whether it involves foliage or props, I always try to think from big to small. I start with the largest elements, such as trees, then move on to large rocks, big bushes, medium plants and grass, smaller plants, and finally very small ground vegetation. Working in this order helps maintain strong readability, create a convincing layout, and ensure smooth transitions between different areas of the scene.
I also constantly think about what might have happened in the environment I'm creating and how to tell its story most effectively. By considering human activity, the passage of time, and natural wear, each element is placed with intention. Rather than adding random clutter, every asset is meant to support the overall narrative of the scene.
Throughout the process, I always try to evaluate the environment from a grounded, player-level perspective. Games are experienced from the ground, not from a bird's-eye view (unless you're playing Superman, or a bird!) I regularly check the scene at eye level to make sure it reads well and feels believable during gameplay.
In terms of composition, I usually start with simple principles such as the rule of thirds, which provides a solid foundation. From there, more advanced techniques can be introduced, like framing the scene with elements to guide the viewer's attention toward the main focal point.
Composition is further reinforced through contrast: light versus dark, warm versus cool colors, vegetation versus human-made elements, or straight versus organic shapes, as well as through rhythm lines that naturally lead the viewer's eye across the scene and help emphasize key areas.
Lighting
For the lighting setup, since I'm not a lighting artist, I kept the approach relatively simple to achieve the mood I was aiming for. A neutral directional light was used as the main light source, providing a cool and balanced base illumination for the scene. To help draw attention to the main focal point, warmer spotlights were added to light the church and highlight specific areas that weren't sufficiently emphasized by the directional light alone.
To better mimic the behavior of sunlight, some of these spotlights use a light function with a simple noise pattern. This helps break up the light with softer or darker areas, suggesting clouds or tree shadows. To avoid an overly strong falloff and achieve a more sun-like, infinite light behavior, I disabled the "Use Inverse Squared Falloff" option in the light settings and used a low Light Falloff Exponent value.
This allowed the light to reach farther without overexposing elements close to the source. Subtle local fog and a fake god ray were then added to reinforce the atmosphere and bring a bit more warmth and visual focus to the church. For post-processing, I aimed to keep the setup consistent across all cameras by using a single Post Process Volume.
It was mainly used to enhance contrast and saturation across the scene, with additional subtle adjustments to overall exposure, color temperature, and localized color grading in both shadows and highlights. All post-processing was handled directly inside Unreal Engine. No color correction was done in DaVinci Resolve, as I wanted the final look of the scene to be achieved entirely in-engine.
Conclusion
One of the main challenges in a scene like this, where a large number of assets come together in a single environment, was making sure everything blended cohesively. This applied first to modeling, especially maintaining a consistent scale across all assets, but even more importantly, to color and value consistency.
Throughout the entire process, it was essential to stick to a predefined color palette and constantly check how each texture interacted with the others. Maintaining clear and consistent values between materials helped ensure that no element stood out unintentionally or broke the overall visual harmony of the scene.
One of the parts I enjoyed the most was working on the church, particularly designing it as a modular asset. Building a modular kit that was flexible, visually coherent, and still allowed for variation and storytelling was both challenging and very rewarding.
Foliage creation was also one of the most enjoyable aspects of the project. From trees to smaller plants, building believable vegetation and integrating it naturally into the environment was challenging but very satisfying, especially during the level dressing phase when everything started to come together in-engine.
The biggest lesson I learned from this project is the importance of planning. Having a clear understanding of the scene at every stage and knowing where the project is heading was essential for me. Planning helped me to work from big to small. Focusing on large-scale elements first, and avoiding spending time on details too early, helped ensure that the overall structure, composition, and readability of the scene were solid before refining smaller, less important elements.
Using a strong blockout, a defined color palette, solid references, and a well-established story helped keep the project on track and prevented it from falling apart during production. This project also taught me the importance of patience. Taking screenshots throughout the process, not just to share later, but to reflect on my own progress.
It helped me to realize how much work had actually been done over time, even during moments when I felt that little or no progress was being made. The result isn't perfect, and there are still aspects that I find frustrating or would like to improve. However, each project is a step forward, and knowing that these lessons will lead to better decisions on the next one is an essential part of the learning process.
Recommended tutorials and resources :
- Organic World Building - Anthony Vaccaro (CGMA): An outstanding course focused on organic environment creation and world building. I was mentored by Anthony Vaccaro during this 10-week course. Unfortunately, it is no longer available, as the CGMA platform has since shut down.
- Foliage Course - Jared Sobotta (CGMA): An excellent course dedicated to foliage creation, covering both artistic and technical aspects. This course is also no longer available on CGMA, but Jared Sobotta has recently moved to Vessel Forge, which is worth checking out.
- Rock Creation in Substance 3D Designer - Casper Wermuth: A great tutorial focused on procedural rock creation in Substance 3D Designer.
- Niagara Basics - Flying Leaves - Aziel Arts: A solid introduction to Niagara particles in Unreal Engine through the creation of a flying leaves effect.
- This very nice 80 Level Breakdown by Louis Sullivan.
A massive thanks to Anthony Vaccaro. His guidance was incredibly valuable, and he helped me build solid foundations on top of what I had previously learned from other great mentors throughout my studies. Many thanks to 80 Level for the opportunity to share this work. I hope some of the breakdowns were helpful!