>   >  Spineではじめる、動くイラスト制作:第5回:コンストレイントを使ったリグ設定(後編)
第5回:コンストレイントを使ったリグ設定(後編)

第5回:コンストレイントを使ったリグ設定(後編)

こんにちは。HERMIT WORKSの柴田章成です。第4回では、Spineの[トランスフォーム・コンストレイント]を使ってSDキャラクターの頭と体のリグを作成し、基本的な動きを制御できるようにしました。今回も同じSDキャラクターを使い、付属バーツにあたるポニーテール(揺れ物)と弓(武器)を制御するリグの作成方法を解説します。

ポニーテールと弓の弦には、柔らかく弧を描き変形するという共通点があります。こういう変形のためのよくある選択肢は、メッシュにバインドした複数のボーンで制御する、メッシュをそのままデフォームで動かすの2つだと思います。ただし、どちらの選択肢も制御する箇所が多くなり面倒です。そこで[パス・コンストレイント]を用いて揺れ物を簡単に動かすしくみを紹介します。

TEXT_柴田章成 / Akinari Shibata(HERMIT WORKS / Twitter:@AkinariShibata
EDIT_尾形美幸 / Miyuki Ogata(CGWORLD)

[パス・コンストレイント]を使い、ひとつのボーンで揺れ物を制御

まずはポニーテールを簡単に揺らす方法を説明していきます。アニメーション制作では、揺れを制御する場面がとても多いです。複数のボーンに動きを付け、ひとつひとつのタイミングをずらし、自然に見えるように何度も修正することも少なくありません。しかし今回説明する方法を使えば、ひとつのボーンだけで自然な揺れを制御できます。髪の毛は勿論、スカートや触手など、長い形状で、よく揺れるものに対して、汎用的に使うことが可能です。


【上図内A】はポニーテールのボーンです。最初に、前準備としてポニーテールをメッシュ化しましょう。あまりディテールが描かれていないので、細かくメッシュを割る必要はありませんが、下部にいくほど頂点の間隔を狭めると自然な動きを表現できるようになります。


メッシュを割り終えたら、[パス・コンストレイント]に登録するためのボーンを作成します。第3回ではひとつのボーンだけを[パス・コンストレイント]に設定しましたが、今回は複数のボーンを設定します。


まずはポニーテールのボーンの直下に、1本の大きなボーンをつくります【上図内A】。次に[ツリー]ビューの[Hierarchy]の下部にある[分割]ボタンを押し、[分割]ダイアログを表示させます。数値を8に設定し、[入れ子]と[フィボナッチ]のチェックボックスが選択されていないことを確認してから[OK]ボタンを押し、ボーンを8等分します【上図内B】。一度目の分割を終えたら、先端のボーンを選択し、また[分割]ボタンを押してダイアログを表示させます。今度は数値を3に設定し、[フィボナッチ]のチェックボックスを選択してから[OK]ボタンを押します【上図内C】。


するとさらにボーンが分割されますが、今度は同じ大きさではなく、下部にいくほど小さくなります【上図内A】。[フィボナッチ]のチェックボックスを選択すると、フィボナッチ数列を利用して少しずつ大きさが減衰していくように分割されます。なお、あまり大きな数字で分割すると、先端のボーンが小さくなりすぎてしまうので、3~5くらいの数値が望ましいです。揺れ物の動きは先端にいくほど細かくなるので、下部にいくほど小さくなるようにセットアップすると、とても綺麗に動くようになります。


ボーンの分割を終えたら、パスを作成します。ポニーテールのボーンを選択し、[ツリー]ビューのオプションの[新規]ボタンから[パス]を選択します。パスの頂点(アンカーポイント)は増やしすぎないように注意してください【上図内A】。パスの作成を終えたら、前述のボーンを全て選択し【上図内B】、[ツリー]ビューのオプションの[新規]ボタンから[パス・コンストレイント]を選択します【上図内C】。今回は[ミックス]の[回転]オプションを[チェーンスケール]に設定します【上図内D】。[パス・コンストレイント]には複数のボーンを登録でき、[回転]オプションを変更すると挙動がかなり変化します。[チェーンスケール]と[チェーン]はパスの形に沿ってボーンが移動する点では似ていますが、[チェーンスケール]の場合は、パスがカーブしている部分でボーンが拡大・縮小します。


ボーンがパスに沿って配置されたことを確認したら、ポニーテールのメッシュに[パス・コンストレイント]に登録した全てのボーンをバインドします【上図内A】。バインドした段階で、ある程度綺麗に動く[ウェイト]の値が設定されていると思いますが、[スムーズ]ボタンを一度押しておくと、より綺麗に動くようになります【上図内B】。[ウェイト]の[スムーズ]機能は、近隣の頂点同士の値を平均化し、全体の数値を滑らかにしてくれます。


メッシュへの[ウェイト]付けが終わったら、ポニーテールの揺れを制御するためのコントローラ用のボーンを作成します。最終的にはこのボーンの[トランスレート]と[回転]だけで、揺れのアニメーションを付けられるようになります。


まずはポニーテールのボーンを選択して、その先端にボーンを作成します。ボーンの名前に[_controller]を加えておくと判別しやすいです【上図内A】。ボーンの作成を終えたら、前述のパスを選択し、[head_hairTail(ポニーテールのボーン)]と[head_hairTail_controller(コントローラ用のボーン)]をバインドします【上図内B】。なお、バインドしてもパスには[ウェイト]の値が自動的に設定されないので、注意が必要です。


パスへのボーンのバインドを終えたら、次は[アニメ化モード]に移り、パスの[ウェイト]を調整します。コントローラを左右に動かしたときにパスが左右に動くようにすると、[パス・コンストレイント]で登録されているボーンと、ポニーテールのメッシュも追従して揺れるようになります。


まずは0フレーム目で前述のコントローラ用のボーンを左下に動かし【上図内A】、15フレーム目で右上に動かします【上図内B】。このようにコントローラを先に動かしておくと、[ウェイト]を調整しやすくなります。


次に[ウェイト]ツールを使い、パスの[ウェイト]を調整します。根元から先端にいくほど、コントローラからの[ウェイト]値を大きくすることで、パスが滑らかにカーブしながらコントローラに追従するように調整します。パスの[ウェイト]調整が完了すると、【上図】のようにポニーテールがコントローラに追従して揺れるようになります。


この時点でもかなり綺麗に動いているように見えますが、等速直線で揺れているため、まだ不自然と言えます。ここに[回転]の動きを追加すると、劇的に滑らかに動くようになります。


まず、コントローラが0フレーム目にある(左下に位置している)ときは右回転【上図内A】、15フレーム目にある(右上に位置している)ときは左回転を加えます【上図内B】。


0フレーム目のキーを30フレーム目にコピーしたら、[トランスレート]のキーを全選択し【上図内A】、[グラフ]ビューを開き【上図内B】、[ベジェカーブ]ボタン【上図内C】を押してグラフをカーブさせます。


続いて[回転]のキーを全選択し【上図内A】、同様に[グラフ]ビュー【上図内B】の[ベジェカーブ]ボタン【上図内C】を押してグラフをカーブさせた後、アンカーを下に引っ張って[U]のような形にします。このようにグラフにカーブを付けると、キーを打たなくても動きに緩急を付けられます。今回は[回転]の開始を少し遅らせることで、動きのズレを表現しました。ポニーテールのボーン自体も回転させると、より自然な動きを実現できます。


以上の設定をした上でコントローラを動かすと、ポニーテールが滑らかに揺れるようになります。


▲コントローラを使った、ポニーテールの揺れの制御のちがい。最初はコントローラを[トランスレート]させているだけ、2番目は[トランスレート]と[回転]の併用、3番目はポニーテールのボーン自体も回転させています


次ページ:
コンストレイント機能を組み合わせ、弓を引く動作を制御

その他の連載