How to Design a Medieval European Environment Using Unreal Engine and Substance 3D
Brian Pentz talked about the Medieval Scene, sharing the pipeline he used to model the buildings, how he created the vegetation, how he used Substance 3D for the textures, and explaining some tricks to save time.
Introduction
Hello! My name is Brian Pentz, and I'm an Environment Artist based in France. My path into the industry was a bit unconventional. I started learning 3D eight years ago while I was completing a degree in Archaeology. While my family encouraged me to finish my studies, my passion shifted toward digital worlds. The moment I graduated in 2020, I jumped straight into the industry as an Environment Artist at a game studio in Paris.
The Evolution: Scale & Laya Design
I've always been driven by the idea of building things efficiently and sharing that knowledge. While working at my first studio, I spent my evenings teaching 3D to two close friends. Eventually, we joined forces to create Scale, a collective focused on high-end environments for various marketplaces and freelance clients.
After three years of successful collaboration and roughly 70 environments later, my partners transitioned into 3D printing. I continued the journey solo, founding Laya Design about a year ago. In the past year, I've pushed my limits by creating one environment per week.
Refining the Craft
My skillset is the result of thousands of hours spent in Blender, Substance 3D Painter, Substance 3D Designer, and Unreal Engine. Creating such a high volume of work taught me lessons that I learnt through repetition:
- Visual Priority: Knowing exactly where to place detail to catch the eye.
- Iterative Design: How to build, break, and rebuild levels rapidly to find the best composition.
- Technical knowledge: I gained so much knowledge in modeling, sculpting, texturing, world building, and lighting by creating many unique environments.
Impact & Contributions
What I find most fulfilling is the versatility of my work. My assets have been integrated into a massive variety of projects:
- Games: Notable titles like Ark, Chained Together, and numerous indie projects.
- Media: Virtual production, educational tools for schools, promotional videos, and animation projects like Silly Crocodile.
- Community: My free Star Wars environments for Unreal Engine have been used by modders and indie devs worldwide.
Seeing my work serve as the foundation for hundreds of different stories, from Ukrainian gym green screen to Filipino indie games, is what keeps me inspired. It was used in such a variety of projects and different types of content that many people could experience my work. It truly makes me happy.
Inspiration & Concept
This project was born from a desire to create a peaceful, medieval European setting. I wanted to move away from the "dark" fantasy and instead focus on a vibrant, overgrown village. While I wanted to create something peaceful, it was very relaxing to work on this environment.
My initial inspiration came from Pinterest, where I could discover images of abandoned medieval structures being reclaimed by nature. I envisioned a quiet village where flowers and lush, vibrant grass took center stage. What made this project unique was my environment at the time. I was actually staying in Germany when I began, which allowed me to be directly inspired by the old architecture.
Seeing the proportions and timber-framing of real historical houses in person was helpful. I merged these "real-life" observations with my PureRef board to create a hybrid style that felt grounded but slightly stylized with the colors.
Technical Ambitions
Technically, I wanted to challenge my usual workflow. While tiling textures are typically the standard for efficiency in modular environments, I decided to take a different path for this piece by baking unique modules. Instead of relying on tileables, I textured each module individually within Substance 3D Painter and later integrated detailed Textures and Normal maps in Unreal Engine to ensure the quality held up during close-up shots.
This approach opened the door for unique detailing, allowing me to manually add specific wear, moss growth, and "story" details to each module in a way that feels organic.
Composition & Layout
The composition was very clear in my mind: a central house enveloped by foliage, framed by distant mountains, with a foreground of very green grass. Something that would inspire summer. However, my goal is never limited to just a "hero shot." I aim to create complete environments.
Because I've built so many scenes, I am used to the scale and proportions I need to create. Instead of a traditional blockout in Unreal Engine, I built a complete house structure directly in Blender that satisfies my eye. Once the proportions feel right, I "deconstruct" that base mesh into a modular kit.
Modular Workflow & Modeling
Once the base proportions were locked, I divided the mesh into a functional kit:
- Walls & Entrances: Standardized widths for easy snapping.
- Windows & Edges: Specialized modules to break up repetition.
- Roofing: A mix of large slopes and detailed parts like dormer windows.
Everything is modeled with a low-poly/high-poly bake workflow in mind. By detailing the modules individually after the house was already "proven" in the blockout phase, I ensured that every piece would fit perfectly when reassembled in Unreal Engine.
Procedural Vegetation
Regarding the creation of the vegetation, I used Substance 3D Designer. I created the flower textures using a custom graph, which allowed me to iterate on the colors and shapes procedurally. The most efficient part of this workflow is the live feedback loop: I export the textures from Substance 3D Designer and apply them to my models in Blender immediately. This non-destructive approach allows me to tweak the texture and see the final result on the 3D asset in real-time without constantly jumping between software.
Time-Saving Tricks & Modifiers
When you're releasing an environment every week, you have to work efficiently. My top tricks to save time for this project were varied and focused on maximum efficiency across the entire pipeline. For the creation of the roof, I used the Array Modifier in Blender to quickly generate tiles.
To avoid a repetitive look, I separated them and used a modifier to apply a random rotation to each tile, giving it that hand-placed, rustic feel instantly. Regarding the Smart Materials in Substance 3D Painter, creating them from the first mesh I textured made the texturing of all the others pretty quick and easy to do while keeping unique details.
Furthermore, skipping the UE5 Blockout by trusting my Blender measurements and modular logic saved me hours of back-and-forth between Blender and the engine. Instead, I simply did a house block in Blender that I then divided into detailed modules. Finally, I relied on Procedural Foliage by mixing procedural systems with manual placement, which allowed me to save a lot of time and tweak parameters easily until I was satisfied.
In my workflow, retopology is not an issue because I model in a low-poly way from the very first vertex. Since I operate on a strict one-week-per-environment schedule, I don't have the luxury of a traditional "high-to-low" bake cycle that involves heavy manual retopo.
The Substance 3D Texturing
For this project, I stepped away from my usual workflow of relying on tiling textures and RGB masks for maximum efficiency. Since I wanted this medieval scene to have a more "artisan" feel, I chose to add details manually to the meshes within Substance 3D Painter, giving each module its own unique story. I strongly believe in using the right tool for the right purpose. While I still use traditional sculpting for organic assets like rocks or statues, I leaned into the "Painter advantage" for these architectural modules.
By utilizing Anchor Points and Height maps, I can feed custom height details directly back into the generator stack to create Curvature and Ambient Occlusion data. This provides the same rich visual information as a baked high-poly model, but with significantly more flexibility throughout the look-dev process
Unreal Engine Integration: The Detail Normal
To ensure the unique textures didn't lose their crispness when the player gets close, I mixed these unique bakes with a Detail Normal map in Unreal Engine. This allows me to have the "big picture" storytelling (moss, leaks, specific wood wear) from Substance 3D Painter, while maintaining close surface detail via the detail normal.
Streamlined UVs in Blender
My unwrapping process in Blender is built entirely around speed and optimization. I utilize a hybrid approach, primarily relying on automated tools like "Smart UV Project" to handle about 90% of the workload. From there, I manually tweak and arrange the UV islands to maximize the available space and prioritize texel density on key areas.
This workflow is supported by a custom pipeline of Blender shortcuts I've refined over the years to make this phase as fast as possible. This streamlined approach to UVs and texturing allows me to move through the technical stages of production with ease. It is exactly this kind of efficiency that enables me to maintain my challenge and my pace of one environment per week without compromising on the quality of the final result.
The Smart Material Ecosystem
My texturing process for the props and architecture lives entirely within Substance 3D Painter for this specific environment. I start by perfecting a module where I develop the core look for the wood, stone, and plaster. Once I'm happy with these, I convert them into Smart Materials. This ensures that every house, prop, and beam in the environment shares the same visual look. I then apply these smart materials to all the modules and edit them where needed.
Selective Layering & Unique Details
The advantage of the Smart Material approach is its flexibility. In my layers, I use tiling masks driven by Ambient Occlusion and Curvature data to automatically place moss, edge wear, and dust in the crevices.
As you can see in the image above, I can simply toggle specific layers on or off depending on what the mesh requires. If a module only consists of wood and roofing, I hide the wall and window layers within the Smart Material. This allows me to texture a complex asset in minutes while still manually tweaking the opacity of specific masks to add that "unique" touch that keeps it from looking procedural.
Texture Packing & UE5 Integration
For the final export, I keep things lean for performance. I pack Ambient Occlusion, Roughness, and Metallic into the R, G, and B channels of a single texture ( called an AORM map). In Unreal Engine, my workflow is almost instantaneous because I rely on a library of pre-built Master Materials. From these, I create Material Instances for each texture ID, allowing for a highly efficient setup.
I simply drop my textures into the designated slots and use parameters to fine-tune the color and details directly in the engine, which gives me total control over the final look without any back-and-forth. This is possible because I've developed a versatile Master Material featuring numerous parameters that control the AO, Color, Roughness, Metallic, and Masks, as well as a Detail Normal to maintain Sharpness at close range.
The "All-at-Once" Import Strategy
A major part of my efficiency is my "Batch Import" workflow. Instead of importing a house, then going back to Blender to make grass, then back to the engine, I prepare the entire ecosystem (modules, foliage, flowers) and import everything at once. By skipping the blockout phase in Unreal Engine and trusting my Blender measurements, I can jump straight into world-building. Having all my assets ready instantly ensures I never lose my direction while building the scene.
Composition & Layout
The final scene was built by hand, piece by piece. I began by placing the "Hero House" slightly above the camera's eye level to give it a sense of importance and scale. Simultaneously, I blocked out the distant mountains to establish the horizon and depth.
Because my modular kit was pre-calculated in Blender, the assembly process in Unreal Engine was extremely fast. This efficiency allowed me to start tweaking the lighting early on, ensuring that the desired "peaceful" mood was driving every placement decision I made. Once the core structure was set, I expanded the surroundings of the main house by adding other buildings and a river to create a more immersive and natural environment.
A Dual Approach to Foliage
Foliage is the soul of this environment. To achieve the overgrown, lush look, I used two distinct methods:
- Manual Painting (The House): For the foliage climbing on the roof, I used the traditional Foliage Tool. This allowed me to "art-direct" the overgrowth, ensuring it complemented the architecture without obscuring the best details.
- Procedural Scattering (The Landscape): For the surrounding meadows, I utilized Procedural Foliage Tools integrated into my landscape material.
By linking a Procedural Foliage Type to specific landscape layers, the grass and flowers spawn automatically wherever I paint that layer. This is incredibly efficient. I can change the density, scale, or rotation of thousands of assets in real-time just by tweaking a few parameters.
Landscape & World-Building
Once the main composition was locked, I expanded the world to make it feel like a place a player could truly explore.
- Mountains: I created custom mountains in Blender using heightmaps and imported them as static meshes.
- Dynamic Shading: I built a specific Master Material for the background mountains. It uses a slope and height detection logic to automatically place snow on the peaks and rock or grass on the steeper/lower angles.
- Decoration: Finally, I scattered smaller props: crates, barrels, and tools to make the environment more lively.
This workflow allowed me to move from a blank Unreal Engine project to a fully realized, multi-area environment in just a few days, keeping the focus on the "peaceful village" atmosphere I set out to capture.
The Atmosphere of a Sunny Afternoon
For this project, I wanted to capture the feeling of a warm, relaxing, sunny afternoon. My foundation was relatively standard: I used the default Sky Light, Directional light, Atmosphere, and Exponential Height Fog. However, I was looking for a peaceful mood by manipulating those light sources to avoid a flat, uniform look.
To enhance the visual depth, I added an HDRI for the background specifically to get those nice, clear clouds. While the HDRI provides the backdrop, the lighting is made with the tools just mentioned and the post-process.
Dynamic Light Functions
One of the most effective ways to break up the uniformity of sunlight is through Light Functions. I created a custom material function with a panning noise texture and applied it to my Directional Light. This simulates the effect of clouds passing overhead, creating natural shadows across the landscape and the house. It adds a layer of realism that makes the world feel alive.
As you can see in the image above, moving from the default directional light to adding the light function and finally the bloom creates a massive shift in the mood.
Post-Processing: The "Soft" Look
I moved away from standard Bloom in favor of Convolution Bloom using custom textures. This helps soften the highlights and gives the image a more natural soft glow, according to me.
"Pumping" the Colors: Grading & Exposure
To get the colors to really "pop" and feel vibrant, I did a deep pass on the Color Grading and Local Exposure settings:
- Global and Midtones: I manually tweaked the Contrast and Saturation globally, but focused specifically on the Midtones. This allowed me to "pump" the lush greens of the grass and the vibrant colors of the flowers without blowing out the highlights or crushing the shadows.
- Local Exposure: This was an important parameter. By modifying the default values (as shown in the image below), I prevented the sunlight from washing out the details. I lowered the Highlight Contrast Scale to 0.4 and adjusted the Shadow Contrast Scale to 0.68 to pull detail out of the porch shadows. It amplifies the global illumination effect.
Final Life & Movement
To finalize the render, I added some details to animate the environment. I included falling leaf particles, a custom wind effect in my foliage shaders, and moving water. These subtle movements, combined with the panning light function, ensure that the scene feels lively.
Conclusion
This piece took exactly one week to complete. Since April of last year, I've challenged myself to produce one full environment every week, and I've completed 36 environments to date.
The primary challenge of this specific project was maintaining a high level of detail when the camera is close to the mesh. Because I chose to use unique textures for each module rather than tiling materials, I had to be very careful with texel density and play with the shaders to have a nice result from up close.
Looking forward, I am planning to launch a Humble Bundle that will include all the environments I have created this year. It's a great way to bring all these different worlds together in one collection for the community. If I could give any advice to those just starting their journey in 3D art, it would be this:
- Follow Your Passion: Create what makes you happy. I've progressed the most when I was working on subjects that I was genuinely passionate about.
- Escape "Tutorial Hell": Don't get stuck watching videos forever. Watch a tutorial to learn a specific technique, and then immediately apply it to something you are creating. Active creation is the only way to truly "lock in" new skills.
- Quantity Leads to Quality: Never stop creating. By producing a high volume of work, you'll find that new ideas pop into your mind more frequently, and you will sharpen your skills.
- Don't Fear the Complexity: Even if a project seems incredibly hard or long, just try. You learn more from a "failed" complex project than from a simple one you've done a hundred times. Challenge yourself, stay consistent, and keep building.
Brian Pentz, Environment Artist
Interview conducted by Emma Collins
Don't forget to subscribe to our Newsletter, join our 80 Level Talent platform, follow us on Twitter, LinkedIn, Telegram, and Instagram, where we share breakdowns, the latest news, awesome artworks, and more.
Are you a fan of what we do here at 80 Level? Then make sure to set us as a Preferred Source on Google to see more of our content in your feed.