how can i instance VertexWeightProximity before shape keys using geo nodes? I want to animate the process (ShapeKeys ONLY) thru geo nodes because currently VertexWeightProximity modifier won't apply before shape keys, how can i turn around this using geo nodes?

enter image description here

  • Edit : or if we can morph geometry using nodes to another shapekey we can achieve this
  • $\begingroup$ i think you are asking wrong. You should ask "how can i achieve such an effect" with geonodes. Because instead vertex weight proximity you could use the geometry proximity node...or did i miss something in your question? is this the effect you want to achieve? your gif? $\endgroup$
    – Chris
    Jun 21, 2022 at 7:13
  • $\begingroup$ You definitely didn't read the question title i guess , i want wvp modifier to act before shapekeys so i can make parametric stuf , i think this is 100 percent possible to trick the software thru geo nodes ( the same thing possible to do with svrchok ) $\endgroup$ Jun 21, 2022 at 7:24
  • $\begingroup$ Should not be possible due to the fact that Geometry Nodes is a modifier also. $\endgroup$
    – Crantisz
    Jun 21, 2022 at 9:09
  • $\begingroup$ @Crantisz NOPE , shapekey think ( shape transformation ) can happen inside geo noder $\endgroup$ Jun 21, 2022 at 9:39
  • 1
    $\begingroup$ It is not implemented, you can try to convert shape key to vector attribute using Python though. $\endgroup$
    – Crantisz
    Jun 21, 2022 at 10:31

1 Answer 1


So you've asked about how to use it in geometry nodes. I don't know the way without using some python.

Let's suppose that I have a grid object with a shape key:

enter image description here

Foremost, we need to convert data from shape key to attribute so that Geometry Nodes has access to it. To store the data, I created an attribute, type - vector, domain - points:

enter image description here

Data is accessible for edit using Python. I wrote a script which converts shape key to vector attribute:

import bmesh
import bpy

me = bpy.context.object.data

# this line works only in edit mode, make sure that you're in edit mode.
bm = bmesh.from_edit_mesh(me)

# put the name of attribute here:
ea = bm.verts.layers.float_vector['MyVector']

# put the name of shape key here:
sk = bm.verts.layers.shape['ShapeKeyName']

# We get coordinate of deformed vertex and subtract 
# the original coordinate to get the difference:
for v in bm.verts:


Once you've got an attribute, it is relatively easy to use it in the geometry nodes:

enter image description here

enter image description here

  • $\begingroup$ you deserve accept as answer my friend i liked your answer ❤, but i want to keep it simple , i do have two objects i want to morph them together ( by keeping the topology) the same thing happens in shapekeys how can i implement that in geometry nodes ? $\endgroup$ Jun 22, 2022 at 12:57

You must log in to answer this question.

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