(当記事では、MechaStudioの拡張機能である拘束(コンストレイント)の作成機能を使用しています。)
目次
両手で銃を持つアニメーション
上半身についても、チュートリアル「3-1 かんたん歩行アニメーション」のように、アニメーション キーでで歩行のアニメーションを作成することができます。しかし今回は、アニメーション キーを使用せず、コントローラーに拘束をセットすることで、キャラクターが両手で銃を持つアニメーションを作成します。
今回からは、各軸方向でグリッドの位置を参考にしないので、「ファイル」メニューの「シーン設定」ダイアログの「グリッド」の項目で「Y」方向以外のグリッドをOFFにしておきます。
また、ゴーストも参考にしないので、「表示」メニューの「ウィンドウ」の「シーン ウィンドウ」の「ゴーストA」をOFFにしておきます。
銃のモデルの配置
「ファイル」メニューの「シーンにインポート」をクリックして、銃のモデルである「m11.mqo」を読み込みます。以下のように原点位置に銃のメッシュ「m11」とライトが読み込まれました。
この銃のモデルは「のぼり坂一丁目」様で提供されている「swatっぽいの+イングラムM11っぽいの」の一部分であり、 クリエイティブ・コモンズ 表示 4.0 国際 ライセンスの下に提供されています。
Copyright (C) since 2007 26℃, All rights reserved.
「m11」(銃)を全身のルートである「WaistBox」(腰)コントローラーの子の階層に移動し、その他のオブジェクトは削除します。
「m11」(銃)を移動 ツール(T)で胸の右前方あたりに配置します。
(sakura_rigged2_motion1_6.toy)
手首のコントローラーの配置
移動 ツール(T)、回転 ツール(R)で「RightWristBox」(右手首)コントローラーを操作して、右手が銃のグリップをつかむような位置に配置します。
「LeftWristBox」(左手首)コントローラーを操作して、左手を右手に添えるような位置に配置します。
「LeftShoulderBox」(左肩)コントローラーをY軸方向に回転させて、左肘が外向きに曲がるようにします。
※「LeftShoulderBox」(左肩)コントローラーの子である「LeftShoulderPoleVector」(左肩極ベクトル)が外側に移動することによって、左腕のIKのねじれ方向が変化します。
両手首を銃に拘束
ここで、両手首のコントローラーが銃に追従するように拘束をセットします。ツール バーで「ペアレント拘束ツール」をクリックして、
ツール ウィンドウ(Ctrl+T)の「回転の差分をオフセットにする」、「位置の差分をオフセットにする」をONにします。拘束されるオブジェクトとの回転や位置の違いオフセット値とすることで、拘束作成時の回転や位置を維持することができます。
①「RightWristBox」(右手首)コントローラー、②「m11」(銃)オブジェクトをクリックしてペアレント拘束を作成します。
さらに、③「LeftWristBox」(左手首)コントローラー、④「m11」(銃)オブジェクトをクリックしてペアレイント拘束を作成します。
これらの拘束によって、「m11」(銃)オブジェクトを動かすと、両手首が追従して動くようになりました。
(sakura_rigged2_motion1_7.toy)
銃のターゲット用オブジェクト
銃のターゲット用のオブジェクトを作成します。
キャラクターの前方「180」、高さ「110」くらいのところにヌル オブジェクト「TargetPos」を作成し、
全体の親である「Base」(ベース)コントローラーの子の階層に配置します。
銃と頭をターゲットにエイム拘束
銃と頭がターゲット用のオブジェクトの方向を向くように拘束をセットします。ツール バーで「エイム拘束ツール」をクリックして、
ツール ウィンドウ(Ctrl+T)の「回転の差分をオフセットにする」をONにします。拘束されるオブジェクトとの回転の違いオフセット値とすることで、拘束作成時の回転を維持することができます。
①「HeadBox」(頭)コントローラー、②「TargetPos」(ターゲット位置)オブジェクトをクリックしてエイム拘束を作成します。
さらに、③「m11」(銃)オブジェクト、④「TargetPos」(ターゲット位置)オブジェクトをクリックしてエイム拘束を作成します。
加えて、「m11」(銃)オブジェクトと「HeadBox」(頭)コントローラーの両方について、オブジェクト ウィンドウ(Ctrl+Q)の「エイム拘束」タブの「オフセット」を「0、90、0」に修正します。これによって、デフォルトのエイム方向である「1、0、0」(X軸方向)をY軸について「90」度回転させた方向、つまりZ軸方向をエイム拘束のターゲットに向けることができます。
これらの拘束によって、「TargetPos」(ターゲット位置)オブジェクトを動かすと、銃と頭がそちらを向いて回転するようになりました。
アニメーションを再生(Alt+Space/Ctrl+Space)してみると、
アニメーションのループ対応
CGやゲームにおいて歩行アニメーションがループ再生される場合、最初と最後のキー フレームのモーションが滑らかにつながっている必要があります。
作成した歩行アニメーションでは、最初の「1」フレームと最後の「41」フレームのキーの「値」は一致していますが、スプライン補間の最初と最後であるため、その「傾き」は一致していません。例えば、「LeftFootBox」(左足首)コントローラーのZ軸方向の移動のアニメーション キーは以下のようになっており、「1」フレームと「41」フレーム(黄色線で囲まれた箇所)のキーの「値」は一致していますが、「傾き」(つまり速度)は一致していません。
なので、アニメーションをループ再生してみると、最終フレームから先頭フレームに戻った瞬間に、左足首の動きに「カクッ」とした不連続性が見られます。
グラフ ウィンドウ(Ctrl+G)では、このようなキー フレームの「傾き」を個別に修正することができます。しかし今回は別の方法として、アニメーションの再生範囲外の前後にキー フレームを一つずつ追加する方法をとります。再生範囲の前の「-11」フレームに「31」フレームと同じ姿勢のキー、再生範囲の後の「51」フレームに「11」フレームと同じ姿勢のキー を追加しました。すると、以下のように「1」フレームと「41」フレームの「傾き」を一致させることができました。
アニメーションを再生(Alt+Space/Ctrl+Space)してみると、