Let's say we have a mesh object with a Shape Key deformation, and it's driven by a Driver based on its distance from an Empty. It works as expected. But then if we want to make a Particle System of that mesh object, the particles won't respond independently based on their individual distances from the Empty, because they share the same mesh data.

We can Make Instances Real (to make the particles into their own objects), and then Make Single User - Object & Data (so each will have their own mesh data). But the Driver data remains unchanged, still based on the distance between the Empty and that first original particle mesh object.

To make each (now single-user) mesh respond to the Empty, it was necessary to select the object's name (...005), and type a unique variable name - twice per Shape Key, per mesh!

What I want is for each particle to "think for itself" and be driven according to its own distance from the Empty. This way the Empty will have a sweeping effect as it passes near the particles. Here is an example, although I prepared it by updating each particle mesh's driver data by manually typing it in - the impracticality becomes obvious once dealing with any substantial number of "particles" (technically they're not particles anymore at this point):

Is there a way to make them all unique using Python scripting? Or maybe with Animation Nodes or Geometry nodes? I am open to various approaches. Thanks.

  • $\begingroup$ While I'm not interested in developing a full answer here, one option for the situation you've described might be do it in material nodes, by baking your shapekey to a .exr object-space vector displacement map, and then using true displacement. $\endgroup$
    – Nathan
    Commented Feb 25, 2021 at 17:57
  • $\begingroup$ @Nathan That's an interesting idea as a workaround. I do have doubts about how practical it would be to set up each time I want to use Shape Keys on particles. Nonetheless, I like that you're thinking outside the box. I'll keep it in mind and perhaps play with that if no other solutions arise. It's possible that some interesting displacements could come from playing with and mixing the colors. Thanks for the suggestion! $\endgroup$
    – Mentalist
    Commented Feb 26, 2021 at 4:11
  • $\begingroup$ Yeah, I think it'd be more practical than scripting or animation nodes for a single shapekey and a single set of particles, but for multiple shapekeys or multiple instances, it would probably fall behind. One of the reasons I wasn't interested in developing a full answer is because it's not really clear how much this example actually represents your end goal. $\endgroup$
    – Nathan
    Commented Feb 26, 2021 at 4:26
  • $\begingroup$ @Mentalist Hi. With the help of Animation Nodes, you can make each particle independent with its shapekeys: blender.stackexchange.com/a/168007/62606 $\endgroup$
    – 3DSinghVFX
    Commented Feb 28, 2021 at 17:13
  • 1
    $\begingroup$ @3DSinghVFX Thank you!!! That may be exactly what I need. I look forward to trying it out very soon. $\endgroup$
    – Mentalist
    Commented Mar 1, 2021 at 14:51

1 Answer 1


With Geometry Nodes you can solve this as follows:

enter image description here

Unfortunately, in Geometry Nodes you don't have direct access to the shape keys of an object, so you would have to duplicate your object first.

You then apply the shape key to the duplicate so that you get the same object in two different states.

With Geometry Nodes you instantiate both objects independently along a circle.

Then, using the distance to the rotating Empty, you can mix the positions of these two geometries, which looks like this:

enter image description here

(Blender 3.1+)


You must log in to answer this question.

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