Anouk Debruyne did an overview of the methods she uses to create beautiful stylized environments and some tools that help to light this fairy tale spaces.
Hey there, 80lv! My name is Anouk Debruyne and I’m a 20-year-old student from a small village near Belgium. As a matter of fact, I’m actually from an area that has more cows than people! If my memory serves me right, there was never been much to do there so I grew up playing video games and drawing things to entertain myself.
After I finished high school, I decided to pursue creative work for the rest of my life. I did some research about art colleges in Belgium and finally came across Digital Arts and Entertainment at Howest University in Kortrijk. There I discovered my passion for environment art, especially hand-painted environments, that combines my love for drawing with 3D art.
I don’t have experience working for a game company yet because I’m still completing my studies. However, I have worked on a few group projects at the university; the latest of which was a game based off the concept work of first grade students who drew some monsters and weapons. Honestly, it was quite a challenge correctly inputting these drawings into the game!
Most of the other projects I’ve worked on have involved my university, but I also participated in the Rising Star contest this year and am currently working on some personal projects in my spare time. Depending on the project, I usually have a teacher as a mentor, but I also have a fixed group of people I ask for feedback. Most importantly, I’ll ask Nicolas Pirot, my partner in crime, for help too.
My lake house scene was actually made as an exam for one of my courses at DAE. For this specific exam, we had the option to create a realistic or stylized scene. And of course, I chose a stylized scene!
I had made some stylized and hand-painted pieces before, but I never developed an entire stylized scene, in addition to never using Unreal Engine. Thus, this seemed like a great opportunity to learn a lot and improve my skills at making full, stylized environments. After gathering some inspiration, I decided that I wanted to create a comfy scene of a house on a lake. I started by creating a mood board to find some inspiration for the assets and really figure out the right atmosphere for the scene.
After this I created a blockout of the environment. I determined the position of the house and the lake relative to each other and then created a terrace next to the house, which acts as the cozy center of the scene with two chairs and a fire.
My first idea was to place a camera between the chairs and allow it to look around in a 360° manner. I added the outhouse to ensure there was always something interesting on the screen. At this phase of the production, I also created the ground and wood textures for additional practice. I also created a wooden plank to nail the workflow. The blockout changed a few times but after getting feedback I achieved my desired look.
Afterward, I listed out main objects and vegetation I wanted for the final scene. I started by making these and kept extending the scene with more detailed objects later on. Overall, I had to iterate on many objects to get the look I wanted and ensure that, most importantly, everything fit together.
I start most of my assets by making a rough base in 3ds Max. Then, I take this to ZBrush and sculpt all the details on it until I’m satisfied—I especially love working with Orb’s brushes. Next, I export this detailed version as my highpoly. After that, I retop the highpoly sculpt using ZRemesher in ZBrush, or I do it manually with 3ds Max, depending on the practicality of the object I’m working on. If the object is quite simple, I unwrap the lowpoly using 3ds Max; but, if the object is more organic and complex, I use 3D-Coat. With most hard surface assets I model entirely in 3ds Max without using ZBrush.
I always try to make my stylized models as simple as possible. Clear silhouettes are very important because the viewer should be able to understand an object at a first glance. It’s very possible (and common!) to add too many details, which creates unnecessary noise. You have to find a balance between enough high-quality details and a simple presentation to create a clear silhouette. For stylized models, especially if they’re focal points within a scene, I like to exaggerate proportions. The house I made in this scene and in my Day and Night Cycle scene are quite good examples of this in action.
At first I had more realistic proportions for the house but I didn’t like the way it looked. Hence, I made the house taller and more crooked, which immediately fashioned a more stylized appearance. For smaller objects I often like to keep the proportions realistic. I think the combination between a few key exaggerated objects and smaller, realistic objects works well within my scenes. At the end of the day, so long as they fit together and have similar textures, it should work well!
I grew up watching flicks like A Nightmare Before Christmas and other Tim Burton movies. Even though I didn’t actually use it as reference for this scene, I did find some inspiration from the movie in my environment, especially in the curly pine trees and the matching curly grass. The tree model is very simple actually: I created a basic pine tree model to use in the blockout, which had no textures yet. After I was done with the blockout, I decided to experiment a bit with different shapes and styles in the textures. Soon enough, I came up with the curly tree and I loved it! Thus, I detailed it a bit more and added it to the scene. This was the first piece of vegetation I finished, and I used it as the base for all the other vegetation within the scene. The grass was the second piece of vegetation I made and you can clearly see I tried to match it with the trees!
All the diffuse textures in this scene were done in Photoshop. It’s more intuitive for me to create the hand-painted textures in Photoshop as I’m used to drawing on paper or other flat surfaces. I’ve used Substance Painter on this project to bake the normal maps and ambient occlusion for all the objects. I also used Substance Painter on other objects to cover up the seams that inevitably appear when exclusively utilizing Photoshop. More recently, however, I’ve done some experiments with stylized PBR in Substance Painter.
I’m beginning to like Substance Painter for texturing more and more because it’s advantageous to paint directly on an actual object—I immediately see the effect of my brushstrokes! The water in the lake was done with Substance Designer, which was my first attempt at using the program to create something stylized. While I prefer to hand paint textures like wood, I’ll definitely consider Substance Designer for future projects as it’s a very powerful software for creating PBR materials.
My texturing workflow on this project largely looked like this. First, I baked the normal map and the ambient occlusion in Substance Painter. Then, I used the ambient occlusion in combination with a base color to start painting, and I kept adding details until I was happy with my result. After that, I took the texture and asset into Substance Painter to check if everything looked okay on the object. If necessary, I covered up some seams or adjusted some things. Often, I work with seamless textures or trim textures that I can use on several assets—the fewer textures I need to create for a scene the better!
I wanted to create a sunset/night scene, which is quite difficult to get right. Finding the right lighting balance was challenging as I wanted the scene to contain enough light for users to see everything clearly but not too much as it appeared dark as well.
At first I wanted to use the existing skysphere in UE4 to have a dark, orangish sky—however, I didn’t manage to get that dark, orangish sky as it always appeared too light. Thus, I decided to trash that skysphere and draw my own using Photoshop.
At that moment the directional light was way too bright, making it impossible to see the scene from certain angles. Hence I dimmed the directional light/sun and skylight until they had almost no influence on the scene. Remember, I wanted to create a cozy and warm environment, so it made sense to incorporate warm elements like candles, lanterns and a campfire, in addition to some overall warm lighting. To give the illusion that the lanterns are lit I used emissive materials in combination with well-placed point lights because as an emissive material alone doesn’t affect the environment around an object. The lanterns in the air were all placed on cables that are standard in UE4.14. To get them to move together with the cables, I had to attach both the lanterns and the point lights to the cables in blueprint. Every tick of their position is calculated so if the cables move then the lanterns and point lights move with them.
Other lighting in the scene came from the windows of the house. The windows are, just like the lanterns, lit by an emissive material. To make the light affect the environment, I had to place spotlights around, several of which aim toward the windows, glow on adjacent wood and cast light on surrounding objects.
The campfire in the middle exudes a nice glow on its surroundings. I used dynamic lighting in this scene to ensure that when the suspended lanterns in the scene move that the light moves with them.
Long story short, the most important part of correcting my lighting was to let go of the directional light as the main light source and to use smaller, artificial lights to light the scene—just like you’d do in real life when you want to light your own garden at night! Compare the two images above to see how these decisions affected my scene.
The smoke and fire were based on particles found in the starter content of Unreal Engine 4. I changed some of the settings, and I redrew the flipbook of the fire and the smoke coming out of the cups. Next, I made them a bit curlier to better fit the style of the scene. Other than that, I didn’t change much! At the end of the day, I used these premade particles as I had a limited amount of time to finish the project. Adding some self-made firefly particles as a small touch imbued the atmosphere with a cozy feeling.
It took me about two weeks to build my Lake House scene, even while busily working on other projects. The blockout and lighting were the most challenging aspects of the scene—it took me quite a while to figure out where I was going to place everything. I tried several different variations and showed the different versions I liked most to trusted people in my life. I asked them for feedback and changed the scene around until I got my current composition. Figuring out the style early made the process after that quite smooth. I later ran into a few technical difficulties with the suspended lanterns but nothing major!
The lighting of the scene, however, was a long process. I made many different variations of it until I got the final version. Initially, I wanted to keep the sun/directional light as the main light source for my scene because it aligned with my original idea of a sunset. Yet, it was only after I decided to make the scene occur early in the night that discovered I could light the scene as it currently is with lanterns and the fire.
The Day and Night Cycle
This scene was part of my graduation work. One of my major goals with this project was to create a hand-painted and dynamic scene with a day and night cycle. I wanted the scene to change drastically depending on the time of day along with the different elements that exists across a 24-hour period. Unreal Engine was the best choice to use as my blueprint system because it gave me the opportunity to make quite technical elements without a strong background in coding.
First off, I had to focus on the actual day and night cycle. To begin, I extracted the existing skysphere from Unreal Engine and changed it to make the sky more accurate. I soon decided to remove the clouds as they didn’t fit my stylized scene. For the rotation of the sun, I used the level blueprint to build a type of motor that makes it rotate every tick, which I then connected to a slider. By changing the slider, the speed of the sun and the duration of the ensuing day either quicken or slow down.
After that I made two types of clouds. One is an actual mesh with a material that uses displacement, changing depending on the position of the clouds. I created this type of cloud using a noise node that I plugged into both the base color and displacement. This asset creates nice, rolling clouds within the scene. I used Fresnel in the opacity to make these clouds more translucent at the edges and more opaque near their center, which produces a beautiful effect when the sun slowly disappears behind them!
The other type of cloud I have is actually flat. These clouds are a translucent, dynamic material I placed on the second dome inside my skysphere. They too are linked to a slider in the UI, meaning I can easily change the amount of clouds in the background. I used light functions, a type of material that filters light intensity, to get shadows from these flat clouds. This is one way to have a light cast shadows without there being an actual object.
I made the light function material using the exact same textures as the clouds. This makes the shadows of the clouds and the actual clouds fit together really well. I then linked my clouds and the stars from my skysphere to the speed of the day. The speed of the clouds and the rotation of the stars depend on how quickly time transpires while the amount of shadows from the clouds is relative to the actual amount of clouds present within the scene.
Moving forward, I was able to concentrate on the actual environment. I built this environment in a similar fashion as the Lake House. When I had a blockout and some vegetation, I decided to look into some things I could change in the environment once it became night.
The first thing I tried changing was the color of the grass to a darker brown at night. To do this, I first investigated dynamic material instances. These have to be created during runtime and then must be assigned to the object. I created them by making three versions of the texture sets I wanted: one for the day, one for the night without the full moon and one for the night with the full moon. I blended between these textures using Lerps and a mask, which indicated what parts had to be blended first by making those lighter. I connected the material to my day and night cycle by using timelines that started when it became day or night. I made the timeline count from 0 to 1 or the other way around and used that value to blend between the different textures.
I realized that this was a great way to change actual objects during runtime, but not the grass. The grass was placed as foliage in my scene and was not an actual, selectable object; hence, I couldn’t assign the material to it. But, I did solve this problem!
I kept the material I had for my grass, but instead of making it a dynamic material instance I created a material parameter collection. Here I could store parameters that could be changed during runtime. So I used my existing day and night timelines to change the value of those parameters and used these in the grass material. This made it work the same as dynamic material instances without having to use them.
Using dynamic materials I could change many things in my scene, but some objects had to be changed using level sequences instead as I wanted to change their location and rotation. This would have been possible using timelines but level sequences made it easier because they allowed me to place keyframes on timelines every time I moved or changed something. Other than that, I changed the look of the scene by using dynamic post processing. I wanted a blue look during the nights and a warmer, more welcoming look during the day. The lights also changed during runtime. Using blueprints, I made them turn on, flicker or fade out. To add a bit more atmosphere to the scene I also added some particles: flying butterflies during the day, fireflies during the nights and smoke coming from the chimney during ordinary nights.