are there 'reverse hooks'?

I know all about hooks, I use them all the time. Using Empties to move vertices is very useful but… Is there a way to do it the other way around? Can you have a moving vertex influence an empty? So for example you have a flag with the cloth simulation, could you have empties ‘parented’ to the vertices of the cloth mesh? So the empties follow the respective vertex?

Much help would be appreciated!

What you can do is create vertex groups. Then use the flag as an emitter for the particle system. Put the particle system in object mode and chose your empty as the object. Scroll to the bottom of the particle system panel and open up Vertex Group. Choose your group for density and click the checkbox to enable it. Make sure to move the softbody modifier above the particle system in the stack.

thank you! I’ll try it when i have time!

Though the topic is old, the issue is the same: a reverse hook.
I would like to be able to move the vertices of a “matrix” (ie the points on a mesh) and have the associated (inversely hooked?) objects that are bound to these follow along. This not an animation motion, but rather a displacement in (static) modeling.
The requirement is similar to instancing on a meshes vertices, except that allows only one object to be repeated, whereas I want any and every object “inversely hooked” to follow the vertices of the mesh.

You can do it with a script, but it’s a bit buggy. You have to manually run an operator to get the empty position to update- trying to do it automatically with depsgraph_update immediately crashes and makes the file unopenable. I guess there’s some forbidden function being called that locks the depsgraph out. Anyway, if you want to try it, combine this:

obj = bpy.data.objects["Cube"]
v = obj.data.vertices[0]
co_final = obj.matrix_world @ v.co
bpy.data.objects["Empty"].location = co_final

with the simple operator template. It’ll work, I just tried it, but again, it won’t update automatically. If you try and hook it into the depsgraph_update, your file will be unusable permanently, so I’d recommend not trying to do that

1 Like

You can use vertex parenting for this

limitations, it will only work for 1 vertex (position only) or 3 vertices (position and rotation)

in edit mode ,select a vertex (or 3)

toggle editmode and add an empty (or select whatever else you want to parent

shift click the mesh and toggle back into edit mode and press ctrl+p and confirm the popup

now the empty will follow the movements of the vertex:
ezgif.com-gif-maker

2 Likes

It seems to me, you are describing the normal hook procedure of adding hooks.

Looks like the Suzanne is deformed follows as you move the empty, what I call normal hooks above.
What I want is the opposite to move vertexes of one object (in edit mode), used as a matrix in distributing objects - and the objects hooked to it’s vertices to follow. That is possible with several instances of one object parented to all the vertices of another (what I call the distribution matrix) - but not possible to have several objects rearranged, because parenting is for the whole thing, all vertices of the parent and one cannot assign different objects to be parented to sets of vertex groups.
Or in another approach to the same end, instead of parenting, I asked if I can do the same with 'reverse hooks".

Thanks I’ll try it out

I added a wave modifier to move Suzanne and the empty follows the wave motion. I’m not moving the empty, the empty is patented to the selected vertices

Vertex parenting isn’t as robust as you are describing, but it is not the same as a hook, it is the exact opposite.

it sounds like geometry nodes might help you here:

This is instancing a collection on the vertices of suzanne here, it’s based on vertex index at this point, but you could randomize it, or use a vertex group to control it.