So the idea is to interpolate a heavily pixelated image into 4-6 tints of grey.

Based on the value of that local pixel I want to add a specific object. The plane will be subdivided into the corresponding pixel sections. (This should make it easier to distribute the objects in my opinion)

Is there a way to achieve this using geometry nodes?

See image below for the result I'm trying to achieve: enter image description here

  • $\begingroup$ i think it is not possible with a pixel dependency because Blender works on vertex/faces/edges basis. $\endgroup$
    – Chris
    Commented Jun 16, 2021 at 5:56
  • $\begingroup$ @Chris I feel that there should be a way to do this given we have an ''Attribute Color Ramp'' & ''Attribute Sample Texture'' node. I will be subdividing the image so that the edges are touching the pixel borders, this way I would be able to distribute on faces. Just need to figure out how to extract multiple specific color values from the texture. $\endgroup$
    – Delagone
    Commented Jun 16, 2021 at 6:27

1 Answer 1


If you translate the positions (in this case the Faces of a grid) to a range of 0-1, you can capture the color values at certain positions of an image.

You can then translate these positions directly into indexes with the node Map Range, which will select the corresponding object from your collection as the value for Instance Index with the node Instance on Points.

enter image description here

Here is a summary of the node group that leads to the described result:

enter image description here

Here is the blend file:


You must log in to answer this question.

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