「ポーズ・モーション作成」の編集履歴(バックアップ)一覧に戻る

ポーズ・モーション作成 - (2019/04/16 (火) 19:00:56) のソース

&bold(){Blender}と&bold(){Animation Tools N3}を使い人間用のポーズまたはモーションを作成します。
Blenderに慣れてなくても気軽に試せて、ゲームに持って行くまでの手順も少ないので初めてでもオススメできます。
&bold(){Animation Tools N3}はポーズモーションの作成に必要なコンバートツール一式が揃ってます。
さらにリギング(アニメーション制御するための設定みたいなもの)やスクリプトの改良を施した&bold(){Animation Tools N3 Rig Custom}も使います。

#contents

*必要なもの
[[Blender 最新版>>http://www.blender.org/download/]](※Zip版で問題ありませんがインストーラー版と少し手順変わります。)
[[Animation Tools N3 - with IK armature>>http://www.nexusmods.com/skyrim/mods/34671/]]
[[Animation Tools N3 Rig Custom>>https://tktk1.net/skyrim/mymod/animation-tools-n3-rig-custom/]]

上2つともダウンロードして展開したら特にやる作業はないです。
[[Animation Tools N3 Rig Custom>>https://tktk1.net/skyrim/mymod/animation-tools-n3-rig-custom/]]はフォルダの中身を&color(#134f5c){Animation Tools N3のフォルダ}に上書きしてください。

*Blenderでの作業
Blenderを開いて、&color(#134f5c){File -> OpenでAnimation Tools N3フォルダ}を開きます。
ポーズは基本的に共有なのでどちらでもいいですが、男性用なら&color(#134f5c){&bold(){Example_Male_Vanilla.blend}}、女性用なら&color(#134f5c){&bold(){Example_Female_UNP.blend}}を開きます。

*Blenderの操作
ポーズでの操作の基本は移動と回転させるだけ!
モデリングと比べて覚えることがすごく少ないです。
※操作をより詳しく知りたい場合は[[Blender入門の基本の操作体系>http://www50.atwiki.jp/skyrim_mod/pages/61.html#id_458df849]]を読んでください。

&bold(){ポーズ操作の基本の2つ}
&table_color(table3, #cfe2f3){}
|~機能|~英語名|~ショートカットキー|
|移動|Grab|Gキー |
|回転|Rotate|Rキー|
&bold(){R+Rキー}でトラックボール回転もよく使います。

&table_color(table3, #cfe2f3){}
|~機能|~英語名|~ショートカットキー|
|移動のリセット|Grab|Alt+Gキー |
|回転のリセット|Rotate|Alt+Rキー|
ポーズ全部のリセットをしたい場合は&bold(){Aキー}で全選択したあと、&bold(){Alt+G}、&bold(){Alt+R}です。

&bold(){回転や移動のあと}
&color(red){Xキー}:&color(red){X軸}限定で作用させる。
&color(green){Yキー}:&color(green){Y軸}限定で作用させる。
&color(blue){Zキー}:&color(blue){Z軸}限定で作用させる。
例えば、G→Xで&color(red){X軸}だけ移動できる。
これが&bold(){Gキー+Yキー}なら&color(green){Y軸}、&bold(){Gキー+Zキー}なら&color(blue){Z軸}に沿います。
同様に&bold(){Rキー+○軸キー}で回転する方向軸を制限できます。

&bold(){その他のよく使う}
|全選択|All|Aキー|
|アンドゥ||Ctrl+Z|
|リドゥ||Ctrl+Shift+Z|

&bold(){視点操作}
|視点の回転|中クリック(マウスホイールを押す)しながら、マウス移動。|
|ズーム|マウスのホイール|
|平行移動|Shift+中クリック|

視点はテンキーで操作すると便利です。
#ref(10key.png)

ただし、スカイリム(nif)の座標軸は&bold(){+X-Y+Z}でY(前後)が逆で、Blender上の正面がスカイリムでの背面(&bold(){Ctrl+1}が正面)になります。

*ポーズを作る
基本的にはコントローラーと呼ばれる部分を動かします。
Rig Customはそれぞれのコントローラーの役割を色分けしています。

&color(red){&bold(){赤}}:IKコントローラー。これを移動させて腕や足の位置を決めます。
&color(green){&bold(){緑}}:回転コントローラー。&color(#4c1130){&bold(){Gキー}}または&color(#4c1130){&bold(){Rキー}}で回転させます。
&color(blue){&bold(){青}}:ターゲット。肘や膝がこのターゲットの位置に向きます。

まずは腕を動かしてみましょう。
手についてる赤い球体の&color(red){&bold(){IK_Forearm_R}}を&color(#134f5c){&bold(){右クリックで選択}}します。
#ref(IK_Forearm_R.png)

+&bold(){&color(#4c1130){Gキー}}を押して移動します。この時に&bold(){&color(red){X},&color(green){Y},&color(blue){Z}キー}}を押すとその軸だけの移動に制限することができます。
+動かしたい位置に持って行き、&bold(){&color(#4c1130){左クリック}}で位置の確定、&bold(){&color(#4c1130){右クリック}}でキャンセルです。
+カメラの移動は&bold(){&color(#4c1130){マウス中ボタンをドラッグ}}または&bold(){&color(#4c1130){(Ctrl+)テンキー}}で出来ます。

手首が下がってるので角度を変更します。
+カメラを&bold(){&color(#4c1130){テンキー3}}を押して横にします。
+緑の&color(green){&bold(){IK_Hand_R}}を&color(#4c1130){&bold(){右クリック}}で選択します。
+&bold(){&color(#4c1130){Rキー}}もしくは&bold(){&color(#4c1130){Gキー}}で回転できます。
+&color(#4c1130){&bold(){左クリック}}で回転を確定します。
#ref(IK_Hand_R.png)

基本的な操作方法は以上です。
コントローラーを移動か回転するだけですので簡単ですね。

**基本
***各種コントローラーの役割の説明
|胸から上のコントローラー|手回りのコントローラー|
|&ref(HeadController.png)|&ref(handcontroller.png)|
|腰回りのコントローラー|足回りのコントローラー|
|&ref(SpineController.png)|&ref(footcontroller.png)|

・画像には無いコントローラー
&color(blue){Controller_Knee_L&R} 膝の向き
&color(#45818e){Controller_BASE} 全体の移動や回転

手順的には腰(&color(blue){Controller_Pelvis_Movemant}と&color(green){NPC Spine 0,1,2})をまず決めてから、&color(red){IK_Forearm}で腕の位置を決めます。
&color(green){IK_Hand}で手首の角度を直して、&color(blue){Controller_Elbow}で肘の位置を決めます。
次に足の&color(red){Controller_Foot}で足のポジションを決めてから他の足の部分も調整します。

**出力
+ポーズモード中に&bold(){何かひとつ以上コントローラーまたはボーンを右クリックで選択した状態}にします。
+画面右下の&bold(){Run Script}を押して出力をします。
#ref(ExportAnim.png)

&color(#ff0000){&bold(){※エラーが出る場合}}
出力にはAnimation Tools N3にあるskeleton.txtが必要です。
Blenderフォルダに&color(#134f5c){&bold(){skeleton.txt}}を読み込みに行ってしまってる時にエラーが発生します。

&bold(){対処法:Blenderフォルダ直下にskeleton.txtを置く}
+Animation Tools N3フォルダに入っている、&color(#134f5c){&bold(){skeleton.txt}}をコピーします。
+現在使用中のBlenderフォルダを探す。そこに&color(#134f5c){&bold(){skeleton.txt}}を置きます。
+もう一度Blenderに戻って&bold(){Run Script}を押して出力します。

例:&color(#134f5c){C:\blender-2.7x-windows64\}に&color(#134f5c){skeleton.txt}をコピー
※あとで必要な&color(#134f5c){&bold(){zBoneKeys.txt}}もBlenderフォルダに生成されるので注意!

***hkxにコンバート
+&color(#134f5c){&bold(){Animation Tools N3フォルダ}}に&color(#134f5c){&bold(){empty.kf, zBoneKeys.txt}}があるかを確認します。&br()※Blenderフォルダ直下に&color(#134f5c){&bold(){skeleton.txt}}を置いた場合、zBoneKeys.txtをAnimation Tools N3フォルダに移動しておきます。
+Animation Tools N3フォルダにある&color(#134f5c){&bold(){Convert.bat}}を起動すると自動でkfファイルを変換します。
+成功するとConverting Animation to KF Format is DONE!と出ます。
+Enterキー(または適当なキー)を押すと更にコンバートが進みます。
+成功すると&color(#134f5c){&bold(){empty_new.hkx}}が同フォルダに出力されます。これがポーズのファイルです。&br()あとはこれをリネームして既存のポーズmodのファイルと置き換えしましょう。

&color(#134f5c){&bold(){スカイリムのフォルダ\Data\Meshes\actors\character\animations\}} がモーション用のフォルダです。

※CKのActorを右クリックしてPreviewすることでanimationsフォルダ直下のファイルのみプレビュー可能です。
ここで確認することでわざわざゲーム内で確認しなくてもすみます。
hkxファイルを入れ替えて、Resetボタンを押しても更新内容が反映されません。リネームしたファイルだと反映されます。

#ref(Columbia.png)
ポーズの作成方法の基本はこれでおしまいです。おつかれさまでした。

置き換えでなくちゃんと登録したい場合は、こちらのブログのFNISの新規登録記事を参考にしてください。
[[おばちゃんのスカイリムガイド FNISで遊ぼ!~AnimObject付きモーションの弄り方 >>http://obachanskyrim.blogspot.jp/2013/09/fnisanimobject.html]]

**Tips
***オブジェクト付きポーズの作り方
例えばカゴやコップなどのオブジェクト(小道具)をつけたポーズを作ることができます。
以下のブログに詳しく丁寧に書かれているので参照にしてみてください。
[[Lucien House - BlenderでFNISオブジェクト付きポーズを作る>>http://mochisheep.minibird.jp/?p=1947]] by Kuromimi

***さまざまな回転方法
色々な回転方法がありますが、まず理解しやすいようグローバル軸とローカル軸を覚えておきましょう。

グローバル軸とはシーン全体のXYZ軸でオブジェクトがどれだけ回転しようがこの軸は一定です。
ローカル軸とはボーンの持っているXYZ軸で、軸はボーンの向きに依存します。
#ref(GlobalLocal.png)

Rキー+○軸キーで行う回転はグローバル軸に沿って動きます。

ローカル軸に動かす場合は&bold(){Rキー+○軸キー2回押し}です。
たとえば、R+Z+ZでローカルZ軸に沿って回転します。

もうひとつローカル軸に動かす方法は、マニピュレータを使います。
赤緑青の円で構成された球体状のものがマニピュレータです。
動かしたい軸をドラッグするとその軸に沿って動きます。
青ならローカルZ軸に沿って回転します。
#ref(ManipulatorZ.png)

最後に、グリグリ動かせるトラックボール回転です。
ゲームパッドのアナログスティックのような回転といえばわかりやすいでしょうか。
&bold(){Rキー+Rキー}で使えます。左クリックで確定。
肩(鎖骨)や指の付け根などの球状に動かせる部分に最適です。
#ref(TrackBall.png)

***ポーズライブラリに登録
必須な作業ではありませんが登録しておけばいつでも呼び出せるので複数ポーズ作るときには大変便利です。
まず&bold(){Aキー}ですべてのボーンを選択し(水色になる)
右側のプロパティウィンドウから人のマークを選びます。
#ref(objectdatabutton.png)

PoseLibを開いてNewをおしてライブラリを作り、縦に並んでる方の+のボタンを押してAdd Newで現在のポーズを登録します。
#ref(poselib.png)
虫眼鏡マークで登録したポーズを適用させることが出来ます。
選択したボーンにしか適用しないので、例えば、腕のポーズだけコピーということもできます。

***隠しボーン
普段は気にしなくていいボーンは操作しにくくなるので非表示になってます。
例えばスカートや武器位置のボーンなど。これらも操作することができます。
右側プロパティのArmatureのレイヤーで非表示になっているバニラのボーンを表示させます。
あとはコントローラーと同じように操作します。
#ref(Skeleton_Layers.png)




*モーション作成方法
最も基本的なモーション作成方法は最初と最後のポーズの2つのポーズを作ることです。
Blenderがその間の動きを自動で補完してくれます。
つまりポーズさえ作れれば、モーションは簡単に作ることができます(自然に作れるかは別問題ですが)。

[[サンプルgifアニメ>http://gyazo.com/7f743c43bf099fdfb65abf71dbef9fb2]]
最初の座ってるポーズと立って腕を上げたポーズだけ作って再生しただけです。

ポーズと手順は似てますが、&bold(){キーフレームを打つ}という作業が必要です。
フレームにボーンの回転量や移動量の情報を記憶させます。
ポーズと違ってモーションはコマ(フレーム)の連続で、打ったキーフレームとキーフレームの間は自動で補完します。

ポーズ作成の要領で最初のポーズを作り、Pose Modeでの状態を&bold(){Aキー}でボーンを全選択します。
&bold(){Iキー}を押してInsert KeyFrame Menuを出し、&bold(){LocRot}(位置と回転情報の記録)を選びます。これでキーフレームを打つことができます。
※キーは腕なら腕などで個別に打てます。実践ではむしろ個別に打ってください。

**Dope Sheet(Action Editor)
&bold(){Dope Sheet}とはどのボーンにどのフレームにキーが打たれているかの一覧表です。
キーフレームの位置はいつでもここから変更可能です。

モードをAction Editorに変えます。
#image(ActionEditor.png)
以下の部分の+ボタンでモーションの追加ができます。
#image(ActonAdd.png)

***Dope Sheetの操作
|画面の移動|中クリック|
|画面の拡大・縮小|スクロール|
|表示範囲をすべてのキーに合わせる|Homeボタン|
|全選択/全選択解除|Aキー|
|選択したフレームのすべてのボーンのキーフレームを選択|Alt+左クリック|
|キーの移動|Gキー+左クリックで移動の確定。|
|キーの拡縮|Sキー+左クリックで確定|
|キーの複製|Shift+D|

#ref(keyframeselect.png)

ひし型がキーフレームです。0の位置にキーフレームがない場合は、&bold(){&color(#4c1130){Aキー}}で全選択して(菱型が黄色くなる)&bold(){&color(#4c1130){Gキー}}で移動させます。
0ではないフレームに左クリックで持って行き(例では10)モーションの終わりのポーズを作ります。
ポーズができたら&bold(){&color(#4c1130){Aキー}}でボーンを全選択し、&bold(){&color(#4c1130){Iキー}}押して&bold(){LocRot}でキーフレームを打ちます。

メニューでTimeLineを出し再生してみます。
#ref(TimeLine.png)
画像のEndの部分で再生の終了位置を決めます。これは最後にキーフレームを打った位置にします。
あとは再生ボタンを押して再生してみます。

モーションの間隔が短い/長い場合だともう一度dope sheetの方で&bold(){&color(#4c1130){Alt+左クリック}}で一番後ろのキーフレームを選択し、&bold(){&color(#4c1130){Gキー}}で移動します。
そしてTimeLineでEndの位置を変えて再生して確認します。

補完の仕方が気になる場合は、途中でキーフレーム打ってボーンを回転を修正して見たりしてください。
Blenderでのモーション製作は以上です。

出力方法はポーズと全く同じですのでそちらを参照してください。StartとEndの長さ分のモーションになることだけ注意。
(抜刀のモーションなどはキーフレームの長さが決まってます。)

**Graph Editor
Graph Editorとは補完の仕方をグラフを使って編集できます。
&bold(){ポーズはこの項目は関係無いですが、自然なモーションを作る上で肝といってもいいです。モーション作業の大半はグラフエディタとにらめっこすることです。}

&bold(){利点}
-どのように補完されているのか遷移していくのかが視覚的にわかりやすいです。
-補完の仕方を変えて、後述の自然なモーションを作るコツであるタメツメやタイミングのずらし、曲線的な軌道等ができます。
-余計なキーを減らせます。キー数が少ないほど問題が起きにくく、メンテナンス性がよく、あとから修正がしやすいです。
-編集度にIキーでキーフレームを打たなくてもいいため作業が速くなります。もう少し腕を高くあげたい、右足を前に出したい等が素早くできます。

2つのポーズ間のデフォルトでは曲線(Fカーブ)で補完され、動作はじめと動作終わりで減速します。
この補完をたとえば、もっと開始時からすばやく動かして、終わり頃にゆったりとした動きにしたい場合にGraph Editor(2.49bだとIPO Editor)を使ってグラフを編集します。

**グラフエディター上の操作
基本的に3DビューやDopeSheetと変わりません。
右クリックで選択、Gで移動、Rで回転、Sで拡縮。Iキーでキーを打つ。

|画面の移動|中クリック|
|画面の拡大・縮小|スクロール|
|表示範囲をすべてのキーに合わせる|Homeボタン|
|選択したキーを中心に画面拡大|.キー|
|全選択/全選択解除|Aキー|
|選択したフレームのすべてのボーンのキーフレームを選択|Alt+左クリック|
|キーの複製|Shift+D|

回転のカーブは数値が小さくて編集しにくいがしにくいので選択してから&bold(){.キー}で画面を拡大します。
移動カーブを編集したいときは&bold(){Homeキー}で戻します。

例では計算がわかりやすいように足のIKを100フレーム目でX軸に10動かして&bold(){Iキー}で&bold(){Loc}をうちます。
補完が等速なら50フレーム目ではXの移動量は5ですよね。これを開始は速くてあとはゆったりした動きにさせます。

GraphEditorを開くと以下のように表示されます。
#ref(GraphEditor.png)

赤の曲線が左側ウィンドウのX Locationが示す通り、Controller_Foot_RのX軸上の位置の遷移です。
これがQuaternion(クォータニオン) XだとX軸を軸にした回転量の遷移を示します。(ややこしいですが、クォータニオンだとW[1~-1]の値も変動します。)
横軸が時間(フレーム)、縦軸が移動量です。

画像でオレンジ色の丸を引っ張って曲線を編集します。右クリックで選択して&bold(){Gキー}で移動させることができます。
(丸がないときは根元の四角を右クリックすると出てくる)
ベジェ曲線のように扱えます。これをまっすぐ左に引っ張っていきます。
そのあと0フレームの四角を選択して、今度は右側の丸を選択して以下のように左斜めに移動させます。
#ref(FCurve.png)

これで開始は早くてあとはゆったりした動きになってます。
グラフが出てきて戸惑いますが実際に手を動かして試していけば直感的に理解できるはずです。

ちなみに根元の四角を縦軸に移動させると移動量や回転量自体をキーを打つこと無く増減できます。横軸に動かすとキーがふえてしまうのだけ注意。


**グラフエディタ実践編

例では武器を後ろに引く動作ですが、キーの打ち方によっては以下のようにうねってS字になってる箇所があります。
右側のモーションの軌道を見ると、25と30フレームの間にカクっと不自然に段差が出きてます。
#image(Graphedit1.png)

コレをきれいに弧を描くようなカーブにする場合は25フレーム目を消してしまいます。
すると以下のようになります。
#image(Graphedit2.png)

カーブが汚くごちゃごちゃした動きになった場合はこのように消してしまったほうが効果的です。
この方が問題が少なく、メンテ性が良くなります。
カーブをきれいにすることはメンテ性の向上と分かりすさの向上になりますが、リアリティに繋がるわけでもなく味気がなくなったりもします。
一旦きれいにしたあと、タイミングをずらしたり、ためを作ったりの調整することも大事です。

*モーションの置き換えや追加
置き換えならば、CKのActorを右クリックしてPreviewすることでモーションが確認できますから、そのファイル名でスカイリムのフォルダ\Data\Meshes\actors\character\animations\フォルダ下に置けばいいだけです。

CKにはモーションを追加する機能がないのでFNISというModを使うことでモーションを追加します。
FNISでのモーション追加方法は詳しくは以下のwebサイトで解説されています。

[[おばちゃんのスカイリムガイド FNISで遊ぼ>http://obachanskyrim.blogspot.jp/2013/09/fnisanimobject.html]]のFNISを使った新規モーションの登録方法を参考にしてください。



*モーションのコツ

**アニメーションの原則
ディズニーのアニメーションの12の原則は学ぶことは多いです。
[[アニメーションの原則-Principles of Animation- Animation OBAKE>>http://animobake.blogspot.jp/2014/11/principle-of-animation.html]]

**スローイン・スローアウト
[[Slow in & Slow Out (スローインとスローアウト)-Animation OBAKE>>http://animobake.blogspot.jp/2014/12/slow-in-slow-out.html]]
↑この概念を振り子のアニメを使って説明されてます。大変オススメ。

イーズイン・イーズアウトやアニメ業界だとタメツメとか呼ばれます。
スローイン(イーズイン)=だんだん遅くなる
スローアウト(イーズアウト)=だんだん早くなる

スローに入って(In)行くと遅くなります、スローから抜ける(Out)と速くなります。

基本的な物理の性質で、車の加速と減速がイメージしやすいでしょうか。
止まった状態から動くときは徐々に速くなり、止まるときは徐々に遅くなって止まります。

人間の動きも同じです。これが均等な速度だと機械的で不自然になるんですね。
メリハリを付けることで、自然でダイナミックな動きができます。
グラフエディターを使うことで確認と修正がしやすいです。
また確認しやすいので後述のモーションパスも使ってみてください。


**予備動作と後の動き
立ち上がるポーズを例にすると立った瞬間にピタッと全身止まるのではないです。
腕が少しブレたり、足と手が止まるタイミングをずらしたり、動作の後の動きに変化を付けると自然になります。
逆にキーポーズはじめに予備動作を足すこともいいことです。
力の移動を理解するといいと思います。全てが同時で等速で動くわけではないので予備の動作は腕足胴のタイミングをずらしたりします。

以下の作例をコマ送りにして再生してみましょう。
[[Mox-Motion トレーニング ストレートパンチ>>http://mox-motion.com/training/straightpunch-2/]]
足→腰→上半身→腕の繰り出しまで全てタイミングがずらします。
全ポーズコピーしてため作るのは不自然に見えるのでおすすめしません。

**曲線的な動き(アーク)
[[Arc(アーク)-Animation OBAKE>>http://animobake.blogspot.jp/2014/12/arc.html]]
[[ディズニーのような見やすい3Dアニメーションを作る秘訣、アークとシルエット -ANITOON!>http://www.anitoonjapan.com/2015/06/d.html]]

人間は直線的な動きはほとんどしません。できるだけ軌道が弧を描くような曲線的な動きにしましょう。
例えば、首を左右に動かすときは途中で顎が若干引くので、曲線的な動きなんですね。
キーを増やすか、グラフエディタで補完を変えます。
例えばY0,Z0でY50,Z50で中間はY25,Z25で斜めにまっすぐ動くんですがY0のカーブを右に伸ばすと初動にためができるので軌道が弧を描きます。
グラフエディタ上ではきれいなカーブでも根元の腰回りの動きを含めるとガタガタな場合もあり、これも後述のモーションパスで確認しやすいです。
動きが自然になるだけでなく視認性がよく視覚的にもわかりやすくなります。

**モーションパスのススメ
モーションパスはボーンの軌道を視覚化します。軌道が見えると一発で曲線的な動きをしているかわかるのでオススメです。
Tキーでツールシェルフを開いてToolsタブのPose Tools一番下のMotion PathsをCalculateを押しOK押すことで選択中のボーンの軌道が確認できます。

また、アドオンの[[Motion Trail>>http://www.cgradproject.com/archives/1523]]は加速度や速度を色で表示できたり、表示の設定の変更や、
モーションパスを編集して軌道の修正やキーの追加等ができます。
作者のサイトだとリンクが切れてるので[[Github版>>https://github.com/sambler/myblendercontrib/blob/master/animation_motion_trail.py]]を開いてRAWボタンを右クリックして名前をつけてリンク先を保存します。あとはアドオンフォルダに入れて有効にし、Tキーでツールシェルフを開いてAnimationタブのEnable motion trailでモーションパスの表示を有効にできます。

#image(motiontrail.png)

**誇張表現
Blender上ではなかなか良い感じでも、実際に画面に出すと意外と地味…というのはよくあります。
特にゲームでは画面に表示される領域は小さく、カメラも固定ではなくて、他の情報量も多いので埋もれてしまいがちです。
舞台で大げさな化粧や身振り手振りするようなもので、やや誇張気味に表現してしっくり来る場合があります。

**In-Betweens
前後のキーを参照にして現在のキーを調整ができる機能です。
3DViewのポーズモードのみ使用可能。ものすごく便利なので覚えましょう。
ショートカットは〇〇+Eキー
***Push Pose(Ctrl+E)
現在のポーズを強調します。マウスを左右に動かして調整でき、左クリックで確定。3DViewの左下に適用量の%がでます。
***Pose Breakdowner(Shift+E)
前後のキーの中割りです。これも調整可能で左クリックで確定。
***Relax Pose(Alt+E)
前後のキー参照にして現在のポーズを丸めます。Pushの逆。



*用語
&bold(){ボーン:}モーションを作るのにメッシュの頂点を一々移動していたら途方も無いので、ボーンと呼ばれるその名の通り骨状のものをモデルに入れます。ボーンの動きにどれだけメッシュの頂点も追従するかを塗って設定するのがウェイトと言います。
&bold(){スケルトン:}ボーンの集合体をスケルトンといいます。
&bold(){アーマチュア:}=スケルトン。Blenderでのスケルトンのことをアーマチュアと言います。

*FKとIKの違い
&bold(){FK(フォワードキネマティクス):}ボーンの&bold(){根本から軸回転}で作ります。例えば手を挙げるポーズを作るときにFKの場合は肩→上腕→前腕と関節を根本から1つずつ回転させて作ります。
&bold(){IK(インバースキネマティクス):}IKは&bold(){逆(インバース)}なので、&bold(){先端の位置}で作ります。手を挙げるポーズは先端の腕にIK制御用のコントローラーを追加し、それを上に上げるだけで肩や腕の回転は自動計算されます。最初はとっつきにくいかもしれませんが、モーションを作成する時に極めて効率が良くなります。Animation Tools N3は腕や足の操作はIKです。

[[IK vs FK>>http://noboyama.sakura.ne.jp/lightwave_tips/character/ikvsfk.html]]
前述のとおり、FKは根本から回転させていくやり方、IKは先端の位置から決定させるやり方です。

**FKの性質
人間の関節構造上、支点から回転させるために動きが円弧状になるので(例えばボールを投げる等)、基本的にこちらのが動きが自然です。
逆に言うと、円弧状になりやすくて直線的な動きが苦手です。腕を真っ直ぐ動かしたい時にうねうねしてしまいます。
もうひとつ、身体の部位が何かに固定される場合、代表的な例で言うと足の接地ですね、先端の位置を予測して根本から動かすため、非常に難しいです。

**IKの性質
先端の位置から決定されるために、意識しないと直線的な固い動きになりがちです。
連動して動く関節は自動計算する手前、荒ぶりやすく(フリック)、肘や膝のターゲット位置なども重要です。


**FK/IKの切り替え
FK/IKの切り替えパネル(Nキー押すと出るプロパティウィンドウの一番下に表示されます。)を使う場合は
スクリプトの自動起動を使ってますので、セキュリティの関係上以下の2つを行ってください。&bold(){1.推奨。}

1. File→User Preferences→File→Auto Run Pyton Scriptsをチェックを入れて、Save User Settingを押してください。(初回のみ)
2. 起動度に画面右上のReload Trustedを押す。※読み込み時の状態に強制的に巻き戻るので、必ず起動時に押してください!

#ref(AutoLoadScript.png)

腕のFK/IKの切り替えはIK Strengthを0にするとFKに1だとIKで動きます。
0と1の中間は指が崩壊するので使いません。
Visibilityで表示非表示の切り替えが出来ます。FK使うときはFKをオンにしてください。
Skeletonはバニラのボーンを表示できますので出力時に便利です。

#ref(FKIKPanel.png)



*モーション作成の練習
[[ANITOON!>http://www.anitoonjapan.com/]]さんのブログ記事と動画を参考にBlender用のサンプル入りと練習用ファイル用意しました。

#image(OnionPendulum.png)


&bold(){[[練習用ファイルのダウンロード>http://www.mediafire.com/download/i13vw6qdbnogili/Practice.7z]]}

ある程度ポーズやモーション作成を楽しんで、もっと上手になりたいと思ったときに&bold(){これで基礎を身につけましょう}。間違いなくレベルアップします。

#image(PracticeLayer.png)

レイヤーに上段の左からセットアップ済みの&bold(){振り子、バウンスィングボール、バウンスィングボール2、運動連鎖}の4つの課題が入ってます。アニメーションは付けてません。
下段も同じ順番に入ってますが、こちらは完成されたアニメーションデータで、あくまで参考にどうぞ。

**練習その1:振り子
まず、振り子でイーズイン・イーズアウトを学びます。振り子は等速で動いてるわけではなくて、徐々に加速していき、真ん中を境に徐々に遅くなります。

&color(#38761d){緑のボーン}を選択してRキーで回転、Iキー→Rotでキー打ってください。
全体の長さを90で設定してるので、一往復30で取ると3往復分作れます。反対側まで15フレーム目、戻ってくるのに30フレーム目のように作ればよいです。
原則的にカーブの山にキーを打つので、打つキーフレームは0,15,30,45,60,75,90フレーム目だけ。

Blenderはデフォルトでイーズイン・アウトしてますがカーブエディタの山のキーを選択して、Sキーで拡大して中間がキツめのカーブにしてみてください。

先端のボーンは使わないダミーボーンですが、Motion Trailを使うと軌跡で追えるのでぜひ試してみてください。

応用例:人間の自然な動作で等速な動作はありません、基本中の基本ですべてに応用が効きます。

**練習その2:バウンスィングボール
左から右にゴムボールのように跳ねていくボールを作ります。
まずご自身で必要な条件を考えてみましょう。
#image(BounceBall1.png)

----

+ボールが落下後に接地して何回か跳ねるが、回数を重ねるごとに徐々に高さがなくなり、徐々に跳ねる間隔が短くなる。
+跳ねは、ボールが一番高い時が一番遅く、接地時するまでと接地後の跳ねた直前が一番速い。
+物体が落下する時には徐々に加速していき接地するまでは減速しない。
+跳ねなくなってもボールは転がる。

この条件で自分でアニメーション付けてみてください。
行き詰まったら、ANITOON!さんの[[バウンスィングボール>>https://youtu.be/-gPqz8p7j9k]]の動画を見てください。

応用例:パンチするときも徐々に加速してパンチがヒットするまで遅くなりません。ハンマー振り下ろす動作も接地するまで減速しません。
足の接地も直前で減速しません。

**練習その3:バウンスィングボール2
ここでは慣性の法則を学び、スペースィングで重量の表現を身につけます。
軽いゴムボール、ボウリングの玉のような重いボール、等速で落ちるボールの三つを作ってください。
まずご自身で条件を考えてみましょう。
#image(BounceBall2.png)

----

理科(物理)の授業で&bold(){慣性の法則}というのを習ったことがあると思います。
とどまるものはその場にとどまろうとする、動くものは動き続ける、です。
この性質で重要なのは&bold(){質量が大きいほど慣性の力が強い}ことです。
たとえば、タンカーは止まるのにブレーキを掛けてから完全に止まるまで30分8kmぐらい進んでしまいます。
同じようにボウリングの玉のような重いボールを落とすときには、その場にとどまろうとする力も強いので加速が遅いんです。

+空気抵抗の微妙な差を引けば接地のタイミングは一緒。
+重いボールは加速が遅く、加速しだすと速い。
+軽いボールは思いボールに比べて加速が速く、加速し出してもそこまで速くならない。

こちらも行き詰まったら、ANITOON!さんの[[スペースィングの意味!>>https://www.youtube.com/watch?v=-y9iFnKEzGQ ]]をみてください。

応用例:先端の重いハンマー等振り上げて振り下ろす時に先端位置はその場にとどまろうとして他の部分よりすごく遅めに動かす(加速する)ようにし、逆に振ったあとはそのまま振り続ける力が働くので惰性で振り過ぎなぐらい動かすと重さを表現できる。
重い荷物持つ動作などでも、荷物の部分を持つ腕が遅れ、持ち上げた時には安定するポジションを超えて上に持ち上げます。

**練習その4 運動連鎖
運動連鎖(Kinetic Chain)の理解のためにヌンチャクを振る動作を作ります。

たとえば野球ボールを投げる時に足の踏み込みの力を足→膝→腰→胴→肩→肘→手首と力が連続して伝搬して投げてます。
これを運動連鎖と言い、足と手は同時には出しません、ズレます。※実際のスポーツだと人は感覚的に運動連鎖を行ってるので伝搬のズレを意識すると逆にダメだったりも
このズレがリアルな動作を再現するには欠かせません。

以下のボーンを腕に見立てて、手にはヌンチャクを持ってるとします。
#image(KineticArm.png)
これを上に振り上げてから振り下ろす動作を作ります。

また条件を考えます。
----

+上腕に近いほどタイミングが速く、末端にいくほど遅い。
+腕は可動範囲が決まっている。
+ヌンチャクは重力の影響を腕より強く受ける。
+末端に行くほど止まらない(慣性の法則)
+ズレる間隔はわりと小さく一定になりやすい。※すべてが理想的に動くとも限らないので、アンバランスなほうがそれっぽい場合もある。


応用:人間の動きのほとんどに応用が効きます。迫力が無かったり、動きが硬いのはたいてい連鎖ができてない場合が多いです。動作がしっかり粘りのある動きになります。

*チュートリアル - 垂直跳び
当wiki向けに動画を作りました!垂直跳びのモーションを作成します。
筆者(tktk)がTwitchにて配信した内容を編集と追補したものです。
モーションの作成フローやカーブエディタやドープシートの実際の使用などが学べます。
&youtube(https://youtu.be/fR0zZaZQn-g){560,315}

さらに実際に作成したモーションデータのblenderのファイルも配布します。
モーションデータはご自由にお使いいただけます。詳しくは同梱のreadmeを読んでください。
[[モーションのblendファイルのダウンロード>>http://www.mediafire.com/download/b1hd4o47uodcns6/JumpAnimation.7z]]


*ブラッシュアップ -作業の追い込み
ちょっと修正で劇的に良くなることがあります。
どうやってクオリティを上げるために追い込むかの説明。

**グラフのクリーン
グラフをきれいにすることで以下の利点があります。
-余計なキーが減って見通しが良くなり、問題を発見しやすくなる。
-余計なキーが減ってハンドルの操作やキーの位置ずらし等の修正作業がしやすくなる。
-カーブのがたつきが減って、なめらかな動きやアークを作りやすくなる。

必ずしもきれいなカーブが良いわけではないんですが、ある程度作ってから整理していくとブラッシュアップしやすくなります。

#image(CleanGraph.png)
+基本的に&bold(){カーブの山の頂点にキーを残します}。
+右クリックで選択して、Xキー→Delete Keyframesで削除していきます。
+カーブの形が変わるので、ハンドルをG(移動),R(回転),S(拡縮)キーで調整していきます。

真ん中の部分はまとめて問題なかったのでアニメーションを確認しながら大幅に整理しました。
右端はキー増やした方がよかったので増やしてます。整理するとこういうのに気づきます。

**硬さをとる
ブラッシュアップする前にとにかく多いのが動きが硬いことです。

例はハンマーを振る動きを38フレーム目で折り返してます。

#image(CurveFrontBefore.png,width=350,height=337,http://www50.atwiki.jp/skyrim_mod?cmd=upload&act=open&pageid=48&file=CurveFrontBefore.png, blank, inline)#image(CurveTopBefore.png, width=350, height=337,http://www50.atwiki.jp/skyrim_mod?cmd=upload&act=open&pageid=48&file=CurveTopBefore.png, blank, inline)

カーブを見てみると急激にグラフが折り返すので、鋭角なカーブになってます。
特に37,39フレームは38フレームと近くあまり動いてるように見えません。これが硬さの原因になってます。

こういう時は、一部のキーフレームを&bold(){ずらします}。
38フレームの&font(b,#274e13){Y},&font(b,#073763){Z}のグラフのキーだけ&bold(){36フレーム}に移動してみます。

#image(CurveFrontAfter.png,width=350,height=337,http://www50.atwiki.jp/skyrim_mod?cmd=upload&act=open&pageid=48&file=CurveFrontAfter.png, blank, inline)#image(CurveTopAfter.png, width=350, height=337,http://www50.atwiki.jp/skyrim_mod?cmd=upload&act=open&pageid=48&file=CurveTopAfter.png, blank, inline)


結果折り返しもアークっぽくなりました。

動画&bold(){左が修正前}、&bold(){右が修正後}です。
|&ref(CurveBefore.gif)|&ref(CurveAfter.gif)|
修正前は38フレーム目で動きが止まってるように見えて硬く見えます。
また、38から41フレームまでの急速な加速(モーションの軌跡が赤い線の部分)が解消されて自然に見えます。


**モーション関連リンク
ゲーム向けに特化しているので大変分かりやすいです。
[[Cross Eaglet 3Dキャラクターモーション講座>http://crosseaglet.xii.jp/gamedev/motion/index.html]]





 
目安箱バナー