Blenderでの動きの振り付けとアニメーション作成
【概要】
Blenderは3次元モデリング,レンダリング,アニメーション作成が可能なフリーソフトウェアである.本記事では,アニメーション作成でありがちな失敗例として,複数ボーンの制御の煩雑さ,動作の表現力不足,回転補間による逆回転を取り上げ,それぞれの解決方法と動作確認手順を示す.
【目次】
【サイト内の関連情報】
前準備
Blenderは,3次元コンピュータグラフィックス・アニメーションソフトウェアである.3次元モデルの編集,レンダリング,光源やカメラ等の設定による3次元コンピュータグラフィックス・アニメーション作成機能がある.
メニューの日本語化を行っておくと使いやすい.「編集(Edit)→プリファレンス(Preferences)→インターフェイス(Interface)→翻訳(Translation)」で設定できる.
キーフレーム操作(Blender 5.2)
Blender 5.2では,3DビューポートでIキーを押すと,環境設定のDefault Key Channels(既定でキー化する項目)に基づきキーフレームが挿入される.Location,Rotation,Scaleなどを選ぶメニューは既定では表示されない.特定の値だけをキー化するには,次のいずれかの方法を用いる.
- サイドバー(Nキー)の「アイテム」タブで,対象の数値欄(Scale,Rotation等)を右クリックし,「キーフレームを挿入」を選ぶ.マウスカーソルを数値欄に置いてIキーを押しても同じ結果になる.
- 環境設定(Edit→Preferences)の「Animation」で「Pie Menu on Drag」を有効にする.以降,Iキーを押したままマウスを動かすと,Location,Rotation,Scale,Availableを選ぶパイメニューが表示される.
キーフレームの削除は,現在のフレームのものがAlt + I,選択オブジェクト・ボーンの全キーフレームがShift + Alt + Iである.タイムラインでキーフレームを選択してXキーで削除することもできる.
ありがちな失敗例
複数ボーンの一括制御に関する問題
傘の開閉を制御するボーン(3Dモデルの骨格として機能し,メッシュの変形を制御する要素)の数が多い場合,1つずつキーフレームを設定すると手間がかかる.
解決方法
複数のボーンの回転を一括で指定するための制御用ボーンを作成する.
具体的な操作
傘の各リブ(骨)を制御するボーンに対して,親子関係による階層構造を作る.傘の中心に制御用の親ボーンを置き,各リブのボーンをその子にする.さらに回転を指定する補助ボーンを追加し,各リブのボーンにCopy Rotation Constraint(他のボーンの回転値を複製して適用する制約機能)を設定する.
手順は次のとおりである.まず,傘の中心軸に制御用ボーンを作る.オブジェクトモードでShift + Aキーを押し,Armature,Single Boneの順に選ぶ.これにより,1本のボーンを持つアーマチュア(骨格の集合を扱うオブジェクト)が作られる.作ったボーンをGキー(移動),Zキー(Z軸方向に限定)で所定の位置に動かす.
次に,各リブを制御するボーンを作る.アーマチュアを選択した状態でTabキーを押して編集モードに切り替え,Shift + Aキー→Single Boneを繰り返して,傘のリブの数だけボーンを同じアーマチュア内に追加し,所定の位置と角度に配置する.続いて,同じ編集モードのまま,すべてのリブのボーンを選択(Shiftキーを押しながら左クリック)し,最後に制御用ボーンを選択してCtrl + Pキー→Keep Offsetを選ぶ.これで親子関係が設定される(ボーン同士の親子関係の設定は編集モードで行う).
次に,回転用の補助ボーンを追加する.編集モードでShift + Aキー→Single Boneを実行し,制御用ボーンと同じ位置,またはわずかにずらした位置にGキーで配置する.
続いて,各リブのボーンにCopy Rotation Constraintを設定する.3Dビューポート左上のモードセレクターで「ポーズモード」を選び,各リブのボーンを選択し,プロパティエディターのボーンコンストレイントプロパティタブ(骨と鎖のアイコン)を開き,Add Bone Constraintボタンをクリックし,Copy Rotationを選ぶ.そして,TargetにアーマチュアオブジェクトをExit設定し,その下のBone欄で補助ボーンの名前を選ぶ.Influenceは1.0とする.
この設定により,補助ボーンを回転させると,すべてのリブのボーンが同じ角度だけ回転し,傘の開閉動作を一括で指定できる.また,制御用ボーンを動かせば傘全体が移動する.
トラブルシューティング
親子関係は,アウトライナーでボーンの階層構造を確認する.制約の動作は,ポーズモードで補助ボーンを選択し,Rキー→Zキー→数値入力で回転させ,すべてのリブのボーンが同時に回転するかどうかで確認する.回転しない場合は,Copy Rotation ConstraintのTarget(アーマチュア)とBone(補助ボーン名)が設定されているか,Influenceが1.0かを確認する.
動作の表現力に関する問題
パンチの動作などで,何の動作か分かりにくい,または迫力が不足する場合がある.
解決方法
ボーンの拡大縮小により,モデルの部分的な大きさを変えて誇張表現を行う.
具体的な操作
パンチを出す前のフレームで,手の部分のボーンのScale(拡大縮小の値)にキーフレームを設定する.ポーズモードで手の部分のボーンを選択し,開始フレームでIキーを押してキーフレームを挿入する(Scale値だけを対象にするには,サイドバー(Nキー)の「アイテム」タブでScaleの数値欄を右クリックし,「キーフレームを挿入」を選ぶ).
パンチを出した瞬間のフレームでは,手の部分のボーンを拡大する.タイムライン上で目的のフレームに移動し,Sキーを押し,数値(例:1.5で1.5倍)を入力してEnterキーを押し,Iキーを押してキーフレームを挿入する(Scale値だけを対象にするには,サイドバー(Nキー)の「アイテム」タブでScaleの数値欄を右クリックし,「キーフレームを挿入」を選ぶ).
パンチを引き戻したフレームでは,元の大きさに戻す.終了フレームに移動し,Sキー→1→Enterキーと操作し,Iキーを押してキーフレームを挿入する(Scale値だけを対象にするには,サイドバー(Nキー)の「アイテム」タブでScaleの数値欄を右クリックし,「キーフレームを挿入」を選ぶ).
トラブルシューティング
キーフレームは,タイムラインの該当フレームにダイヤモンド形のマーカーが表示されているかで確認する.拡大縮小が反映されない場合は,ボーンを選択した状態でサイドバー(Nキー)の「アイテム」タブを開き,Scale値が変化しているかを確認する.メッシュが変形しない場合は,アーマチュアとメッシュがペアレント(親子関係)されているか,メッシュにアーマチュアモディファイアが付いているかを確認する.
回転補間による逆回転問題
ボーンを1回転させるアニメーションで,意図した向きに回転しないことがある.
理想的な回転
0度→90度→180度→270度→360度
実際の回転
0度→−45度→−90度(逆回転.270度を指定した場合)
理由
ボーンの既定の回転モードはQuaternion(クォータニオン)である.Blender公式マニュアルによれば,Quaternionモードの補間は2つのキーフレームの姿勢間で常に最短経路をとる.そのため,角度差が180度を超える回転は指定どおりに補間されない.270度を指定すると逆方向に90度回転し,360度を指定すると始点と同じ姿勢になるため回転が生じない.回転し続ける動きを作るには,180度以内の間隔で中間キーフレームを置く必要がある.
解決方法(2通り)
- 解決法1:回転モードをEuler角(XYZ Eulerなど)に変更する.サイドバー(Nキー)の「アイテム」タブのRotation Modeで変更し,同じタブのRotationの数値欄に目標角度(0度,360度など)を直接入力してEnterキーで確定し,キーフレームを挿入する.Euler角では360度という値がそのまま保存されるため,2つのキーフレームで1回転を表現できる.
- 解決法2:Quaternionモードのまま中間キーフレームを追加する.0度,90度,180度,270度,360度のように90度ごとにキーフレームを設定し,各区間の角度差を180度以下に保つ.
トラブルシューティング
意図どおりに回転しない場合は,サイドバー(Nキー)の「アイテム」タブでRotation Modeを確認する.Quaternionモードのときは,各キーフレーム間の角度差が180度を超えていないかを確認する.Euler角モードのときは,Rotation Zに保存された値が360度になっているかを確認する.
動作確認手順
複数ボーンの一括制御確認手順(傘の開閉の例)
- 新規Blenderプロジェクトを開く.Blenderを起動し,File→New→Generalを選ぶ.
- 簡易的な傘モデルを作る.Shift + Aキー→Mesh→Coneで円錐を追加する.
- 傘の中心に制御用ボーンを追加する.オブジェクトモードでShift + Aキー→Armature→Single Boneを選ぶ.これにより,1本のボーンを持つアーマチュアが作られる.Gキー→Zキーで垂直方向に動かし,傘の中心軸に配置する.
- 各リブに対応するボーンを追加する.アーマチュアを選択した状態でTabキーを押して編集モードに切り替え,Shift + Aキー→Single Boneを繰り返して,傘のリブの数だけボーンを同じアーマチュア内に追加する.各ボーンをGキー(移動)とRキー(回転)で,傘の外側に向かって放射状に配置する.
- 各リブのボーンを制御用ボーンの子にする.編集モードのまま,すべてのリブのボーンを選択(Shiftキーを押しながら左クリック)し,最後に制御用ボーンを選択してCtrl + Pキー→Keep Offsetを選ぶ.
- 回転用の補助ボーンを追加する.編集モードでShift + Aキー→Single Boneを実行し,制御用ボーンと同じ位置,またはわずかにずらした位置にGキーで配置する.
- 各リブのボーンにCopy Rotation Constraintを追加する.3Dビューポート左上のモードセレクターで「ポーズモード」を選び,リブのボーンを選択し,プロパティエディターのボーンコンストレイントプロパティタブ(骨と鎖のアイコン)→Add Bone Constraint→Copy Rotationを選ぶ.この操作をすべてのリブのボーンで繰り返す.
- 各リブのボーンのCopy Rotation Constraintで,Targetにアーマチュアオブジェクトを設定し,その下のBone欄で補助ボーンの名前を選ぶ.Influenceが1.0であることを確認する.この操作をすべてのリブのボーンで繰り返す.
- ポーズモードで補助ボーンを選択し,Rキー→Zキー→45→Enterキーと操作する.すべてのリブのボーンが同時に回転することを確認する.
- キーフレームを設定する.タイムラインで1フレーム目に移動し,補助ボーンを選択した状態でIキーを押してキーフレームを挿入する(Rotation値だけを対象にするには,サイドバー(Nキー)の「アイテム」タブでRotationの数値欄を右クリックし,「キーフレームを挿入」を選ぶ).30フレーム目に移動し,Rキー→Zキー→90→Enterキーで回転させ,Iキーを押してキーフレームを挿入する(Rotation値だけを対象にするには,サイドバー(Nキー)の「アイテム」タブでRotationの数値欄を右クリックし,「キーフレームを挿入」を選ぶ).スペースキーで再生し,傘の開閉が動作することを確認する.
誇張アニメーション確認手順
- アーマチュアを持つモデルを用意する.新規プロジェクトでShift + Aキー→Armature→Single Boneでアーマチュアを追加し,Shift + Aキー→Mesh→Cubeでメッシュを追加する.メッシュを選択し,次にShiftキーを押しながらアーマチュアを選択して,Ctrl + Pキー→Armature Deform→With Automatic Weightsを選ぶ.
- アーマチュアを選択し,3Dビューポート左上のモードセレクターで「ポーズモード」を選ぶ.
- 対象となるボーンを選択する.
- タイムラインで開始フレーム(例:1フレーム目)に移動し,Iキーを押してキーフレームを挿入する(Scale値だけを対象にするには,サイドバー(Nキー)の「アイテム」タブでScaleの数値欄を右クリックし,「キーフレームを挿入」を選ぶ).
- 動作の最中のフレーム(例:15フレーム目)に移動し,Sキーを押し,1.5と入力してEnterキーを押し,Iキーを押してキーフレームを挿入する(Scale値だけを対象にするには,サイドバー(Nキー)の「アイテム」タブでScaleの数値欄を右クリックし,「キーフレームを挿入」を選ぶ).
- 終了フレーム(例:30フレーム目)に移動し,Sキー→1→Enterキーで元の大きさに戻し,Iキーを押してキーフレームを挿入する(Scale値だけを対象にするには,サイドバー(Nキー)の「アイテム」タブでScaleの数値欄を右クリックし,「キーフレームを挿入」を選ぶ).
- スペースキーで再生し,ボーンが拡大縮小することを確認する.
回転補間による逆回転問題の確認手順
- 新規Blenderプロジェクトを開く.File→New→Generalを選ぶ.
- Shift + Aキー→Armature→Single Boneでアーマチュアを追加する.
- アーマチュアを選択し,3Dビューポート左上のモードセレクターで「ポーズモード」を選ぶ.
- ボーンを選択する.回転モードは既定のQuaternionのままにする.
- タイムラインで1フレーム目に移動し,Iキーを押してキーフレームを挿入する(Rotation値だけを対象にするには,サイドバー(Nキー)の「アイテム」タブでRotationの数値欄を右クリックし,「キーフレームを挿入」を選ぶ).
- 60フレーム目に移動し,Rキー→Zキー→270→Enterキーと操作し,Iキーを押してキーフレームを挿入する(Rotation値だけを対象にするには,サイドバー(Nキー)の「アイテム」タブでRotationの数値欄を右クリックし,「キーフレームを挿入」を選ぶ).
- スペースキーで再生し,270度ではなく逆方向に90度回転することを確認する.
- 解決法1を試す.1フレーム目でAlt + Iキー,60フレーム目でもAlt + Iキーを押してキーフレームを削除する.サイドバー(Nキー)の「アイテム」タブでRotation Modeを「XYZ Euler」に変更する.1フレーム目でRotation Zの数値欄に0と直接入力してEnterキーを押し,同じ数値欄を右クリックして「キーフレームを挿入」を選ぶ.60フレーム目に移動し,Rotation Zの数値欄に360と直接入力してEnterキーを押し,同じ数値欄を右クリックして「キーフレームを挿入」を選ぶ.スペースキーで再生し,0度から360度へ連続して1回転することを確認する.
- 解決法2を試す.1フレーム目と60フレーム目でそれぞれAlt + Iキーを押してキーフレームを削除する.サイドバー(Nキー)の「アイテム」タブでRotation Modeを「Quaternion」に戻す.1フレーム目でIキーを押してRotationのキーフレームを挿入する.15フレーム目に移動し,Rキー→Zキー→90→Enterキーと操作してIキーを押してキーフレームを挿入する.同様に,30フレーム目に180度,45フレーム目に270度,60フレーム目に360度のキーフレームを設定する.スペースキーで再生し,0度から360度へ1回転することを確認する.