Blender でボールが跳ねるアニメーションのリグ

カテゴリ:blender

アニメーションの本にはボールが地面にぶつかるときに潰れる, とか跳ねる方向にストレッチすると言ったデフォルメがよく紹介されている. 手書きのアニメならばそれはすぐにできる. しかし 3DCG でやるやり方はなかなか見つからない.

動作デモ
動作デモ
リグの動作風景
リグの動作風景

この記事では Empty や Constarint を使った,ボーンを使わないアニメーションのやり方を紹介する.

ボールのリグ

どうやってボールを変形させるのか

Shape key やボーン,Lattice 等メッシュを変形させる方法はいくつもある; 今回はスケーリング用 Empty オブジェクトと Maintain Volume とでボールを変形させる.

スケールポイント

どこからスケールさせるかは重要だ. ボールの中心でスケールさせると,スケールさせた後に接地するよう毎回修正しなければならない. しかしボールの接地ポイントからスケールさせれば,スケールしてもボールは接地したままだ.

スケールポイントの違い
スケールポイントが地面(左)と
スケールポイントが重心(右)

球と Empty の作成

球を作成しその接地位置に Empty を作成する.Empty の名前を ball とする. 地面の位置は 0 がよくつかわれるので球の接地位置を 0 にする. デフォルトの球ならば z を 1 にするだけだ.

球の位置
球の位置

スケールポイントを指定してスケールするのには親子づけがよくつかわれる; しかし今回は親子づけではなく Rotation を無効にした Child of を使う. 親子づけだと,回転するとき Empty 回転軸周りに回転するのが不都合だからだ.

親子づけ
親子づけ時の回転
Child of
回転なしの Child of
Child of の設定
Child of の設定
ここまでの動作デモ
Child of の動作デモ

体積の保存

オブジェクトをスケーリングによってアニメーションさせるときには体積を保存しなければならない. 体積を保存せずに大きくスケーリングすると巨大化したように見える; 逆に小さくスケーリングするとしぼんだように見える. 体積を保存するために Maintain Volume をつかう.

球に Maintain Volume をつける. 地面に当たった時に潰れるアニメーションと, 地面から跳ね返ったときに伸びるアニメーションとは両方とも Z 方向のスケーリングで実現できる.

Maintain Volume の設定
Maintain Volume の設定
Maintain Volume の動作デモ
Maintain Volume の動作デモ

なぜ回転が必要なのか

ボールの軌道に沿ってストレッチしていないと不自然だからだ. 以下のアニメーションを比較してみればわかる.

回転なし
回転なし
回転あり
回転あり

回転には Copy Rotation をつかう. Copy Rotation は回転量しかコピーしないので重心回りに回転させられる. Copy Rotation は Child of の後でなければならない.

copy rotation の設定
copy rotation の設定
rotation のデモ
回転のデモ

ポリゴンオブジェクトの設定

ポリゴンオブジェクトの要素をロックし選択できなくすることで,誤って操作したり,キーを打ったりしないようにする.

要素のロック
球のロック

.blend ファイルダウンロード

関連記事
Blender 記事の目次