How to make textures tile adaptively with mesh scaling?

Hi everyone,

I’m creating a master material with two texture tiling options, regular UV tiling and tiling that adapts to mesh scaling to prevent stretching.

I’ve connected a simple node system based on an old thread on this forum, but it does not work when scaling on the y axis. (You can see the thread here: https://answers.unrealengine.com/questions/139472/how-can-i-prevent-texture-stretching-while-scaling.html)

I tried adding another “append vector” node and increasing the “break out float” to 3 components, but both of these break the material.

I would appreciate any advice for how to make the tiling work in any direction, or alternatively, a better node setup that gives smoother results. Thanks!

Hello! You can try to use those. The idea is to keep length as scale invariant, so in simple case you can use (ScaleX + ScaleY)/2 for U and ScaleZ for V (just think about perimeter!). However, you should prepare your textures in special way to make it perfect. If for different models you have got different orientation on UV, then nothing can be done because of data scatter. Anyway, the more quality you want for auto tiling - more constraints and rules you will need to follow for you models UVs…

Thanks for the reply and explanation! I got the tiling to work by combining the add and divide nodes with my original set up.