03 March 2021

Church Wall Trim – Substance Material Creation – Max Kutsenko



Hi guys, my name is Max Kutsenko and I am a freelance material artist, I am currently teaching Substance Designer and Painter classes at my local CEV Barcelona art school.

I am especially passionate about procedural material creation and spend a lot of time with the nodes in Designer. I would like to show you how I created a Church trim sheet material, hopefully, you will discover something new with this article.


I remember the first idea to create this material came when I was out with my family, having a meal outside, in what we call in Spain “Plaza” (square open space). I saw there was a beautiful church nearby with lots of intricate ornamental details, especially in the archway at the entrance. When I see something I like visually, I always take a few pictures with my phone, just in case I want to recreate a pattern in Substance Designer later on or just use it as a reference.

Later on at home, after analyzing the images, I thought it will be good to make a trim sheet out of it, so these beautiful ornamental details can be reused and applied to other parts of the building. By creating this mat, I could also practice using an SVG node in Designer to draw lines and create those curvy floral shapes. So when the opportunity came to create a trim sheet for www.textures.com I proposed this specific version right away and we went ahead with it.



When I started my work in Substance Designer, the first thing I did was to create a few simple white strips with a “shape node”. They were either 0.05, 0.1 or 0.2 units high and were used as masks to arrange my ornamental details into the final sheet. I was using a “transformation 2D” node to move those strips around and add them together with “Add” blend mode until I was happy with my final arrangement.


Here is “work in progress” shot from my early iteration. It is a trim sheet with simple forms to help me visualize how it would look like before I start working on more complex details. All I am doing at this stage is adding and subtracting simple shapes at different opacity levels.


Once I was happy with the distribution of shapes, I started working on the ornamental details, I selected 7 patterns from my ref picture that I found interesting to include. For this material, I kept everything in one graph as quite often the floral shapes depended on each other and it was quicker to move the elements around.


All 7 ornaments follow the same workflow, I first build a single shape and then arrange it in a line with a “tile generator”. Once I have my shape lines, I combine them together using the previously mentioned masks. I will show you a couple of examples on how it is done. Example 1. Here I am manipulating a “ridged bell shape” with “levels” and “transformation 2D” nodes.

Then I am using a “Swirl” node to bend the shape slightly. I highly recommend experimenting with a “Swirl” node as you can achieve incredible results by twisting your shapes, give it a try. After, I arrange the shapes into a flower looking shape


The reason my middle petal is grey, is because if they were all white I would not be able to use an “edge detect” node to isolate the individual petal borders. I did this to “blur” and “bevel” the outer petal shapes to give them a sense of depth. Next, I use a “blend” node cropping option to cut off the unwanted part.


I then use a “mirror” node which is fantastic for speeding up your process and replicating the same object on the opposite side and finally add a “paraboloid” shape in the middle to complete the flower.


Then I move on to add another semi-circular shape that will go around our flower. Here is the process. I “level” a blurred version of the “star” shape to get rid of the sharp ends and plug it into a “polar to cartesian” node which converts my star into a straight line with uniform hills and this is exactly what I need for my shape.

To be honest, I think it was just a happy accident, that is why it is always important to experiment with various nodes as you can come up with some mind-blowing shapes just by being curious.

After that, it is just a series of “transformation 2D” manipulations to stretch the shape, so it appears more round, cropping and a “curve” node to create an inner bevel of the shape. I then position it in the center and multiply it with the “tile generator” again. Finally, I combine these shapes with a “blend” in add mode.


Example 2.

Here is another example, this time I am using an SVG node to draw an initial shape. The great thing about this node is that it allows you to draw a complex shape fairly quickly, if I was to build the same floral shape procedurally by adding and subtracting shapes, it would have taken me much longer to do so.

Of course, the drawback of an SVG is that once the shape is drawn, you cannot procedurally change it anymore, but I was ok with my ornaments being static, so opted for this faster method.

Another cool thing about SVG is that you can upload your ref pic in the background (better in a square format to avoid stretching), and just draw bezier curves along the outline of your shape with a pen tool, as if you were using the Splines method in Autodesk software, I am basically making adjacent points and then close the shape by reconnecting the first and the last dot.


As before, I am using 2 SVG nodes to make some curvy leaves white and another grey, this again will allow me to use an “edge detect” and “bevel” node later on, like in the previous example I follow up with some gradients blending and transformations to compile the final shape. The exact same process applies to other ornamental shapes. Finally, I blend all my shapes together with the previously made masks and I have my final height.


To add age and realism to this wall I made some surface imperfections like poke marks, scratches and edge damage. When it comes to rocky surfaces I quite often rely on a “slope blur” node in conjunction with a variety of noises like “clouds”, “fractal sum base”, “moisture”, “dirt” as it produces believable damage results. Here you can see in the normal map what kind of effect it produces.



When it comes to my base color I always try to create a nice variation of color washes. If you closely analyze scanned albedo data of a rock or a stone, you will realize how much variety of different color tonalities is there, so to make your texture realistic, you need to replicate the same feeling. In this case, I used “multidirectional” and “directional” nodes and plugged 2 types of grunge’s which then distort based on my height data, which in turn allows the noise to conform to my shapes and that produces a more natural-looking aesthetic. I learned this neat trick from one of Joshua Lynch’s tutorials.


Once I have those masks, I plug them into a “gradient map” node and sample some colors from a photo which is a pretty common technique. That will quickly give me a color variation I am after. The important thing to note: I am not sampling it from my reference photo as it contains some lighting information that changes the color value, I am sampling from a scanned albedo map that has been “delighted” before, you can find these maps on sources like www.textures.com or Substance Source library.

So with this technique, I keep adding various layers of colors and gradient map data on top of each other. I also have several layers of dust or dirt which help sell the aged look. You can use a “dust” or “dirt” node to achieve impressive results, or by using an “Ambient occlusion” node as well.



For Roughness, a nice little trick is to use a node “grayscale conversion” to convert your albedo to a grayscale image that you can use as a basis for your roughness map, what is great about it, is that since you sampled your albedo from a scanned data and made a few stacks of color variation, your roughness will be super-rich in information, which will make light behave distinctly when it runs along your surface.

And if you feel it is too much, you can always dial it down with a “level” node. I used it as my foundation and then built it on top of a variety of dust and dirt layers from my masks.


Once I finished this trim sheet I wanted to make a nice-looking render and also show how this material can actually be used.


I jumped to 3DS Max and made a simple mesh of an archway, with some semi-cylindrical forms running around it, something similar to my reference pic.


The next step is to convert those arches into straight-line UV chunks, this way we will be able to map them to our trim sheet. To achieve this, I applied an “Unwrap UVW” modifier to my mesh. I like to use the “point to point seams” option to select the edges that I want to be cut up, where you see the green lines 3DS Max separates them for me.


Then I select a separate arch UV chunk and press the “Pelt Map” option, “Start Pelt”, “Start Relax” and “Commit”, as the name implies this option basically stretches and relaxes my UV chunk, then I finish it off with “Straighten Selection” option, which is working really well, especially in the latest version of 3DS Max to turn my UV into a straight line without any major distortions. I repeat the same process for all my archway remaining UV chunks


Once they are all straightened, I proceed to load up my trim sheet texture(usually height map) into UV space by selecting an option “pick texture” and then “bitmap”. I also assign my trim heightmap to a material and apply it to the archway, this operation allows me to see what I’m doing in both 3D and 2D space. After that, a process of UV chunks arrangement starts, always looking at my reference picture.

I am scaling, rotating and positioning my UVs making sure the borders of my UV chunks match with the borders of the trim texture so I don’t have any strange artifacts. This process of moving and scaling continues until I reach a desirable result.There is no need for me to create another UV channel for lightmap baking since I will be using dynamic lighting. Now my mesh is ready to be exported to Marmoset Toolbag for a final render.



I import all the trim textures into a renderer and look for possible misalignments around the edges, then it just a bit of back and forth between Max and Marmoset to ensure everything is aligned. Once I am satisfied with the final results and make a few beauty shots, to show how this trim could look in an environment. And that is pretty much the whole process.


I hope this has been helpful. Just to sum up my points quickly: always take some photos of the surfaces you find visually appealing as it can be used either as an inspiration to make similar material or as a study to push the realism of your work. And do not be afraid to experiment a lot with the new nodes or tools in general to discover fresh workflows that will push your materials further. If you want to study my trim material in more detail you can find it on https://www.textures.com/browse/pbr-materials/114558

Thanks a lot for this opportunity to share and keep creating, guys!

Software used

Substance Designer for texturing
3DS Max for modeling
Marmoset Toolbag for rendering
Photoshop for post-processing