汗や涙などのように、頭の内部に隠したメッシュを表情に利用する場合がある。メッシュが見えない所にあるとモデリングできないので、基本的には以下のようにシェイプキーを作成することが多い。
blend = 0 の時に、メッシュを頭の外側に出す。
blend = 1 の時に、メッシュを頭の内側に隠す。

最終的には以下のようにシェイプキーを設定したい。
blend = 0 の時に、メッシュを頭の内側に隠す。
blend = 1 の時に、メッシュを頭の外側に出す。
選択したシェイプキーのみ反転する場合
- Edit モードで反転させたい頂点を選択する
- 反転させたいシェイプキーを選択する
- 以下のスクリプトを実行する
import bpy
bpy.ops.object.mode_set(mode='EDIT')
#bpy.ops.mesh.select_all(action='SELECT') #頂点を全選択する
index = bpy.context.object.active_shape_key_index
if index != 0:
keys = bpy.context.active_object.data.shape_keys.key_blocks.keys()
bpy.context.object.active_shape_key_index = 0
bpy.ops.mesh.blend_from_shape(shape=keys[index], blend=1, add=True)
bpy.context.object.active_shape_key_index = index
bpy.ops.mesh.blend_from_shape(shape=keys[index], blend=-2, add=True)

全てのシェイプキーを一括で反転する場合
- Edit モードで反転させたい頂点を選択する
- 以下のスクリプトを実行する
import bpy
bpy.ops.object.mode_set(mode='EDIT')
#bpy.ops.mesh.select_all(action='SELECT') #頂点を全選択する
keys = bpy.context.active_object.data.shape_keys.key_blocks.keys()
for i in range(1, len(keys)):
bpy.context.object.active_shape_key_index = 0
bpy.ops.mesh.blend_from_shape(shape=keys[i], blend=1, add=True)
bpy.context.object.active_shape_key_index = i
bpy.ops.mesh.blend_from_shape(shape=keys[i], blend=-2, add=True)
bpy.context.object.active_shape_key_index = 0
所感
スクリプトには必要最低限のコードしか書いていないので、適宜修正して使ってほしい。