Blenderのバージョンを指定したのは、2.79以前を使っていたり、未来の人(もちろんBlenderのAPIも変わっている)が参照して困らないように、おおまかな時期の指標として書いただけで、特に2.8や2.9x間でシビアなバージョン指定があるという訳ではありません。
基本
キューブの頂点を変形させます。
msh = bpy.data.meshes['Cube']
vts = msh.vertices
vts[0].co = (5,5,5)
こうなります。
しかしそうならない時もあります。
contextでアクセスしている
Blenderスクリプトにおいて、データにアクセスする手段は主に2つあります。
bpy.databpy.context
です。前者は一覧リスト(正確には辞書)から選ぶ方式。後者は現在選択している要素から選ぶ方式です。基本は都合に応じて使い分ければいいと思いますが、contextは読み取り専用というトラップがあります。という訳で、以下のようなスクリプトを走らせた場合、操作としては全く同じことをしているのに値が変更されない※ということになります。エラーを出してくれないかな?
obj = bpy.context.object
msh = obj.to_mesh()
vts = msh.vertices
vts[0].co = (5,5,5)
対策は、メッシュの名前を取得してからdataでアクセスし直すことです。
obj = bpy.context.object
msh_name = obj.to_mesh().name
msh = bpy.data.meshes[msh_name]
vts = msh.vertices
vts[0].co = (5,5,5)
※正確には、頂点の座標のデータは変わっているのにそれがシーンに反映されないようです。
シェイプキーが設定されている
オブジェクトにあるシェイプキーを追加した時点で、Basisというシェイプキーが追加されます。これは基本(変形元)となる特別なシェイプキーで、値を設定できません。それ以降に追加されるシェイプキーは、値が設定できるいわゆる普通のシェイプキー(変形先)になります。そして、一旦シェイプキーが設定されると、メッシュデータの頂点座標をいじっても反映されなくなります。なぜなら、メッシュが持っている頂点座標とBasisは別物だからです。
結論的には、Basisのデータをいじる必要があります。
msh = bpy.data.meshes['Cube']
spk = msh.shape_keys
kbc = spk.key_blocks
key_blocksというのがシェイプキー群を司るデータになります。
>>> kbc[0]
bpy.data.shape_keys['Key'].key_blocks["Basis"]
複数のシェイプキーを登録していた場合、kbc[1]やkbc[2]でアクセスできます。頂点座標は、その中のdataという属性が持っています。
msh = bpy.data.meshes['Cube']
spk = msh.shape_keys
kbc = spk.key_blocks
vts = kbc['Basis'].data
vts[0].co = (5,5,5)
こうすれば変形できるはずです。

