In case you missed it
Study more SD materials
Hey! I’m Norman Bishop, and I’m currently studying 3D at Arts et Technologies de l’Image, Paris 8 University. I’m from Paris and have previously studied IT and biology at another university.
A year and a half ago, I started studying 3D and fell in love with it rapidly.
As of the last 6 months, I’ve been focusing on Environment Art and Texturing, particularly with Substance Designer.
Substance Designer represented for me, someone with no drawing talent, an opportunity to create textures intuitively. The process being based around a lot of boolean logic (like how you mix masks, for instance) resonated with my IT background.
The Project Marble Materials
The idea for this project is in essence simple: create a set of marble textures that wouldn’t just look like some abstract concept of marble but would correspond to real varieties of marble.
This idea came to me during my internship at Lumiscaphe last summer. However, back then, I was only discovering Substance Designer, and so the results weren’t very convincing.
Cut to six months later (or one month ago), I decided to give the project another go, with my newfound experience in Substance Designer. This time, I wanted to go further with the initial idea, as well as in quality.
I aimed at going for as much realism as my skills would let me and gathering much more knowledge about the materials I wanted to reproduce than just reference photos, as well as trying to look at the problem from different points of view.
Speaking of which, here are the 6 marble types I wanted to reproduce:
With various rock and vein colors, as well as vein shapes, I had my work cut out for myself.
Gathering Information & Putting It to Use
Searching online, I found specialized websites and channels that held a lot of interesting information about the marbles I was working on.
The Scientific Approach
Starting with the black Marquina, I found out that the white veins were calcite, as where the smalls spots that are dotted around. Some samples also have fossilized shells in them.
Calcite is a crystal that can form in different ways - primarily from the shells of dead marine organisms, but also occasionally when Aragonite is submitted to temperatures of above 300°C.
So in the black Marquina, there are shells and calcite, a crystal formed from more shells (notably microscopic shells from dead plankton).
I started with a Directional Scratches node to get going and warped it multiple times until I got a basic shape that resembled the Marquina’s veins.
Then, noticing that in some samples have veins with larger portions, I used a Floodfill node and a Histogram Scan to get a random mask of a few of my veins. Then, I used Slope Blur Grayscale (one of my favorite nodes, as it is very versatile) to thicken the selected veins and then make them more jagged.
We now know that the veins are made of crystals. This needs to be shown through our texture if we want it to be accurate to the real marble.
Using nodes like Crystal 1, Cells, Clouds, and gradients, I mixed, added and subtracted until I got a result I was happy with.
Next, to add the seashells, I tiled warped spheres around, and to hollow them out, I used a Slope Blur Grayscale to thicken them and Histogram Scans to get more precise masks. Then, I subtracted the original to the thickened spots.
The shells being fossils, they won’t be textured the same way as the veins, seeing as they don’t have a crystalline structure.
Having done all of this, I found my texture still lacking something so I moved on to other sources of information.
The End-User Approach
I spent some time on websites that sold this marble, as well as reading and listening to pieces of advice that can be found online about how to pick your marble tiles or slabs, and what you should be looking for in them.
What I found out was this: different types of marble are sought after for different reasons and properties. For our current example, the black Marquina, I learned that it is prized for its potential to have a very deep and uniform black background.
Samples that are considered to be of higher quality will have a uniform black background, but also less calcite in them, whether it’s veins, shells or spots, while still having a little.
Samples of lesser quality would have more veiling in their background, and more calcite in them.
With this newfound knowledge, I took up my graph once more and started working on the background, the veiling of my marble.
This process was rather simple and involved mixing Perlin Noise, Clouds, Moisture Noise, and controlling its uniformity with Levels and Highpass Grayscale.
Seeing that there are different qualities of marble samples available for purchase, I decided to prepare my exposed variables so I could, later on, set up presets that would represent for each marble these different categories of quality. These categories, my research has shown me, are as follows: First-grade quality, Standard-grade quality, and Commercial-grade quality (from best to worst).
Looking at samples from lower qualities, I noticed that a lot of them had cracks. Adding these was fairly simple, once you know how to make cracks.
Start with a Tile Sampler and spread around squares of various sizes and color variations, then use a Distance node to fill the gaps.
Use an Edge Detect, and there you have the base for your cracks (which looks like an irregular version of a Cells node. Then just warp it to taste.
To make sure they remain cohesive with the rest of the texture, I suggest you use the same (or similar) warps that were used on the veins.
Combining it all, we end up with this:
With all our properties ready, all that was left to do was set up the presets and parameters.
Here is some advice for this part:
- Make sure you create your parameters as you go, or as much as you can.
- Keep your target platform or use case in mind: for these materials, I was imagining them being used in archviz, with a user choosing their quality and type of marble, to preview how it would look in their home.
- Make groups and subgroups. It helps keep things tidy when you have a lot of parameters and make your material easier to use in other software.
- Set boundaries. Make sure that your min and max values respect what you want for your material. For instance, limit the number of veins, so the black marble doesn’t end up completely white.
This was a very interesting and trying project for me. I wanted to steer away from my traditional ways of going about replicating materials, basing it all on looks from reference photos.
Looking into other real-world aspects of the materials really helped me achieve a level of realism and resemblance that I had yet to reach thus far.
And it is, therefore, a process I would recommend anyone interested in texturing try, to help give more depth and complexity to their work.
To push this process further, I would also use scanned data to help my work. Not by directly using it in the materials, but by analyzing its data - like checking the roughness values of a laser-scanned sample of the material I want to reproduce procedurally.
As a last nugget of knowledge, here are a few other tips from my experience with Substance Designer:
- Very useful nodes: Floodfill, SlopeBlur, Curve (to shape your gradients), Height Blend and Height Extrude. Try them out, experiment, they can be versatile.
- Keep things tidy: it’s tedious, but group things up in frames, line up nodes, use dot nodes. For larger projects, it’ll make your life a lot easier.
- Experiment: if you feel stuck on something, not knowing where to start, or how to solve a new problem, just try things out. Mix nodes, noises, warps. See what happens. You might even find inspiration for other projects through this process.
I have other projects in the works, and among those, I want to use these marbles, along with other materials, in an archviz configurator project. I plan on doing so in UE4, so it’ll be an interesting experience.
And many thanks to the 80 Level team for giving me the opportunity to share with their readers my project, experiments, and thoughts.