Blenderでの動きの振り付けとアニメーション作成

概要

Blenderは3次元モデリング,レンダリング,アニメーション作成が可能なフリーソフトウェアである.本記事では,アニメーション作成時にありがちな失敗例として,複数ボーンの制御の煩雑さ,動作の表現力不足,回転補間による逆回転問題を取り上げ,それぞれの解決方法と具体的な動作確認手順を解説する.

目次

サイト内の関連情報

前準備

Blenderは,3次元コンピュータグラフィックス・アニメーションソフトウェアである.3次元モデルの編集,レンダリング,光源やカメラ等の設定による3次元コンピュータグラフィックス・アニメーション作成機能がある.

メニューの日本語化を行っておくと使いやすい.「編集(Edit)→プリファレンス(Preferences)→インターフェイス(Interface)→翻訳(Translation)」で設定できる.

Blender 5.2におけるキーフレーム操作に関する注意

Blender 5.2の既定設定では,3Dビューポート上でIキーを押すと,環境設定の「Default Key Channels」に基づきキーフレームが自動挿入される.従来の「Insert Keyframe Menu」(Location/Rotation/Scale等を選択するメニュー)は既定では表示されない.本記事の手順でメニューから項目を選択する操作を行うには,次のいずれかの方法を用いる.

本記事中の「Iキー→Scale」「Iキー→Rotation」等の記述は,上記いずれかの方法により対応する項目を選択する操作を指す.

ありがちな失敗例

複数ボーンの一括制御に関する問題

傘の開閉を制御するためのボーン(3Dモデルの骨格として機能し,メッシュの変形を制御する要素)の数が多い場合,アニメーションを作成する際に1つずつ設定すると時間を要する.

解決方法

傘の開閉を制御するボーンの動きを一括で行うための制御用のボーンを作成する.

具体的な操作

傘の各リブ(骨)を制御するボーンに対して,親子関係を利用した階層構造を構築する.具体的には,傘の中心に制御用の親ボーンを作成し,各リブのボーンをその子として設定する.さらに,各リブのボーンの回転を制御する補助ボーンを追加し,Copy Rotation Constraint(他のボーンの回転値を複製して適用する制約機能)を設定する.

手順は次のとおりである.まず,傘の中心軸に制御用ボーンを作成する.オブジェクトモードでShift + Aキーを押し,表示されるメニューからArmature,Single Boneの順に選択する.これにより,1本のボーンを持つアーマチュア(骨格の集合を扱うオブジェクト)が作成される.作成したボーンを所定の位置に移動させる(Gキーで移動,ZキーでZ軸方向に限定).次に,各リブを制御するボーンを作成する.作成したアーマチュアを選択した状態でTabキーを押し,編集モードに切り替える.編集モードでShift + Aキー→Single Boneを繰り返し,傘のリブの数だけボーンを同じアーマチュア内に追加し,所定の位置と角度に配置する.続いて,各リブのボーンを制御用ボーンの子として設定する.ポーズモードに切り替え(Ctrl + Tabキー),すべてのリブのボーンを選択(Shiftキーを押しながら左クリック)し,最後に制御用ボーンを選択した上でCtrl + Pキー→Keep Offsetを選択し,親子関係を設定する.

次に,回転用の補助ボーンを追加する.編集モードに戻り(Tabキー),Shift + Aキー→Single Boneで補助ボーンを追加し,制御用ボーンと同じ位置,またはわずかにずらした位置に配置する(Gキーで移動).続いて,各リブのボーンにCopy Rotation Constraintを設定する.ポーズモードで各リブのボーンを選択し,プロパティエディターのボーンコンストレイントプロパティタブ(鎖のアイコン)を開き,Add Bone Constraintボタンをクリックし,表示されるメニューからCopy Rotationを選択する.最後に,Copy Rotation ConstraintのTargetに補助ボーンを設定する.Targetフィールド右側のスポイトアイコンをクリックし,3Dビューポート上で補助ボーンをクリックして選択する.

この設定により,補助ボーンを回転させると,すべてのリブのボーンが同じ角度だけ回転し,傘の開閉動作を一括制御できる.また,制御用ボーンの位置を動かせば,傘全体の位置も同時に移動する.

トラブルシューティング

親子関係が正しく設定されているかは,アウトライナーでボーンの階層構造を確認する.制約が正しく機能しているかは,ポーズモードで補助ボーンを選択し,Rキー→Zキー→数値入力で回転させ,すべてのリブのボーンが同時に回転することを確認する.回転しない場合は,Copy Rotation ConstraintのInfluenceスライダーが1.0に設定されているか確認する.

動作の表現力に関する問題

パンチの動作などにおいて,何の動作か分かりにくい,または迫力が不足する場合がある.

解決方法

ボーンの拡大縮小により,モデルの部分的な大きさを変えるアニメーションで誇張表現する.

具体的な操作

パンチを出す前のキーフレームで,手の部分のボーンを選択し,Scaleキーフレーム(拡大縮小の値を記録するキーフレーム)を設定する.ポーズモードで手の部分のボーンを選択し,IキーでScale値のキーフレームを挿入する(前述「Blender 5.2におけるキーフレーム操作に関する注意」を参照.以下同様).この操作により,現在のScale値が記録される.パンチを出した瞬間のキーフレームでは,手の部分のボーンを拡大し,手が大きくなるようにScaleのキーを設定する.タイムライン上で目的のフレームに移動し,Sキーを押し,数値(例:1.5で1.5倍)を入力してEnterキーを押した上で,IキーでScale値のキーフレームを挿入する.パンチを引き戻した状態のキーフレームでは,手の部分のボーンを元の大きさに戻すようにScaleのキーを設定する.タイムライン上で終了フレームに移動し,Sキー→1→EnterIキーでScale値のキーフレームを挿入する.

トラブルシューティング

キーフレームが正しく設定されているかは,タイムライン上で該当フレームに黄色または橙色のダイヤモンド形のマーカーが表示されているかで確認する.拡大縮小が適用されていない場合は,ボーンを選択した状態でサイドバー(Nキー)の「アイテム」タブを開き,Scale値が変化しているか確認する.メッシュが変形しない場合は,アーマチュアとメッシュが正しくペアレント(親子関係)されているか,メッシュにアーマチュアモディファイアが適用されているか確認する.

回転補間による逆回転問題

ボーンを1回転させるアニメーションを作成する場合,逆回転が生じることがある.

理想的な回転

0度→90度→180度→270度→360度

実際の回転

0度→90度→180度→90度→0度(逆回転)

理由

この現象は,回転の対話的な操作(Rキーによるドラッグや,ドラッグ中の数値入力)で角度を確定した場合に生じやすい.対話的な回転操作では,確定時の角度が一定の範囲に正規化されることがあり,各キーフレームに保存される値が意図した角度(例:360度)ではなく,見た目には同じ姿勢に対応する別の数値(例:0度)になってしまうことがある.この結果,次のキーフレームへの補間では,正規化された値どうしの最短経路が選択され,逆回転が生じる.

回転モードがQuaternion(クォータニオン)の場合は,さらに注意が必要である.Blender公式マニュアルによれば,Quaternionモードでの補間は常に2つの姿勢間の最短経路をとり,180度を超える回転を1区間で正しく補間することができない.したがって,Quaternionモードで360度の回転をキーフレームだけで表現するには,180度以内の間隔でキーフレームを追加する必要がある.

解決方法(2通り)

トラブルシューティング

中間キーフレームを追加しても逆回転する場合は,各キーフレーム間の角度差が180度を超えていないか確認する.Euler角モードで解決法1を行っても逆回転する場合は,値をマウスドラッグのRキー操作で確定していないか確認し,数値欄への直接入力に切り替える.

動作確認手順

複数ボーンの一括制御確認手順(傘の開閉の例)

  1. 新規Blenderプロジェクトを開く.Blenderを起動し,File→New→Generalを選択する.
  2. 簡易的な傘モデルを作成する.Shift + Aキー→Mesh→Coneで円錐を追加する.
  3. 傘の中心に制御用ボーンを追加する.オブジェクトモードでShift + Aキー→Armature→Single Boneを選択し,ボーンを追加する.これにより,1本のボーンを持つアーマチュアが作成される.Gキー→Zキーで垂直方向に移動させ,傘の中心軸に配置する.
  4. 各リブに対応するボーンを追加する.追加したアーマチュアを選択した状態でTabキーを押し,編集モードに切り替える.編集モードでShift + Aキー→Single Boneを繰り返し,傘のリブの数だけボーンを同じアーマチュア内に追加する.各ボーンをGキー(移動)とRキー(回転)で,傘の外側に向かって放射状に配置する.
  5. 各リブのボーンを制御用ボーンの子として設定する.ポーズモードに切り替え(Ctrl + Tabキー),すべてのリブのボーンを選択(Shiftキーを押しながら左クリック)し,最後に制御用ボーンを選択した上でCtrl + Pキー→Keep Offsetを選択する.
  6. 回転用の補助ボーンを追加する.編集モードに戻り(Tabキー),Shift + Aキー→Single Boneで補助ボーンを追加し,制御用ボーンと同じ位置,またはわずかにずらした位置に配置する(Gキーで移動).
  7. 各リブのボーンにCopy Rotation Constraintを追加する.ポーズモードに切り替え(Ctrl + Tabキー),各リブのボーンを選択し,プロパティエディターのボーンコンストレイントプロパティタブ(鎖のアイコン)→Add Bone Constraint→Copy Rotationを選択する.この操作をすべてのリブのボーンに対して繰り返す.
  8. Copy Rotation ConstraintのTargetに補助ボーンを設定する.各リブのボーンの制約設定で,Targetフィールド右側のスポイトアイコンをクリックし,3Dビューポート上で補助ボーンをクリックする.Influenceスライダーが1.0に設定されていることを確認する.この操作をすべてのリブのボーンに対して繰り返す.
  9. ポーズモードで補助ボーンを選択し,回転させる(Rキー→Zキー→数値入力,例:45と入力してEnter).すべてのリブのボーンが同時に回転することを確認する.
  10. アニメーションタイムラインでキーフレームを設定する.タイムライン上で1フレーム目に移動し,補助ボーンを選択した状態でIキーによりRotation値のキーフレームを挿入する(前述「Blender 5.2におけるキーフレーム操作に関する注意」を参照.以下同様).30フレーム目に移動し,Rキー→Zキー→90→Enterで90度回転させた上で,IキーでRotation値のキーフレームを挿入する.スペースキーでアニメーションを再生し,傘の開閉アニメーションが正しく動作することを確認する.

誇張アニメーション確認手順

  1. アーマチュアを持つモデルを用意する.新規プロジェクトでShift + Aキー→Armature→Single Boneでアーマチュアを追加し,簡単なメッシュ(例:Shift + Aキー→Mesh→Cube)を追加する.メッシュを選択し,次にアーマチュアを選択した上で,Ctrl + Pキー→With Automatic Weightsでペアレントを設定する.
  2. ポーズモードに切り替える.アーマチュアを選択した状態でCtrl + Tabキーを押す.
  3. 対象となるボーンを選択する.
  4. タイムライン上で開始フレーム(例:1フレーム目)に移動し,選択したボーンのScale値のキーフレームを設定する.IキーによりScale値のキーフレームを挿入する(前述「Blender 5.2におけるキーフレーム操作に関する注意」を参照.以下同様).
  5. 動作の最中となるフレーム(例:15フレーム目)に移動し,ボーンを拡大する.Sキーを押し,数値(例:1.5)を入力してEnterキーを押した上で,IキーでScale値のキーフレームを挿入する.
  6. 終了フレーム(例:30フレーム目)に移動し,ボーンを元の大きさに戻す.Sキー→1→EnterIキーでScale値のキーフレームを挿入する.
  7. アニメーションを再生して動作を確認する.スペースキーを押してアニメーションを再生し,ボーンが拡大縮小することを確認する.

回転補間による逆回転問題の確認手順

  1. 新規Blenderプロジェクトを開く.File→New→Generalを選択する.
  2. 単一のボーンを持つアーマチュアを作成する.Shift + Aキー→Armature→Single Boneを選択してアーマチュアを追加する.
  3. ポーズモードに切り替える.アーマチュアを選択した状態でCtrl + Tabキーを押す.
  4. ボーンを選択する.
  5. タイムライン上で1フレーム目に移動し,Rキー→Zキー→0と入力してEnterキーを押した上で,IキーによりRotation値のキーフレームを挿入する(前述「Blender 5.2におけるキーフレーム操作に関する注意」を参照.以下同様).
  6. 60フレーム目に移動し,Rキー→Zキー→360と入力してEnterキーを押した上で,IキーでRotation値のキーフレームを挿入する.
  7. アニメーションを再生して逆回転問題の発生を確認する.スペースキーを押してアニメーションを再生し,ボーンが途中で逆回転することを確認する.
  8. 解決法1を試す(Euler角モードを保ったまま,数値欄に直接入力する).既存のキーフレームを削除する(1フレーム目に移動してAlt + Iキーで現フレームのキーフレームを削除し,60フレーム目でも同様に削除する.全フレームの全キーフレームの一括削除はShift + Alt + I,タイムライン上で対象キーフレームを選択しての削除はXキーで行う).1フレーム目でサイドバー(Nキー)の「アイテム」タブを開き,Rotation Zの数値欄をクリックして「0」と直接入力しEnterキーを押した上で,IキーでRotation値のキーフレームを挿入する.60フレーム目に移動し,同様にRotation Zの数値欄に「360」と直接入力してEnterキーを押し,IキーでRotation値のキーフレームを挿入する.アニメーションを再生し,逆回転せずに0度→360度へ連続して回転することを確認する.
  9. 解決法2を試す(解決法1の設定を元に戻してから実施する).既存のキーフレームを削除する(前述のAlt + Iキー,またはXキーによる方法を用いる).ボーンを選択し,サイドバー(Nキー)の「アイテム」タブでRotation Modeを「Quaternion」に変更する.1フレーム目に0度のキーフレームを設定する.15フレーム目に移動し,Rキー→Zキー→90→EnterIキーでRotation値のキーフレームを挿入する.30フレーム目に180度,45フレーム目に270度,60フレーム目に360度のキーフレームを同様に設定する.アニメーションを再生し,逆回転せずに0度→360度に回転することを確認する.