# How to apply driver based on geometry-node-generated coordinates

I had an idea that I'm attempting to implement with Blender geometry nodes. Basically, a swarm of scarabs, which should open and close their wings when their z-height is close to a certain value.

I've tested it on the original model, and, through the careful usage of a few shape keys, armatures, and drivers, have it set up so that when a varied custom-property z-coordinate is within a certain distance from the scarab's z-coordinate, the wings open up automatically.

So, this part works perfectly. The catch is, I'm using point instancing in geometry nodes to create an entire swarm of them, and I would like that value to vary for each scarab (out of potentially thousands). Imagine a "wave" of them opening their wings and the color gradient change that results from that; there's where I'm trying to go. However, the driver only sees the original location of the scarab; not the geometry node location; which means that all of their wings open and close in synchrony and doesn't have the effect I want.

Here's my current node setup. I'm on 2.93 alpha.

There are a great many different nodes that I'm still coming to understand, but is it possible to have Blender evaluate the driver after-the-fact, instead of beforehand? Like a deferment? If not, is there another way for me to accomplish this by-instance wing opening, without worrying about the entire swarm at once?

The core equation I'm using to adjust the wings, inside the driver, is |z-critical_height/(span/2)|, where span is the range over which the wings should open and close, z is the z-coordinate of the object, and critical_height is the z-coordinate at which I want them to be completely open. I suppose it might also help if I could have my driver reference the z-coordinate of the instance instead of the original, but I'm not sure how to do that.

Thank you for your time, please inform me if I can provide any additional data. I don't have any inputs on geometry nodes other than the geometry itself; and no other modifiers on my framing object (where the geometry nodes are), which for the moment is just a boring UV-sphere until I have the core concept down. In case it's relevant, my driver is on the bone that moves the beetle carapace to expose the wings, and is editable in pose mode.

• i do not know whether this is possible with geometry nodes, but i am sure it is possible with animation nodes. – Chris Mar 14 at 16:13
• Perhaps I'll look into that. My general notion about Blender is that, since it's both a 3D modeling package and effectively a Python IDE, anything is possible--but it can get very ugly if you don't know what you're looking for. It would be great if I could figure out how to wrangle that data from geometry nodes. – Michael Macha Mar 14 at 17:30
• @MichaelMacha Hi. Instances in geometry nodes share the same mesh data so you can't animate them individually, however, you can change their transformation (location, rotation, and scale). But, it is possible to do that in Animation Nodes, here is an answer blender.stackexchange.com/a/168007/62606 – 3DSinghVFX Mar 15 at 20:30