Lets take a cube for example. I put an Image texture on it with box mapping on. It all works well, but one thing I notice is that the opposite sides are using the exact same position of the texture, which makes sense of course.

However is there a way to offset the vector(s) so that the textures on opposite sides would be using the different position of the texture?

I tried offsetting using Geomtry: Normal data thinking that I could offset each vectors with the Normal data (-1.0 to 1.0), but I haven't had any success with this yet.


Geometry > Normal socket is the way.

If you separate the vector components with a Separate XYZ node you can use the desired axis as mask for combining whatever you like (colors, textures, even shaders).

Use use the desired axis as input for the Factor socket of a color mix node. Then plug whatever you want on each color input. In your case just use the same image texture node with different vector input for coordinates.

With a Vector Mapping you can transform it however you see fit independently. I added an additional Vector Mapping node because the Normal output of the Geometry Node is in Worldspace, meaning if you moved or rotated the mesh it would always point to the same global side.

enter image description here

The image illustrates the same cube object viewed from different sides in two separate viewports.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.