シェイプキーは、モデルの形を「別の形」として保存しておき、スライダーで行き来する機能です。
表情や、体の膨らみなどに使います。
Blender で試して、つまずきやすい点も確かめました。
- 最初に作るキーは「ベース」。元の形が入る
- 2つ目以降のキーは、形を変えて保存する。値は 0〜1 で元の形と行き来する
- 値は初期設定で 1 が上限。2 にするには「スライダー最大」を変える
- 「頂点グループ」を指定すると、その範囲だけに効く
- シェイプキーがあるメッシュには、モディファイアーが適用できない
- FBX に書き出すと、ブレンドシェイプとして入る
この記事の結果は、2026年9月29日に Blender 5.2.1 LTS を背景実行(画面なし)して試したものです。
基本の作り方
- メッシュのオブジェクトを選ぶ
- 「オブジェクトデータプロパティ」を開き、「シェイプキー」の+を押す。1つ目に「ベース」ができる
- もう一度+を押すと、「Key 1」ができる。名前は好きなものに変える
- Key 1 を選んだまま、編集モードに入って、形を変える
- オブジェクトモードに戻り、「値」のスライダーを動かす
練習用の新規ファイルで初期キューブを削除し、Scriptingワークスペースの新しいテキストへ次の例を貼り、1回だけ実行します。
import bpy
if bpy.data.objects.get("ShapePractice"):
raise RuntimeError("ShapePractice が既にあります。練習用の新規ファイルで実行してください。")
bpy.ops.mesh.primitive_monkey_add()
ob = bpy.context.object
ob.name = "ShapePractice"
basis = ob.shape_key_add(name="Basis", from_mix=False)
puff = ob.shape_key_add(name="Puff", from_mix=False)
for i, vertex in enumerate(ob.data.vertices):
puff.data[i].co = basis.data[i].co + vertex.normal * 0.25
puff.value = 0.5
Blender の初期の猿(スザンヌ)で、頂点を法線の向きに0.25ずらして「Puff」というキーを作りました。
値と、その上限

値 0 が元の形、値 1 が保存した形で、0.5 はその中間です。
値に 2.0 を入れようとしても、初期設定では 1.0 に戻りました。
「スライダー最大」を 2 に変えてから入れると、2.0 が通りました。
保存した形の倍まで動かすので、左下の画像(値 2.0)のように、膨らみすぎて面が破れて見えることもあります。
| 設定 | 意味 |
|---|---|
| 値 | どれだけ効かせるか(0〜1が基本) |
| スライダー最小・最大 | 値の動かせる範囲。初期設定は 0〜1 |
| 基準の対象 | どのキーを基準に差を取るか。初期設定は「ベース」 |
| 頂点グループ | 指定した頂点にだけ効かせる |
| ミュート | 一時的に効かなくする |
頂点グループで、範囲を絞る
「頂点グループ」の欄に、作った頂点グループを指定すると、その頂点だけがシェイプキーの影響を受けます。
右下の画像は、顔の中央あたりの87頂点だけを「Nose」というグループにして、値 1.0 にしたものです。
グループに入っていない場所は、形が変わりませんでした。
つまずきやすい点
シェイプキーのあるメッシュに、モディファイアーを適用しようとすると、次のエラーが出ました。
Error: Modifier cannot be applied to a mesh with shape keys先に、シェイプキーの扱いを決める必要があります。
- キーを使い続けたい:モディファイアーは適用せず、そのまま残す
- 今の形で固定したい:シェイプキーを消すときに「ミックスを適用」する。スクリプトでは object.shape_key_remove(all=True, apply_mix=True)
ミックスを適用すると、いまのスライダーの値で混ぜた形がメッシュになり、シェイプキー自体は消えました。
複数のキーを混ぜた形を、新しいキーとして残したいときは、「New Shape from Mix」(スクリプトでは shape_key_add(from_mix=True))を使います。
試したところ、Key 3 という名前で、値 1.0 のキーができました。
ミックスを1つのキーに保存して確認する
新しく作ったミックスのキーを表示するとき、元のキーの値も残すと、同じ変形が重ねて加算されます。
次の例は上で作ったShapePracticeを選び、相対シェイプキーのオブジェクトモードで実行します。
import bpy
ob = bpy.context.object
if ob is None or ob.type != "MESH" or ob.data.shape_keys is None:
raise RuntimeError("シェイプキーのある練習用メッシュをオブジェクトモードで選んでください。")
if ob.mode != "OBJECT" or not ob.data.shape_keys.use_relative:
raise RuntimeError("オブジェクトモード・相対シェイプキーで実行してください。")
mixed = ob.shape_key_add(name="SavedMix", from_mix=True)
for key in ob.data.shape_keys.key_blocks:
key.value = 0.0
mixed.value = 1.0
2026年10月2日に Blender 5.2.1 LTSの背景実行で再検証しました。
Puff=0.5の形と、Puff=0・SavedMix=1の形で、全507頂点の座標が一致しました。
キーを保存する方法なので、シェイプキーを削除する「ミックスを適用」とは別の操作です。
Blender練習用データをダウンロード(ZIP・約2.1MB)
ZIPを別フォルダーへ展開してから開き、元のファイルを上書きせずコピーで試してください。
Blender 5.2.1 LTSで生成し、背景実行でデータと処理を検証したものです。
GUIのクリック操作とUnityへの取り込みは、今回の検証には含みません。
shape-half.blend はPuff=0.5、shape-mix.blend はSavedMix=1だけで同じ形になる比較用ファイルです。
変化しないときは、選んだオブジェクト、キーのミュート、頂点グループの指定、値を確認します。
元の形へ戻すにはベース以外の値を0にし、作成前に戻すなら未編集のファイルを開き直します。
FBX に書き出すと
猿に、Puff・横に広げた Wide・ミックスから作った Key 3 の3つのキーを作って FBX に書き出し、中身を調べました。
BlendShape という項目が1つ、その中の BlendShapeChannel に Puff・Wide・Key 3 の3つが入っていました。
ベースは、チャンネルには入りませんでした。
Unity などで取り込む設定は、BlenderのFBXをUnityに書き出す設定にまとめています。
Unity 側での見え方は、今回は確かめていません。
ボーンと組み合わせるときの考え方
シェイプキーは、ボーンを使わずに形を変えられるので、表情に向いています。
体の曲げ伸ばしはボーンで、表情はシェイプキーで、と分けるのが一般的です。
ボーンのつけ方は、Rigifyで人型リグを作る手順を見てください。
まとめ
- 最初のキーは「ベース」。以降のキーは、形を変えて保存する
- 値の上限は初期設定で 1。超えたいときは「スライダー最大」を変える
- 頂点グループで、範囲を絞れる
- シェイプキーがあるとモディファイアーは適用できない。「ミックスを適用」で固定できる
- FBX にはブレンドシェイプとして入る
参考:Blender 5.2.1 LTS での実行結果(2026年9月29日)。
