Blenderでの動きの振り付けとアニメーション作成
【目次】
本記事の前提知識
本記事を理解し実践するには,以下の知識と技能が必要である.
必要な基礎知識
Blenderの基本操作として,オブジェクトモード,編集モード,ポーズモードの切り替え方法の理解が求められる.モード切り替えは,3Dビューポート上部のモード選択ドロップダウンメニュー,またはTabキー(オブジェクトモードと編集モードの切り替え)とCtrl + Tabキー(ポーズモードへの切り替え)で行う.オブジェクトの選択方法として,左クリックによる選択,Shiftキーを押しながらの複数選択,Aキーによる全選択,Alt + Aキーによる選択解除を理解している必要がある.
キーフレームアニメーションの基本として,タイムライン上での時間の概念,キーフレーム(アニメーション上の重要な位置で値を記録するフレーム)の役割,補間(キーフレーム間の中間状態を自動計算する処理)の概念を理解している必要がある.
Blender 5.1におけるキーフレーム操作に関する注意
Blender 5.1の既定設定では,3Dビューポート上でIキーを押すと,環境設定の「Default Key Channels」に基づきキーフレームが自動挿入される.従来の「Insert Keyframe Menu」(Location/Rotation/Scale等を選択するメニュー)は既定では表示されない.本記事の手順でメニューから項目を選択する操作を行うには,次のいずれかの方法を用いる.
- 方法1:環境設定(Edit→Preferences)の「Animation」または「Keymap」で「Pie Menu on Drag」を有効化する.以降,Iキーを押下したままマウスをドラッグすると,Location,Rotation,Scale,Availableを選択するパイメニューが表示される.
- 方法2:プロパティパネル(Nキー)のTransformタブで,対象の値(Scale,Rotation等)を右クリックし,コンテキストメニューから「Insert Keyframe」を選択する.
本記事中の「Iキー→Scale」「Iキー→Rotation」等の記述は,上記いずれかの方法により対応する項目を選択する操作を指す.
Blenderのインターフェース
本記事で使用する主要なパネルと表示方法は次のとおりである.プロパティパネルは画面右側に配置され,非表示の場合はNキーで切り替えられる.タイムラインは画面下部に配置され,アニメーションのフレームを管理する.アウトライナーは画面右上に配置され,シーン内のオブジェクト階層を表示する.3Dビューポートは画面中央の主要な作業領域である.
本記事で扱わない範囲
本記事では,3Dモデルの詳細な作成方法は扱わない.動作確認手順では簡易的なモデル作成手順を示すが,実用的なモデリング技法は範囲外である.
ありがちな失敗例
複数ボーンの一括制御に関する問題
傘の開閉を制御するためのボーン(3Dモデルの骨格として機能し,メッシュの変形を制御する要素)の数が多い場合,アニメーションを作成する際に1つずつ設定すると時間を要する.
解決方法
傘の開閉を制御するボーンの動きを一括で行うための制御用のボーンを作成する.
具体的な操作
傘の各リブ(骨)を制御するボーンに対して,親子関係を利用した階層構造を構築する.具体的には,傘の中心に制御用の親ボーンを作成し,各リブのボーンをその子として設定する.さらに,各リブのボーンの回転を制御する補助ボーンを追加し,Copy Rotation Constraint(他のボーンの回転値を複製して適用する制約機能)を設定する.
手順は次のとおりである.まず,傘の中心軸に制御用ボーンを作成する.編集モードでShift + Aキーを押し,表示されるメニューからSingle Boneを選択する.作成したボーンを所定の位置に移動させる(Gキーで移動,ZキーでZ軸方向に限定).次に,各リブを制御するボーンを作成する.Shift + Aキー→Single Boneを繰り返し,傘のリブの数だけボーンを追加し,所定の位置と角度に配置する.続いて,各リブのボーンを制御用ボーンの子として設定する.ポーズモードに切り替え(Ctrl + Tabキー),すべてのリブのボーンを選択(Shiftキーを押しながら左クリック)し,最後に制御用ボーンを選択した上でCtrl + Pキー→Keep Offsetを選択し,親子関係を設定する.
次に,回転用の補助ボーンを追加する.編集モードに戻り(Tabキー),Shift + Aキー→Single Boneで補助ボーンを追加し,制御用ボーンと同じ位置,またはわずかにずらした位置に配置する(Gキーで移動).続いて,各リブのボーンにCopy Rotation Constraintを設定する.ポーズモードで各リブのボーンを選択し,画面右側のプロパティパネル(Nキーで表示)内のボーン制約タブ(鎖のアイコン)を開き,Add Bone Constraintボタンをクリックし,表示されるメニューからCopy Rotationを選択する.最後に,Copy Rotation ConstraintのTargetに補助ボーンを設定する.Targetフィールド右側のスポイトアイコンをクリックし,3Dビューポート上で補助ボーンをクリックして選択する.
この設定により,補助ボーンを回転させると,すべてのリブのボーンが同じ角度だけ回転し,傘の開閉動作を一括制御できる.また,制御用ボーンの位置を動かせば,傘全体の位置も同時に移動する.
トラブルシューティング
親子関係が正しく設定されているかは,アウトライナーでボーンの階層構造を確認する.制約が正しく機能しているかは,ポーズモードで補助ボーンを選択し,Rキー→Zキー→数値入力で回転させ,すべてのリブのボーンが同時に回転することを確認する.回転しない場合は,Copy Rotation ConstraintのInfluenceスライダーが1.0に設定されているか確認する.
動作の表現力に関する問題
パンチの動作などにおいて,何の動作か分かりにくい,または迫力が不足する場合がある.
解決方法
ボーンの拡大縮小により,モデルの部分的な大きさを変えるアニメーションで誇張表現する.
具体的な操作
パンチを出す前のキーフレームで,手の部分のボーンを選択し,Scaleキーフレーム(拡大縮小の値を記録するキーフレーム)を設定する.ポーズモードで手の部分のボーンを選択し,IキーでScale値のキーフレームを挿入する(前述「Blender 5.1におけるキーフレーム操作に関する注意」を参照.以下同様).この操作により,現在のScale値が記録される.パンチを出した瞬間のキーフレームでは,手の部分のボーンを拡大し,手が大きくなるようにScaleのキーを設定する.タイムライン上で目的のフレームに移動し,Sキーを押し,数値(例:1.5で1.5倍)を入力してEnterキーを押した上で,IキーでScale値のキーフレームを挿入する.パンチを引き戻した状態のキーフレームでは,手の部分のボーンを元の大きさに戻すようにScaleのキーを設定する.タイムライン上で終了フレームに移動し,Sキー→1→Enter→IキーでScale値のキーフレームを挿入する.
トラブルシューティング
キーフレームが正しく設定されているかは,タイムライン上で該当フレームに黄色または橙色のダイヤモンド形のマーカーが表示されているかで確認する.拡大縮小が適用されていない場合は,ボーンを選択した状態でプロパティパネル(Nキー)のTransformタブを開き,Scale値が変化しているか確認する.メッシュが変形しない場合は,アーマチュアとメッシュが正しくペアレント(親子関係)されているか,メッシュにアーマチュアモディファイアが適用されているか確認する.
回転補間による逆回転問題
ボーンを1回転させるアニメーションを作成する場合,逆回転が生じることがある.
理想的な回転
0度→90度→180度→270度→360度
実際の回転
0度→90度→180度→90度→0度(逆回転)
理由
Blenderのキーフレーム補間では,回転角度を−180度から180度の範囲で正規化し,キーフレーム間の回転では最短経路を選択する.このため,0度から360度への補間では360度が0度として正規化され,システムは逆回転する経路を選択する.この現象は,Euler角(XYZ Eulerモード)での回転表現に起因する.Euler角は各軸の回転を−180度から180度の範囲で表現するため,この範囲を超える連続回転を正しく補間できない.
解決方法(2通り)
- 解決法1:回転モードをQuaternion(クォータニオン)に変更する.Quaternionは回転を4つの数値で表現する方式であり,Euler角のような角度の範囲制限がないため,360度以上の連続回転が可能となる.ボーンを選択し,プロパティパネル(Nキー)のTransformタブで回転モードを「XYZ Euler」から「Quaternion」に変更する.モード変更後は,既存のキーフレームを削除した上で新たにキーフレームを設定する必要がある.
- 解決法2:中間キーフレームを追加する.0度,90度,180度,270度,360度のように,90度ごとにキーフレームを設定する.各キーフレーム間の角度差が180度以下になり,かつ各区間で直前のキーフレームの角度を基準として次のキーフレームへの補間が計算されるため,逆回転が発生しない.
トラブルシューティング
中間キーフレームを追加しても逆回転する場合は,各キーフレーム間の角度差が180度を超えていないか確認する.Quaternionモードで問題が解決しない場合は,Rキーで回転させた後,必ずIキーでRotation値のキーフレームを挿入する.
動作確認手順
複数ボーンの一括制御確認手順(傘の開閉の例)
- 新規Blenderプロジェクトを開く.Blenderを起動し,File→New→Generalを選択する.
- 簡易的な傘モデルを作成する.Shift + Aキー→Mesh→Coneで円錐を追加する.
- 編集モードに切り替え(Tabキー),傘の中心に制御用ボーンを追加する.Shift + Aキー→Armature→Single Boneを選択し,ボーンを追加する.Gキー→Zキーで垂直方向に移動させ,傘の中心軸に配置する.
- 各リブに対応するボーンを追加する.Shift + Aキー→Armature→Single Boneを繰り返し,傘のリブの数だけボーンを追加する.各ボーンをGキー(移動)とRキー(回転)で,傘の外側に向かって放射状に配置する.
- 各リブのボーンを制御用ボーンの子として設定する.ポーズモードに切り替え(Ctrl + Tabキー),すべてのリブのボーンを選択(Shiftキーを押しながら左クリック)し,最後に制御用ボーンを選択した上でCtrl + Pキー→Keep Offsetを選択する.
- 回転用の補助ボーンを追加する.編集モードに戻り(Tabキー),Shift + Aキー→Armature→Single Boneで補助ボーンを追加し,制御用ボーンと同じ位置,またはわずかにずらした位置に配置する(Gキーで移動).
- 各リブのボーンにCopy Rotation Constraintを追加する.ポーズモードに切り替え(Ctrl + Tabキー),各リブのボーンを選択し,プロパティパネル(Nキー)→ボーン制約タブ(鎖のアイコン)→Add Bone Constraint→Copy Rotationを選択する.この操作をすべてのリブのボーンに対して繰り返す.
- Copy Rotation ConstraintのTargetに補助ボーンを設定する.各リブのボーンの制約設定で,Targetフィールド右側のスポイトアイコンをクリックし,3Dビューポート上で補助ボーンをクリックする.Influenceスライダーが1.0に設定されていることを確認する.この操作をすべてのリブのボーンに対して繰り返す.
- ポーズモードで補助ボーンを選択し,回転させる(Rキー→Zキー→数値入力,例:45と入力してEnter).すべてのリブのボーンが同時に回転することを確認する.
- アニメーションタイムラインでキーフレームを設定する.タイムライン上で1フレーム目に移動し,補助ボーンを選択した状態でIキーによりRotation値のキーフレームを挿入する(前述「Blender 5.1におけるキーフレーム操作に関する注意」を参照.以下同様).30フレーム目に移動し,Rキー→Zキー→90→Enterで90度回転させた上で,IキーでRotation値のキーフレームを挿入する.スペースキーでアニメーションを再生し,傘の開閉アニメーションが正しく動作することを確認する.
誇張アニメーション確認手順
- アーマチュアを持つモデルを用意する.新規プロジェクトでShift + Aキー→Armature→Single Boneでアーマチュアを追加し,簡単なメッシュ(例:Shift + Aキー→Mesh→Cube)を追加する.メッシュを選択し,次にアーマチュアを選択した上で,Ctrl + Pキー→With Automatic Weightsでペアレントを設定する.
- ポーズモードに切り替える.アーマチュアを選択した状態でCtrl + Tabキーを押す.
- 対象となるボーンを選択する.
- タイムライン上で開始フレーム(例:1フレーム目)に移動し,選択したボーンのScale値のキーフレームを設定する.IキーによりScale値のキーフレームを挿入する(前述「Blender 5.1におけるキーフレーム操作に関する注意」を参照.以下同様).
- 動作の最中となるフレーム(例:15フレーム目)に移動し,ボーンを拡大する.Sキーを押し,数値(例:1.5)を入力してEnterキーを押した上で,IキーでScale値のキーフレームを挿入する.
- 終了フレーム(例:30フレーム目)に移動し,ボーンを元の大きさに戻す.Sキー→1→Enter→IキーでScale値のキーフレームを挿入する.
- アニメーションを再生して動作を確認する.スペースキーを押してアニメーションを再生し,ボーンが拡大縮小することを確認する.
回転補間による逆回転問題の確認手順
- 新規Blenderプロジェクトを開く.File→New→Generalを選択する.
- 単一のボーンを持つアーマチュアを作成する.Shift + Aキー→Armature→Single Boneを選択してアーマチュアを追加する.
- ポーズモードに切り替える.アーマチュアを選択した状態でCtrl + Tabキーを押す.
- ボーンを選択する.
- タイムライン上で1フレーム目に移動し,回転キーフレームを設定する.Rキー→Zキー→0と入力してEnterキーを押した上で,IキーによりRotation値のキーフレームを挿入する(前述「Blender 5.1におけるキーフレーム操作に関する注意」を参照.以下同様).
- 60フレーム目に移動し,360度回転させる.Rキー→Zキー→360と入力してEnterキーを押した上で,IキーでRotation値のキーフレームを挿入する.
- アニメーションを再生して逆回転問題の発生を確認する.スペースキーを押してアニメーションを再生し,ボーンが途中で逆回転することを確認する.
- 解決法1を試す.ボーンを選択し,プロパティパネル(Nキー)のTransformタブを開き,Rotation Modeのドロップダウンメニューから「Quaternion」を選択する.既存のキーフレームを削除する(1フレーム目に移動してAlt + Iキーで現フレームのキーフレームを削除し,60フレーム目でも同様に削除する.全フレームの全キーフレームの一括削除はShift + Alt + I,タイムライン上で対象キーフレームを選択しての削除はXキーで行う).再度,1フレーム目でRキー→Zキー→0→Enter→IキーでRotation値のキーフレームを挿入し,60フレーム目でRキー→Zキー→360→Enter→IキーでRotation値のキーフレームを挿入する.アニメーションを再生し,正しく0度→360度に回転することを確認する.
- 解決法2を試す(解決法1の設定を元に戻してから実施する).回転モードを「XYZ Euler」に戻す.既存のキーフレームを削除する(前述のAlt + Iキー,またはXキーによる方法を用いる).1フレーム目に0度のキーフレームを設定する.15フレーム目に移動し,Rキー→Zキー→90→Enter→IキーでRotation値のキーフレームを挿入する.30フレーム目に180度,45フレーム目に270度,60フレーム目に360度のキーフレームを同様に設定する.アニメーションを再生し,逆回転せずに0度→360度に回転することを確認する.