I want to discover all vertices that are affected by a Shape Key.
I think this would involve comparing each vertex location for a key_block
when its value is 0 and 1. However the following attempt doesn't produce any result:
import bpy, bmesh
shapeKeyName='Key 1'
o=bpy.context.object
#bpy.ops.object.mode_set(mode='EDIT')
m=bmesh.new()
m.from_mesh(o.data)
m.verts.ensure_lookup_table()
sk=bpy.context.object.data.shape_keys
for v in m.verts: #o.data.vertices:
bpy.context.object.data.shape_keys.key_blocks[shapeKeyName].value=0
co_basis = v.co
bpy.context.object.data.shape_keys.key_blocks[shapeKeyName].value=1
co_shape = v.co
if co_basis != co_shape:
print( shapeKeyName, 'affects vertex', v.index, co_basis, 'vs', co_shape )
I see at the end of the loop, key_blocks[shapeKeyName].value
ends up at value 1 and the shape key is applied properly.