How can I translate or position all UV faces at centre (under (Geometry Nodes or Shader Nodes) ... like centre of all faces are set at the same UV location (in this case at centre of image texture).

enter image description here

I have done this Voronoi object generated by Geometry Nodes.
And I want to place at each face the same image. So result should look like this:

enter image description here

Scalling texture according to Face Area is already achieved, and is not necessarily part of my Q.

Or any other idea how to achieve this effect without applying modifiers?

Blend file description:

  • visible object is GN Voronoi with UV Unwrap (I wanted to position UV Faces at centre, but I failed...)
  • one hidden object is the same object with GN Applied, just for illustration purpose, it use UVMap of second hidden object)
  • second hidden object used few more nodes to position faces at centre because I wanted to Capture or Translate somehow face position as UVMap, but I failed ... in blend file is GN Applied just to create illustration of desired result.


1 Answer 1


Here's a shot at it.

The group:

enter image description here

  • Stashes the face corner indices (Edit: turns out to be unnecessary)
  • Starts a parallel branch to the incoming geometry, and stashes face-center positions.
  • On that branch, splits the faces, rotates them so their normals are up object Z, and centers the faces on 0 (by face-center)


enter image description here

  • Scales the faces about 0 by 1 / sqrt(Face Area) .. then:

enter image description here

  • Branches again for a bounding-box, shifts the geometry so its minimum XY is at 0, and scales all towards 0 by 1 / its maximum dimension.
  • The face-corner positions are transferred from the manipulated branch, (which is now 'physically' in the 0-1 UV square,) to the original geometry, by face-corner index.

Thankfully, the face-corner index survives the edge-split at the beginning of the branch. This works for 3D geometry, too, although more work would be needed to gain control over orientation per face.

enter image description here

Blender 3.2b

  • $\begingroup$ Wow !!! ... Thanks a lot ... now I know why I could not figure this out ... I don't have a super-power :) If you are interested you can answer the corral Q - bake height map of hires element and use for miscrodisplacement, elements blend by mask from Edge proximity :) I will try to learn from your solution, just seems to be to much to reuse in another scenario ... but I will try :) Thanks again (after whole day of pain ... finally satisfaction). $\endgroup$
    – vklidu
    Commented Jul 24, 2022 at 0:05
  • $\begingroup$ Hi @vklidu! Glad this one passes your muster! :) I guess it could be improved by getting rid of the parallel branch altogether, and just calculating the transforms on the original mesh.. but doing it with actual geometry is much easier to debug, you can see what's going on. And some operations would be very nodey to reproduce. Is the other Q posted? $\endgroup$
    – Robin Betts
    Commented Jul 24, 2022 at 5:48
  • 1
    $\begingroup$ Other Q ... No, I mean Coral Reef ... I wanted to offer micro-displacement instead of heavy topo (he is using) and blend by shader similar to break tilling repetition ... so with your support I got displacement [corral reef)(imgur.com/cmlHlWx) ... but trying to blend leads me into other issues (even without GN and entirely as shader) ... so if you are interested to solve it this way its yours :) $\endgroup$
    – vklidu
    Commented Jul 24, 2022 at 10:29

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .