Amazonで商品を見るセール会場へ

Blender│シェイプキーの作り方と使い方|値の範囲・頂点グループ・FBXへの書き出し

シェイプキーは、モデルの形を「別の形」として保存しておき、スライダーで行き来する機能です。

表情や、体の膨らみなどに使います。

Blender で試して、つまずきやすい点も確かめました。

  • 最初に作るキーは「ベース」。元の形が入る
  • 2つ目以降のキーは、形を変えて保存する。値は 0〜1 で元の形と行き来する
  • 値は初期設定で 1 が上限。2 にするには「スライダー最大」を変える
  • 「頂点グループ」を指定すると、その範囲だけに効く
  • シェイプキーがあるメッシュには、モディファイアーが適用できない
  • FBX に書き出すと、ブレンドシェイプとして入る

この記事の結果は、2026年9月29日に Blender 5.2.1 LTS を背景実行(画面なし)して試したものです。

目次

基本の作り方

  1. メッシュのオブジェクトを選ぶ
  2. 「オブジェクトデータプロパティ」を開き、「シェイプキー」の+を押す。1つ目に「ベース」ができる
  3. もう一度+を押すと、「Key 1」ができる。名前は好きなものに変える
  4. Key 1 を選んだまま、編集モードに入って、形を変える
  5. オブジェクトモードに戻り、「値」のスライダーを動かす

練習用の新規ファイルで初期キューブを削除し、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」というキーを作りました。

値と、その上限

スザンヌにシェイプキー Puff を作り、値を0・0.5・1.0・2.0にした結果と、頂点グループ Nose を指定して1.0にした結果を並べた画像。値が大きいほど顔が膨らむ

値 0 が元の形、値 1 が保存した形で、0.5 はその中間です。

値に 2.0 を入れようとしても、初期設定では 1.0 に戻りました。

「スライダー最大」を 2 に変えてから入れると、2.0 が通りました。

保存した形の倍まで動かすので、左下の画像(値 2.0)のように、膨らみすぎて面が破れて見えることもあります。

設定意味
値どれだけ効かせるか(0〜1が基本)
スライダー最小・最大値の動かせる範囲。初期設定は 0〜1
基準の対象どのキーを基準に差を取るか。初期設定は「ベース」
頂点グループ指定した頂点にだけ効かせる
ミュート一時的に効かなくする
Blender 5.2.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日)。

次に学ぶ・作業環境を選ぶ

学習を続けたい方や、作業環境を整えたい方は、目的に合うガイドをご覧ください。

3DCGのおすすめ書籍

3DCG用PCの選び方

周辺機器の優先度

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次