Creating a Complex Baroque Ceiling in Substance Designer with Jonathan Benainous
Hi Jonathan, thanks for (again) taking the time for an interview! For those who don’t know you yet, could you briefly present yourself?
My pleasure, thanks for having me once again! My name is Jonathan Benainous. I was born in Paris and, for the quick recap, I started working in the video Game industry 12 years ago.
I spent most of my career as a Senior Environment Artist before becoming more specialized in texturing. I was lucky enough to work with very talented people on AAA productions such as Heavy Rain, Beyond Two Souls, Horizon Zero Dawn and Ghost Recon Wildlands.
Today I'm a Texture Artist on Assassin's Creed Odyssey at Ubisoft Quebec, a studio in Canada.
Where did you get your inspiration for the Baroque Ceiling project in Substance Designer?
Well, it all started a bit less than two years ago after a trip to Rome. I was totally blown away by the profusion of details inside the different monuments, and after that, I always wanted to make a project inspired by these amazing Baroque interiors. I gathered a few pictures from the places I’d visited and finally decided to pick the ceiling of the Santa Maria Church in Aracoeli as my main inspiration.
Can you give us some technical details about the project? For example, the number of working hours, or the number of nodes?
It's hard to say as I spent only a little of my spare time on it. There was a lot of exploration as well as experimentation to find ways to create complex shapes that are normally not done in Substance Designer. If I had to redo it from scratch, I would say something like 20 to 30 days.
For the number of nodes, I don’t know exactly, but if I refer to my Dependency Manager, I got hundreds and hundreds of Transform 2D, Mirror, Histogram Scan, Levels and Shape nodes!
It’s definitely the biggest graph I’ve ever created in Substance Designer. At some point, it became difficult to update and work with the graph, especially in 4K, even though I was only halfway done! So I just kept pushing it further until I got a satisfying result.
I must admit that the latest Substance Designer 2018 update saved me, in a way, as I was considering making bitmaps out of my subgraph to lighten the file. But after a little optimization, it really worked out well!
Now let’s get right into the material. Could you give us a breakdown of some of the key steps?
All right, let’s start the breakdown!
Considering that the reference is extremely detailed, I needed to set up a plan before going any further in Substance Designer.
In every PBR material, the work on the creation of the height map is crucial to be able to extract all the necessary information and make a nice texture. Seeing the complexity of our reference, it was more essential than ever to focus and to pay extreme attention to the creation of the height map in this project.
First, I decided to start creating the layout of the structure.
As you can see on the reference, the ceiling is composed of many floors, all framed with cornices and complex molding. It was important to build that structure before tackling other elements, to have a solid base to work on.
I started to make a black and white mask corresponding to my first floor in Substance Designer, by adding and subtracting square shapes.
I then used a bevel node to set the thickness of my cornice around my floor. To adjust the molding I plugged my bevel into a curve node to more easily manipulate the profile of my cornice. This technique really helped me to design and maintain effective control of the whole framing, by only manipulating the points along the curve at my leisure.
I used the same process on the following floors. I added the other boxes, including those with the T shape and the cross shape, to complete the layout. Here it was pretty important to check the tiling in the 2D view to be sure that my square shapes were aligned and the layout well respected.
Here I had to do some back and forth to tweak my bevel nodes to keep consistent space between my floors, and to set the thickness of my cornices properly. To adjust the elevation between each floor, I used a couple of masks combined to flat grayscale colors. I then finalized the whole layout by balancing the height range with a histogram shift node.
Now that the structure was in place, it was time to detail the cornices by adding ornaments.
Using nodes such as Shape, Transform 2D, Bevel, Non-Uniform Blur Grayscale and Mirror Grayscale, I created a few patterns in a separate graph.
I then made them tile using Tile Sampler or Transform 2D, and placed them along my cornices using multiple Blend nodes set to Screen, Add, or Max Lighten according to the pertinent desired effect.
To help me in the positioning of my patterns and avoid some tedious manual masking I used a node called “Light Node”.
Using your normal information, you can generate a mask that simulates the orientation of a virtual spotlight. This is very useful in our specific case to isolate the slopes of our bevels.
I played with the Highlight Glossiness slider and the Highlight Level to adjust the Vertical and Horizontal Angle to get masks.
I then blended them together and used a Transform 2D node to place my patterns within the masked areas.
For the circular molding, I mainly used Paraboloid plugged into Curve nodes, and for bigger ones, I used multiple Splatter Circular nodes layered on top of each other. To finalize my cornices and hide the seams between the horizontal and vertical junction I also created a bunch of corner molding that I placed here and there.
To tackle the wood planks, I started by creating the wood fiber in a separate graph. I used a Perlin Noise Zoom as a base, directional blurred and plugged into a Gradient (Dynamic) node. I plugged a Gradient Linear 1 node into the gradient input of this and set the tiling to 50 to increase the number of ripples.
With a Non-Uniform Blur Grayscale node, I blurred my shape and kept distorting It using Warp, Directional Warp, and Slope Blur Grayscale nodes. I then repeated this process to create three different variations, which I blended and masked together, still using Perlin noise to add variety.
I finally made my planks out of a brick generator. I damaged their borders, added some tilt information with gradients and added my wood fiber on top. After adding the peeling paint, I layered my planks and adjusted their depth for each floor using masks and Histogram Shift nodes.
Now that all the structure was completed, it was time to sculpt our main elements. Note that most of the time, I started with very simple primitive shapes that I embossed with bevel or Non-Uniform Blur Grayscale nodes.
So, for the cherub, I used Shape nodes to create multiple discs that I blended to create the silhouette in black and white.
I then used a Non-Uniform Blur Grayscale node to generate the volume and make the face pop out. Then, still using discs, I subtracted and added shapes to my face, for the eyes, cheeks, lips, nose, ears, and so on. I didn’t do this for the hair, however; these were created with Splatter Circular nodes. The face too was created using only discs.
For the vase, I started by creating the neck using a square shape subtracted from two squashed discs in symmetry.
For the belly of the pot, I used a paraboloid and set the roundness with a level. For the flames on top, I used a succession of Waveform 1 nodes previously warped to get the undulation.
For the ribbons, I created the border of the shape using an edge detect and played around with the Perspective FX node made by Alexander Prokopchuk (available on Substance Share).
To make the keys, I started with the key ring. I re-used some of the volutes made for the blazon that I plugged into a Splatter Circular node. For the stem, I just used a gradient linear 2 that I’ve upscaled here and there with a Level node to change the thickness.
After making the other elements, such as the wings, the blazon, the ropes, the shields or the festoons in separate graphs, I added them in my layout one after another while trying to keep a consistent depth between all the assets of my composition.
The height map had to be homogeneous from every angle and needed to be stretched as little as possible.
For the albedo, after extracting the necessary masks I started by filling up my different floors with flat colors. Then I started to add variations by mixing multiple grunge maps plugged into gradient map nodes.
To extend my color palette and highlight my volumes, I tweaked my different layers of color with HSL nodes and masked them out with a mix of HBAO and grunge map previously contrasted with a level.
To link my different shades together, I added a dirt pass using a Dirt Generator. I finally used my curvature as a mask to subtly make some edges pop out here and there.
To see the construction of my albedo in greater depth, as well as how to create painted patterns and how to make realistic gold, my Substance file “Baroque Ceiling” is now available on Gumroad.
The package contains a full source .sbs file with 30 graphs:
Baroque Ceiling; Cherub Face; Wings; Keys; Ropes; Crowns; Festoon; Volutes; Vase, and many others.
All graphs are well organized with frames for ease of use. [Final 4k resolution PBR textures are included]
Note that considering the size of the graph, at least 32Gb of RAM is required to visualize It properly in 2K, and at least 64Gb for 4K.
If you're just looking for the texture Itself, you can purchase it separately.
What are your next projects?
For my next project, I’ll probably try to make an organic material. Maybe a mix of hard surface and organic, I’m not sure yet. But I would love to explore more in-depth vegetation and ground creation in Substance Designer.
Is there anything that you would like to add?
Well, I really would like to thank the community for all the support I’ve received! In particular, for all the comments, the kind words, the likes, the followers, and so on. It’s really motivating to hear from other artists that you’re an inspiration for them, especially when you admire them in return!
To be honest, I didn’t expect so much good feedback! So thanks a lot once again!
I’ll do my best to keep pushing my knowledge of Substance Designer further along, and being able to make new innovative and awesome materials!