Rotate this voronoi setup?

This is the setup:

I want all the faces to look like this (rotate 45 degrees):


  • Still keep the “square” pattern.
  • Seamless.
  • Faces are different from each other.

Is it possible to do that? I don’t mind if I have to create a whole manual voronoi, and if so please show me how to do that.

I’m not sure I have a good solution, but I at least got some insight into the problem.

My observations, why rotating doesn't work

The way the manhattan distance function seems to work in 3D, creates isodistance lines in the shape of an octahedron. Here visualized this using your setup modified to display as a volume:

The cube basically cuts off the tips of the Octaheron-like shapes of the distance function resulting in the nice rectangular pattern of your shader. I found this image on wikipedia illustrating that:

Rotating the setup around anyone axis to make the edges of the sections for one side of the cube parallel to the cubes sides will misalign the other two sides resulting in non-square sections.

About your idea with manually rebuilding the voronoi. You might be able to do that and use a different kind of distance function to create cube-like distance like with the node group below. Though I only used two points, so it’s far from a full voronoi texture:

Though, @Secrops had a great setup for the voronoi texture:

Maybe changing the Vector Math - Distance in the CellPoint group to a Vector Math - Substract node and feeding its output into the node group with the distance function I posted above does the trick? I don’t have the time to test it right now, unfortunately :upside_down_face:

EDIT: I just saw, that you already know that setup and even posted a .blend-file containing it. I used that to implement what I proposed and it seems to work in principle. Though that voronoi setup is only really made for 2D-Space and you wont be able to make it go seamlessly over a cube, without extending it to 3D.


Modified Magic Voronoi using UVs:

Modified Magic Voronoi using Object Coordinates:

1 Like

Still keep the “square” patterns"
Faces are different from each other

Here’s a simple approach to your requests…You can try and use triplanar mapping to project 2D coordinates onto a cube (or whatever 3D object that you want to) and then use the Z-rotation onto them, separately…Then you’ll get each face rotated at 45 degrees as you wished to…You can play around with the scale of the texture (Voronoi) or use another simple trick (Noise + Linear Light) to “blur” out the harsh seam/cut on the texture…Try and generate a Voronoi from scratch would be possible but I doubt it’d be optimized for later computational calculation…

1 Like

Hi @lehuan5062,

You might want to check CBaileyFilm’s tutorial as he’s doing something very similar to what you are trying to achieve.

Cheers and stay safe,

1 Like

Thank @lone_noel and @Joey_Hillerst for sharing. I want to achieve this just for practice purposes only. Really appreciate your replies. I think I understand the idea now, but in real project I would “cheat” it somehow because the math would take forever to render.

And thank @pxlpaul , althought that method still has seams because he used a UV map.