2009年01月20日

モーションのコツ

IRCとかブログとかを見ていてモーションをつけてみて何処を直していいのかわからないって人が多いように感じたので、 モーションのコツというかモーションをつける時に気にかけていることを書いてみます。
サンプルとしてビンタのモーションを作りました。新人の子達にモーションを教える時にパンチ、キック、 バク宙のモーションをつけさせるのですが、 あとで作るハイキックにやられモーションを使いまわし出来そうだったのでパンチの応用ということでビンタにしました。

なんでこの3つを作らせるかというと、キャラモーションの基本的な要素のすべてを含んでいるので、 これが出来るようになれば単発のアクションなら作れるようになると思ってるからです。
で、自分の考える基本的な要素というのは、重心のとれたポーズ、動きの起点と力の伝わり方、慣性の3つです。

重心ってバズワードっぽいのであまり使いたくないのですが、代わりになる言葉も思いつかないのでここで言う重心について少し。
20090119_1
↑は重心を視覚化したものです。青い矢印が重心で、赤いのが接地面、黄色いのが上に乗っかてるものです。
重心は天秤の支点みたいなもので黄色い部分の重さの中心だと思ってください。 上の図だと矢印は上向きですが移動する時はバランスが崩れるので矢印が傾きます。で、 重心が接地面の中にあって垂直ならばそのポーズで静止していられるみたいな。 この状態を重心が安定していると言います(俺様用語なので他の人に言っても通じないと思います)。
普段は感覚でやってますが、ポーズをつけてみてなんかバランスがおかしいなぁって時はこんな感じでチェックしています。
あと、物を持った時にそれを接地面の中心の方に持っていくと重そうに見えます。
20090119_2

動きの起点と力の伝わり方は、パンチは足を踏み込んで腰を回転させて、腰から胸に力が伝わって胸が回転して、 胸に引っ張られて肩が前に出て拳を突き出す、 みたいな足から動き始めて拳に力が伝わるみたいなドコから動き始めてどのように伝わるかという事です。 これの時間差を大きくすることでタメが出来ます。

慣性は動きを止める時に考慮します。力の吸収させ方で力の大きさや質量感を表現します。

以下ビンタの解説というかメイキングです。
最初にキーポーズをつけます。一つのアクションに対してだいたい3〜5くらいつけます。
今回は初期ポーズ、予備動作、ビンタが当たった瞬間、ビンタ後の動きが落ち着いたところの4つつけました。 キーフレームは全身に打っています。つける順番は初期ポーズ、当たった瞬間、落ち着いたところ、予備動作の順につけました。
モーションのクオリティやキャラの個性がここで決まってしまうので、8割がたキーポーズに時間を割いています。
 20091019_3
初期ポーズは考えるのが面倒くさかったので棒立ちです。通常だと直前のシチュエーションなどを考慮してつけます。 ゲームだとデフォルトポーズがあるのでそれをつけます。
予備動作も通常殴りに行く場合は前に踏み出すのですが、キャプチャする時に移動量が少ない方が都合が良かったので一歩下がってつけました。
ビンタが当たった瞬間は一番見せたいコマなのでなるべく大きなシルエットになるように伸ばせるところは一杯まで伸ばすようにします。
20091019_4 
体から後ろ足にかけてきれいな曲線になるようにしないとヘッピリ腰になってしまいます。重心はやや前気味。
ビンタ後の動きが落ち着いたところは右手の動きを止めるポーズです。
20091019_5
体全体を逆方向に動かして右手を止めます。頭はあまり位置が変わらないようにします。 右手は勢いがついて慣性が働くのでそのまま振り切ります。
すべてのキーポーズをつけたらタイミングの調整をします。

次にキーポーズを補完するポーズをつけます。
最初に当たった瞬間の1コマ前をつけます。
20091019_6
腰も胸も回りきった状態で右手は残すようにします。キーフレームは全身に打ちます。
次に予備動作と先程のポーズの中間あたりのポーズをつけます。キーフレームは全身に打ちます。
20091019_7
腰を回転させて胸、右腕、頭は残します。左手は胸が回転しやすいように胸に引き付けます。
ここからあとのフレームは腰→腹→胸→右肩の順に力が伝わっていくようにポーズをつけていきます。 ここより前のフレームは腰移動→腰回転の順に動くようにポーズをつけます。この辺は動かした部分だけにキーフレームを打ちます。
次に当たった瞬間と落ち着いたところの間のポーズをつけます。
20091019_9
胸が動きの起点になるように腰から頭までのポーズをつけます。右腕は上腕がカクつかないように気をつけて後ツメでポーズをつけます。 ここも動かした部分だけにキーフレームを打ちます。
ここでフリップブックで再生してタイミングの調整をします。
次に初期ポーズから予備動作の補完ポーズをつけます。
20091019_8
腰から移動させて腰回転と一緒に右足を後ろへ移動。右足が地面についたら重心が安定していくようにポーズをつけます。 腰→腹→胸の順に力が伝わっていくように、けど時間差はあまりつけないようにつけます。
ここでもフリップブックで再生してタイミングの調整をします。
最後に最終ポーズをつけて補完ポーズもつけます。この辺はたいてい殴られた方に目が行くようにするので手を抜いても平気だと思います。

Fカーブでの修正ですが、私の場合はあまり使いません。補完のポーズを修正したり増やしたりして対応してます。 キー補完はリニアかオートスロープにしてます。

次回があれば次はハイキックをやります。

posted by ika at 18:04 | Comment(1) | TrackBack(0) | 3DCG制作 | このブログの読者になる | 更新情報をチェックする

2009年01月14日

走りモーション

成果物083: モーションの練習2(MARSUN XSI TIPS)
こちらで走りモーションについて書いてあったので小一時間かけて作ってみた。後で使うかもしれないし。

 

AVI

 

で、先のブログのモーションはツメ云々というより腿の動きがおかしいのでカクついているんじゃないかと。
走る動作の時の腿の動きは簡単に言っちゃうと下の左のように振り子みたいな動きなんだが、 先のブログの腿の動きは下の右のように変なところにツメが入ってる。

20090114_1

なんでこんな事が起きてるかと言うと、 下の(一応蹴りだしから着地までのキーポーズのつもり)真ん中のポーズが抜けているんじゃないかなと思う。

20090114_2

あと蹴りだした後で変なポーズでツメちゃってるからさらにおかしくなっていると思う。
走りの場合、蹴り足はそのあと前に進むためにまず膝が前に行こうとするので腿が止って、足首は失速せずにそのまま上に移動。 そして腿が動いて膝が前に移動して、足首は引っ張られて尻にくっつく。で、腿がいっぱいまで前に行くと足首は慣性で前にすっ飛んでいく。 足首をツメる所は足が伸びきった所しか無い。で、足が伸びきったポーズが無いんだからおかしな動きになるのは当然でしょ。
足首の動きだけツメだ云々と言って全体のポーズを疎かにしたら本末転倒なのでは?
まずはその動作は何故そんな動きになるのか、何故そんなポーズになるのかを考えた方がいいと思う。

posted by ika at 23:56 | Comment(0) | TrackBack(0) | 3DCG制作 | このブログの読者になる | 更新情報をチェックする

2009年01月12日

XSI道場懇親会

XSI道場の懇親会に行ってきました。
今回は24人も参加者が居て店内はエラい事になっていました。一度外の喫煙所に行ったら座る席が無いという。
幸い喫煙所の住人の中にお会いして話を聞きたいなぁと思っていた人たちが居たので、色々話を聞けたのは収穫でした。 タバコをやめたいと思いつつも喫煙所には出会いがあるのでやめられないなぁ。 仕事でもプロジェクトメンバーより喫煙所の住人と話してる時間の方が長いかも。
懇親会が終わった後、2次会に行ったら帰れなくなってしまったのでズルズルと明け方まで飲んでました。

posted by ika at 17:44 | Comment(1) | TrackBack(0) | 雑記 | このブログの読者になる | 更新情報をチェックする

2009年01月04日

[XSIスクリプト] 小物スクリプト追加

Pythonで書いたスクリプトがたまってきたのでスクリプト置き場に追加しました。

BoneRenamer.py
チェインルートの名前を元にボーンをリネームします。
↓こんなの
root_○○
 -bone
  -bone1
 -eff

root_○○
 -○○1
  -○○2
 -eff_○○
↑こんな感じにリネームします
ボーンが一つの場合はケツに連番をつけません。

CloneSymmetry.py
選択したメッシュをクローンまたは複製して、SymmetrizePolygonsを適用するかXスケールを-1にします。
他のモデルに移したいときはモデルも選択しておきます。選択してない無い場合はピックします。

Constraint.py
コンストレインを命名規約にそって適用します。
最初はjunkiさんのスクリプトを使っていたのですが、 シャドウリグの指のコンストレインを設定してたのですが同ポジでピックし辛い上に本数が多いので
ゴルァ! (ノ`皿´)ノ┻━┻・..。;・'
一括で出来るヤツを書きました。
コンストレインされる人を選択して実行します。
・Constraint コンストレインの種類です。デフォルトはPoseです。リスト化しようとしたけど面倒なのでやめました。 直接書き込んでください。
・Constrained コンストレインされる人のプリフィクスです。
・Constraining コンストレインする人のプリフィクスです。
選択されているオブジェクトのプリフィクスをConstrainingに入力した文字に置き換えた人が居るとソイツにコンストレインします。
私の場合は、コントロールリグのボーンはプリフィクス無しで、シャドウリグのボーンには「sdw_」というプリフィクスをつけているので、 シャドウリグのボーンを選択してConstrained=sdw_、Constraining=空白、 と入力して実行すると一発でコンストレインできます。
Left、Rightと入力してSymmetryコンストレインを適用とかも出来ます。

MatchRot.py
MatchTfm.py
リグが複雑化するとMatchTransformの挙動が怪しくなるので書いたスクリプトです。
MatchRotation、MatchAllTransformsと同じ動きをします。

MoveCenterToObject.py
メッシュの形状を保ちつつ原点の位置を他のオブジェクトの位置に合わせます。
メッシュオブジェクトを選択して実行します。
複数選択不可。複数選択している場合は2番目に選択したオブジェクトに位置合わせします。 一つしか選択してない場合は位置合わせしたいオブジェクトをピックします。

RemoveShape.py
選択した頂点のシェイプのオフセットを0にします。
左右対称でシェイプを作って後で片方を削除する時に使ってます。
頂点とShapeクラスターの中から0にしたいシェイプを選択して実行します。

RenameReplace.py
RenameSequence.py

RenameSequenceHierarchy.py
リネームスクリプトです。うっかりメインシェルフのデータを消してしまったのでPythonで書き直しました。
特定の文字列を他の文字列に置換します。DuplicateSymmetry等でケツについた数字を消したりも出来ます。
選択順にケツに連番で数字を追加します。名前は最初に選択したオブジェクトの名前を使います。
選択したオブジェクトの子供たちのケツに連番で数字を追加します。名前は選択したオブジェクトの名前を使います。

ResetScaling.py
子供たちの位置がずれないようにスケールを1にします。メッシュオブジェクトの場合は形状と原点の位置がずれないようになってます。

 

広告


この広告は60日以上更新がないブログに表示がされております。

以下のいずれかの方法で非表示にすることが可能です。

・記事の投稿、編集をおこなう
・マイブログの【設定】 > 【広告設定】 より、「60日間更新が無い場合」 の 「広告を表示しない」にチェックを入れて保存する。


×

この広告は1年以上新しい記事の投稿がないブログに表示されております。