Shape Keys between 2 separate objects. Possible to copy/paste vert positions?

I was wondering, let’s say for simplicity’s sake on talking about a single line and using a shape key to turn it into a 2 dimensional box (Recognizing they need to have an equal number of verts)

Would it be theoretically possible to take a line with 500 verts, and a separate 2 dimensional box object, copy the vert locations for the box, and paste them into the vert positions for the line, and make them each into their own shape key?

Would geometry nodes possibly be able to do this?

Maybe the copy could be done with the spreadsheet. But, if you copy the vertex positions of the box (every single vertex in 3d space has its exact coordinates x/y/z, global and local) to the line, the line will be a 2d-box with 500 vertices.

1 Like

One potential solution if you’re dealing specifically with a straight line segment, would be to use the curve modifier to make the line segment follow a path. Once you get things matching up, apply the curve modifier as a shape key.

Another option is to open the Python scripting panel and have a snippet transfer the data.
For example:

import bpy

# Name of the mesh object to get a shapekey added. Make sure it already has a Basis shapekey
dstObjName = "Plane"

# Name of the mesh object to transfer as a shapekey to dstObj. Make sure the vert count is equal
# or greater
srcObjName = "Plane.001"

dst = bpy.data.objects[dstObjName]
src = bpy.data.objects[srcObjName]

# Create the shapekey
shape = dst.shape_key_add(name="FromSrc", from_mix=False)

# Transfer the src vert data in vert order
vertCt = len(shape.data)
for i in range(vertCt):
    shape.data[i].co = src.data.vertices[i].co
1 Like

I love the coding idea, but I need to learn to code. Perhaps I will learn some to pull this off. I wish there was an add-on so a dumbass like me could pull it off more simply, but I do really appreciate you typing that out.

I will do my best to apply it but I don’t really know what im doing. It’s probably the best option there is though.