For my final project, I have been thinking a lot about the style I would like to adapt, as I like both stylized and realistic environments. I finally decided on an evironment inspired by the game No Rest fro the Wicked, which has a very specific painterly look, inspired a lot by the traditional baroque art by artists such as Caravaggio, characterized by their strong light and shadow contrast. These are some of the main concepts that I would like to follow. Obviously, the overall shape of the building will be different as I will try to adapt the style of the game as close as possible, but these will serve great for some composition ideas.
I have started with blocking out my scene in Unreal Engine. I want to focus on setting up a strong composition from the begining so I set up a camera in Unreal and locked its position so I will have a nice progression shot at the end. I am not working directly from the concept art as I need to adjust shape language and art direction to match the style of No Rest for the Wicked. I will keep on blocking out on my sceen to make sure there is a clear difference between foreground, midlleground and background in my final shot.
I have been working on my roof, and I am considering two approaches to achieve results similar to No Rest for the Wicked. Since the game uses a top-down view, their roof tiles are quite flat because they don’t require much depth. However, this wouldn’t work in my environment, as I want it to work well from multiple angles. My first approach is to create several different modular roof assets and kitbash them together in Unreal. To speed up the modeling process, I created a simple Geometry Nodes setup in Blender that generates roof assets by instancing tiles onto a simple plane. Using curve and deform modifiers, I can also quickly adjust and experiment with different roof shapes.
My low-poly roof tiles are made from a high-poly version that I dynameshed in ZBrush. I merged all the tiles together, smoothed the gaps, and then decimated the mesh. This is the same approach used by Michael Khinevich, who created an environment in a similar style and wrote a whole 80 Level article about it.
The downside of this approach is that there are currently visible seams on the roof where you can see the individual assets. However, I think I can fix this through better asset placement and by making the roof pieces snap together more effectively (which might be a challenge since the roof is supposed to look quite messy), or by covering certain areas with elements such as moss.
My other approach I have been experimenting with is Nanite Tessellation, which is quite time-saving but still has some challenges. I created a tileable texture from my roof asset, which I then quickly baked in Painter and used to create similar textures.
This was just a first test, so my material doesn't have any color variation yet because I was mainly testing the displacement in Unreal. I am using the Easy Mapper plugin, which offers many material adjustments and even supports vertex painting, which might be quite useful in the future.
At the moment, the tessellation doesn’t work well in areas with seams and tends to break along the edges of the mesh. One possible solution would be to model a roof tile piece that I could simply line up at the end, but I’m not sure if that is the right approach.
Yeah UV seams are a common problem with displacement systems. One solution would be to model the low-resolution surface to include a lip, keeping the UVs continuous from the top to the underside of the lip. Then without a UV seam, there should be no displacement cracks.
Replies
Love the mood boards, looking forward to your progression!
My first approach is to create several different modular roof assets and kitbash them together in Unreal. To speed up the modeling process, I created a simple Geometry Nodes setup in Blender that generates roof assets by instancing tiles onto a simple plane. Using curve and deform modifiers, I can also quickly adjust and experiment with different roof shapes.
My low-poly roof tiles are made from a high-poly version that I dynameshed in ZBrush. I merged all the tiles together, smoothed the gaps, and then decimated the mesh. This is the same approach used by Michael Khinevich, who created an environment in a similar style and wrote a whole 80 Level article about it.
The downside of this approach is that there are currently visible seams on the roof where you can see the individual assets. However, I think I can fix this through better asset placement and by making the roof pieces snap together more effectively (which might be a challenge since the roof is supposed to look quite messy), or by covering certain areas with elements such as moss.
https://youtu.be/BtbiQsftEJU (Roof asset test)
My other approach I have been experimenting with is Nanite Tessellation, which is quite time-saving but still has some challenges. I created a tileable texture from my roof asset, which I then quickly baked in Painter and used to create similar textures.
This was just a first test, so my material doesn't have any color variation yet because I was mainly testing the displacement in Unreal. I am using the Easy Mapper plugin, which offers many material adjustments and even supports vertex painting, which might be quite useful in the future.
At the moment, the tessellation doesn’t work well in areas with seams and tends to break along the edges of the mesh. One possible solution would be to model a roof tile piece that I could simply line up at the end, but I’m not sure if that is the right approach.

https://youtu.be/v-MMil0fdN8 (Nanite Tessellation Test)