Hi everyone !
Today I want to share with you the result of several weeks of work : a weave generator !
This is a node group that you can use to weave two materials together and create numerous custom materials such as the examples I will introduce below.
Full procedural banana leaf weaving to make something exotic (at least for me ).
Very basic full procedural fabric.
Semi procedural wicker using some wood textures from Poliigon.com.
The “Material” is available on blenderkit.com for free so go and test the blenderkit addon (which is built-in into Blender 2.80) and the weave generator !
Feel free to check the Artstation post
How to use the node group ?
There are two different nodegroups : the fabric generator and the material connector.
The fabric generator :
- Vector : exactly what you are expecting . I recommend using a UV map in the input, the result will be more predictable.
- Randomize mapping : by putting a 1 in this input, you change the vector in a way that each blade use a random position on the UV coordinate space. This feature is useful when you don’t want to see the pattern of your image texture through the blades. If you put a 0 there, the UVs will be used normally.
- Distortion : to add more realism, the distortion makes the weaving unperfect. This should be a 0 to 1 value (actually it can be more but I limited it to keep physically correct enough results).
- Distortion seamless : if you want to bake the material to create a seamless texture, you should put a 1 there. If you don’t need a seamless texture, you can set it to 0 but the seamless distortion works as well as the non-seamless one.
- Bridge number : gives the number of blades crossing each other. This should be an integer.
- Scale X and Y : gives the number of blades along the X or the Y axis. This should be an integer.
- Margin X and Y : gives the amount of space between the blades along the X or the Y axis. This should be a 0 to 1 value (0 means no spacing and 1 is equivalent to 100% of space between the blades).
- Shape X and Y : indicates how round or squared the blades are. This should be a value between 0 and 1 (0 means perfectly round blade and 1 means perfectly squared blade).
- Rigidity X and Y : tries to simulate how rigid a blade is. This works by controlling the amplitude of sine functions used to create the pattern. In a standard way, these values should be left at 0. In case the scale on X is very different than the scale on Y, the amplitude on an axis may go wrong, this feature is here to correct this problem. This should be a value between 0 and 1.
- Mask X and Y : those are black and white images that tell where the material is along the X or the Y axis.
- Vector X and Y : those outputs return the new vectors for the mapping of the materials. Plug these outputs in the vector input of the materials you want to weave together.
- Alpha : it’s a black and white image that tells where the material is transparent.
- Displacement : gives the displacement map created by the weaving pattern that you can combine with the displacement of your material (and you can use it for micropolygon displacement of course ).
- AO : returns the ambient occlusion of the weaving pattern that you can combine with the AO of your material.
The material connector :
It can be a bit tedious to connect everything together using the mask outputs so as I’m a kind person, I made you another node that will help you to connect your materials .
- Mask X and Y : here you have to connect the mask outputs of the fabric generator (simple as that !)
- X and Y inputs : I tried to make these inputs as close as the principled shader inputs so they work the same way than the principled. Some differences are that the inputs are doubled and that the displacement is supported meaning that you can also mix the displacement maps of your materials according to the masks.
- Displacement : here you have to connect the displacement output of the fabric generator. This input is here to add the displacement of your materials with the displacement generated by the fabric generator.
- AO : here you have to connect the ambient occlusion output of the fabric generator.
As for the inputs, I made the outputs as close as I could to the principled shader so you only have to plug the color into the color, the specular into the specular and so on. Please note that the normal output has already been passed through a normal map node so you only have to plug the normal output into the normal input.
Example of connection with the banana leaf weaving :