How do you get proportional auto scaling for a texture node?

Just a quick question regarding procedural texture node scaling. I have an object without a UV map (this is intentional!) and I’ve set things up so that there is no texture stretching. But, to ensure that there is no stretching, I have to manually do this by changing the Y scale on the “Mapping” node.

I was wondering if there is a node which can automatically provide equal scaling (using a noise node, for example) based more on global coordinates rather than for me to provide manual scaling based on local object coordinates. How do I go about this?

Look at the image for what I mean as an example.

  1. This is the original object that is a curve mesh and it needs to stay that way.

  2. Just for this example I’ve connected a “Checker Texture” node to the “Base Color” input of the material. As you can see, it is stretched on the Y axis.

  3. I then add a “Mapping” node as well as a “Texture Coordinate” node (off image).

  4. I then have to change the “Y” scale on the “Mapping” node so that the checker pattern is more squarish. But if I change the “Scale” value on the “Checker Texture” node, I would have to manually change the “Y” scale on the “Mapping” node again.

So, is there a way of doing this so it is automatic if I change the “Scale” value on the “Checker Texture” node?

Thanks in advance for any feedback.

Cheers,
Paul
(mix_mash)

The texture coordinate nodes gives you multiple options. As you are not using UVs, your are basically left with the choice of

  1. Generated: this puts the origin of the coordinates in one corner of the bounding box (I think) of the geometry where a value of 1 in either axis is on the border of the bounding box in that direction. If no UV maps are present, “Generated” coordinates are also used if the vector input to the texture nodes (checker, noise,…) is not connected. This is what you get in your topmost picture: the texture is stretched to give an equal amount of checkers in either direction

  2. Object: this puts the origin of the coordinate system at the object origin, and uses local object coordinates (including rotation and scale) to compute the coordinates. This means that if you have a uniform scale on your object (which you should always have anyway), you will always get something resembling your last picture, without any need for manual scaling with the mapping node.

You can use various math nodes and a vector split and value to drive scaling…

If I am not mistaken, this way the y coordinate gets scaled quadratically while all the others get scaled linearly when manipulating the “Value” node. Wouldn’t it be sufficient to scale the x,y, and z coordinates in the mapping node with constants and then only drive the scale input of the Texture node?

1 Like

Yes,

I was just trying to show op you could drive 2 values from one, as he mentioned his Y axis.

1 Like

OK, I see now. I actually tried scaling with both ‘generated’ and ‘object’ settings. I also tried using a ‘musgrave’ node instead of the ‘checker’ node. Because of the tri-planar nature of the procedural textures, especially on a long object like mine, using ‘scale’ on either texture node can give the ILLUSION of a stretched texture.

Wow, so this has been an enlightening experience.

Thanks to both of you for your help. I appreciate it.

Cheers,
Paul
(mix_mash)

1 Like