Robin Rebière shows us how to make a realistic flowery pattern fabric using Substance 3D Designer’s spline system and demonstrates the nodes and tricks to make the material look lightweight.
Introduction
Hello everyone! I'm Robin Rebière, a 3D Artist specialized in material art, based in Barcelona. I graduated with a bachelor's degree in Game Art in 2020. Since then, I’ve worked as a material artist at InstaMAT and as a 3D artist for Team Curiosity, an indie game studio.
Project Genesis
This project began as an excuse to dive deeper into Substance 3D Designer’s Spline nodes. I had been aware of how powerful they are, but I hadn’t yet had the chance to explore them really in depth. A flowery pattern felt like the perfect playground to experiment with how well splines can perform with intricate shapes.
I started by looking for references. If you’re a fan of patterns like me, I can’t recommend The Complete Pattern Directory: 1500 Designs from All Ages and Cultures more. It’s not only a goldmine for ideas but also a beautiful book to flip through. While browsing it, I was struck by a pattern designed by William Morris in 1882. Its organic flow and balanced composition really spoke to me.
Rather than replicating it precisely, as I had done in a previous project, I aimed to capture its spirit and reinterpret it in my own style.
Spline nodes proved incredibly helpful here; they allowed me to build detailed forms while keeping everything non-destructive. That meant I could iterate freely and tweak the pattern at any point in the process.
Pattern Creation
I began with the flower. At first, I tried to build it entirely with splines, but it required an absurd number of nodes. Over the years, I’ve learned there's no need to chase the "100% made with Substance 3D Designer" ideal, or in this case, "100% made with splines." Instead, I used an SVG node, which turned out to be far more efficient. It didn’t compromise the non-destructive workflow, as I didn’t need to tweak the flower afterward.
With the flower ready, I moved on to the main stem. I created two splines, one mirrored using a Transform node, so I could control the entire shape with fewer adjustments. These splines served as the base for scattering the flowers.
Next came the leaves. I built them using a couple of Spline Quadratic nodes and created the veins using two Spline Bridge nodes.
I then merged the veins to clean up the spline directions and get a usable output for the Scatter Splines on Spline and Spline Fill nodes.
The next step was to scatter the leaf splines along the stem splines I had made earlier. I used two identical Scatter Splines on Spline nodes, one for the leaves without veins, and one with the veins included. This allowed me to create a separate mask for the veins by subtracting one from the other, which I used to apply color selectively.
At this point, I ran into a few issues with the spline nodes, especially with Spline Fill. After discussing the problem with Nicolas Wirrmann, Product Manager at Adobe, on the Substance Discord, I ended up modifying the Spline Fill node’s FX Map to fix a tiling issue. It’s not a universal solution, but it worked for my case, link to the discussion here.
For the rest of the pattern, I used a similar approach, creating separate elements to scatter along splines. This included some swirly stems and background leaves.
Marco Vitale’s Lattice custom nodes were helpful in adding quick variations to the smaller leaves. Check it out here.
I won’t go into every detail for the rest of the elements. It’s basically the same process repeated: building, scattering, and refining. One key point is that I made heavy use of spline thickness and height adjustments to get full control over the spline elements.
For the color, I simply took the masks from each separated element and applied colors to it. I used Edge Detect nodes for the outline and a subtle Multi Directional Warp to break the perfectness of the pattern and add some natural imprecisions from printing machines. The entire pattern is composed of four different colors, exposed as parameters so I could easily create color scheme presets.
Fabric Creation
At this stage, I decided I’d apply my pattern to a fabric material. I remembered an interesting cloth from my partner's wardrobe and as I really like to work with reference between my hands, I took it to recreate something in the same style but more opaque.
The challenge was to create a material looking lightweight, thin, with some folds. The graph is pretty straightforward as the only purpose of the fabric is to showcase my pattern, I wanted to keep things relatively simple to keep the focus on the flowers.
To create the grid pattern, I used a Tile Generator and made stripes with slight variation in width, then a double edge detect and some directional warps to break up the straight lines. The rest of the fibers are made by blending the previous result with an Alveolus node.
For the folds, I blurred a Creased and Crystal 2 nodes and then blended them in cross. I repeated the process for medium and small folds.
Once I had everything ready, I exposed a couple of parameters for the fabric color, fold strength, fabric and pattern size, and some additional controls. I chose to merge the fabric and pattern myself in Substance 3D Designer rather than in Painter to get better control over it.
I have also created an opacity map based on my height map that will be later used in the Unreal Engine shader with a dither effect.
Substance 3D Painter
For the 3D models, I browsed the Substance Assets Library and picked a few dress models that I thought would work well with the flowery pattern. I applied my material onto them and tweaked the parameters to get something that looked both appealing and believable.
During this stage, I made good use of the auto-update function in Substance 3D Painter, which allowed me to make last-minute adjustments in Substance 3D Designer and see the changes reflected instantly. This really streamlined the workflow and saved me a lot of time.
To add a bit of realism, I created subtle creases along the UV islands to simulate stitching. I did this by generating an edge-like effect, not with Edge Detect, but by using a Bevel filter on the UV islands.
Creating Color Schemes
My approach was to first define the color scheme of the pattern, and then find a base fabric color for the dress that would complement it. For example, in the dress below:
I went for a complementary color scheme using warm oranges and blues with green undertones. After picking the two main colors, I fine-tuned the palette by assigning similar hues to the pattern elements to introduce a bit more visual complexity.
The fabric color is a lighter and more desaturated version of the flower tones, which helps keep the design cohesive and avoids an overloaded look.
I followed a similar approach for the yellow and blue version, which also uses complementary colors. The red dress, on the other hand, uses an analogous color scheme for the pattern, staying within a narrower range of hues.
There was a lot of back and forth between Substance 3D Painter and Unreal Engine, tweaking the colors little by little until everything felt harmonious.
One thing that really helped was asking people around me for their opinions, even if they aren’t into 3D. Everyone sees clothes and colors every day, and outside perspectives can lead to some useful suggestions.
Color theory is a great starting point, and it’s definitely helpful, but I don’t see it as a strict rulebook. While some combinations may generally be more appealing, color preferences are subjective and can vary a lot across cultures.
I’d advise you to use color theory to guide you, but don’t be afraid to break away and experiment. It’s a fun, creative, and even relaxing process, so enjoy it and let your instincts play a role.
Rendering
Shading
Although this section comes later in the article, I actually set up the rendering scene early in the process. That way, I could regularly check how the material behaved under lighting and in context, avoiding any unpleasant surprises at the end.
I began by creating the fabric shader using a master material I had already developed for my other projects. It includes several adjustment parameters, which I then adapted specifically for this cloth material.
I used the Cloth shading model in Unreal and set the cloth parameter to 1. To simulate soft fabric lighting, I added a subtle fuzz effect, multiplying it by the base color to give the surface a realistic soft-light scattering.
When it came to simulating transparency, I explored a few approaches. The Translucent blend mode seemed promising but didn’t support normal maps, which made the material look flat. The Masked blend mode preserved the normals but produced harsh, binary transparency.
Eventually, I opted for the Dither Temporal AA technique using the Masked blend mode. This method fakes transparency by randomizing pixel visibility each frame. Unreal’s Temporal Anti-Aliasing then blends these frames to create a smooth, soft transparency effect.
Here’s how the shader turned out. I used a green background here to clearly show the soft transparency effect on the fabric.
Creating the fabric shader was more challenging than I expected, but I’m really happy with the final look.
Lighting
For the lighting setup, I looked at clothing websites and fashion product pages for reference. I noticed that many commercial 3D clothing renders tend to be very neutral, focusing solely on showcasing the garment without dramatic lighting or environmental distractions.
Following that approach, I created a simple background mesh and lit the scene with a single directional light. I increased the indirect lighting intensity to soften shadows and give the fabric a more evenly lit appearance. To eliminate shadows on the background itself, I applied a material with only emissive color, ensuring a clean and distraction-free backdrop.
Conclusion
Altogether, the project spanned about two weeks. I wasn’t working full days, I approached this project at a relaxed pace when I had the time and energy. That slower pace gave me room to experiment, revisit decisions, and polish details without pressure.
This project was a great opportunity to dive deep into Substance 3D Designer’s spline system. It started as a technical experiment, but quickly grew into something more creative and expressive. Along the way, I learned a lot, not just about splines or shaders, but also about how small design decisions, like color choices or lighting setups, can really shape the final impression of a material. If you’re working on similar projects, I encourage you to experiment and not be afraid of breaking “ideal” workflows.
Thanks for reading! I hope this breakdown gave you a few useful insights or sparked some new ideas for your own work. Feel free to reach out if you have any questions!