For a rather complex technical animation. I need an empty to be locked to a vertex. I cannot simply make create parent-root scenario, or use bones for this. As the vertex is modified by complex animated shapekeys. So how to achieve this ?
Well I found a solution, took me a while. Since other people might get into this as well, here is the solution:
On the object with shapekey select a vertex, create a vertex group for it. On the Empty use a Child-Of constraint, select the object and the new vertex group.
Note its even possible this way to copy rotation of that vertex as well.
You can make a Vertex Parent:
Place an empty. In Edit mode select your vertex, Shift+S > "cursor to selected". Back to object mode, add an Empty.
Select the empty and the mesh in that order. With the empty selected, Shift+RMB on the mesh.
Make vertex parent. Back in edit mode, select the vertex, Ctrl+P > "make vertex parent".
In blender 2.83, you can go into edit mode, select the vertex you want, and search for (with f3) "hook to new object". This adds a empty in object mode, and when you move that empty it moves the vertex. This method works with single or multiple vertices.Here I have hooked the top 4 vertices individually, and hooked the bottom face. This image was taken in object mode.
I hope this answers your question.