1
$\begingroup$

What I'd like to do is for every point generated on the mesh, store geometry data at that point to be used per instance.

As a test, I'm trying to store the normals of a sphere I'm using as points and setting the instances material color to that value. Every instance should store the normal at the point on the geometry so theoretically, outputting that value should be a solid color (the same color at that point on the source geometry.

Storing the normal as an attribute works as intended for coloring the sphere but I don't see a way to store the data per point. Storing it using the instance geometry just stores the instance normal, as expected.
Node setup

The result: Result I'm not sure if this is possible and if its not it would be interesting to know why. Thanks!

$\endgroup$

2 Answers 2

4
$\begingroup$

What you need to pay attention to when capturing (Store/Capture) and tranferring (Sample) data in Geometry Nodes is the particular branch that data belongs to. Doing that is actually pretty simple: you follow the green (Geometry) noodles. Values in Geometry Nodes are not stored in an abstract database somewhere, but on the very geometry you're working with; capturing a value literally writes that value on the vertices, faces, splines... of the geometry at the moment you capture it, it's not automatically available to other branches. Store Named Attribute and Capture Attribute nodes work with data available within a certain single branch. To transfer data from one branch to another, we use the Sample nodes (Sample Index, Sample Curve...)

In your setup you want the normals of the points you captured to be transferred to the instances of your other branch, so it can be done like this:

enter image description hereDon't forget to use the "Instancer" mode of your Attribute node inside your shader to read values captured in the Instance domain.

$\endgroup$
1
  • $\begingroup$ Very well explained. I see where my confusion came from. It was the transferring of data between branches that I wasn't sure was possible. Really cool stuff! $\endgroup$ Commented Jan 30, 2023 at 5:26
3
$\begingroup$

Whenever you store an attribute to the points of the template geometry, those attributes are inherited by all geometry or instances that derive from it. In your example, storing the Normal vector as a point attribute will make that attribute available to all box instances. Go to the Material Editor and feed that attribute to the color of the material. Just make sure to change the type of attribute to instances. That will color each instance with one distinct color.

enter image description here

$\endgroup$

You must log in to answer this question.

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