2015年12月17日木曜日

【Tips】storyのClip同士のブレンドを調整するときの小技

MotionBuilderの便利な機能としてStoryモードがあります。
Storyモードは便利な機能で、Shotトラックを使ってカットシーンを制作したり、
Adobe premiereみたくアニメーションをclipとして扱い編集出来たりします。

今回はそんなStoryモードを使ってclip同士をブレンドさせる時にちょっとした小技の紹介です。

まずはclip同士を重ねるように配置すると単純なLinearで補間するようになります。


次にStoryウィンドウのClipを選択した状態でPropertiesウィンドウを見ると
Fade In InterpolationやFade Out Interpolation項目で補間方法を選択することが出来ます。


各Interpolationは以下の図のように調整できます。

ここできになるのがCustomです。文字通りの意味で、自分でカスタマイズつまりBlendさせるカーブを自由に調整出来るようになることです。
どこでBlendカーブを調整するかというと以下の方法で出来ます。

window -> Add Asset Settingsでウィンドウ表示


StoryのClipをダブルクリックするとウィンドウにClipの詳細が表示されます


ClipのプロパティでFade In InterpolationやFade Out InterpolationをCustomにすると
Asset Settings ウィンドウでブレンドするときのカーブを調整できるFCurveウィンドウが表示されます


このFCurveウィンドウでカーブを編集して、Clip同士のBlend具合を調整出来るようになります。

デフォルトで用意されているInterpolationで良い具合にならない場合はCustomにしてカーブを自分で満足いくまで調整することが出来ます。

2015年12月11日金曜日

【開店】MB Plug-in販売サイトオープン

かねてよりコツコツと準備を進めていたMBプラグイン販売サイトをオープンしました。

https://mb-plugin.stores.jp/


まだ商品はPerlinNoiseFilterしかありませんが、今後の予定としてこちらの記事で紹介しているシミュレーションのプラグインなどを計画中です。

他にも計画中ですが、なにぶん個人でやっているので対応がなかなか進まないですが
コメント欄とかにこれが欲しいとか、こういうのある?とかコメントしていただけると、
もしかしたらそれを優先的に作業をすすめれるかと思います(笑)

2015年11月15日日曜日

【Plug-in】Perlin Noise Filterを使った手ぶれカメラの作例

以前にPerlinNoiseFilterを使って手ぶれカメラのアニメーションを簡単に作れるという記事を書きました。ただこの記事の内容だと作れますよってことが分かっただけでどうやって作っていくかが説明されてませんでした。

今回は、実際にどうやって作成するかをまとめた動画を作りましたので公開します。

上記の動画の作例では、[Pan]-[Tilt]-[Roll]-[Noise]-[Camera]という階層を作成して、ベースのカメラアニメーションはPanのNullにいれて、手ぶれ感はNoiseのNullに入れてあります。
この階層でカメラアニメーションを作る利点として、Rotで注視点を動かしているのでカメラのレンズのミリ数によって手ぶれ感の数値を変えることはしなくてもいいことです。
もし注視点をTransで制御するカメラを使っている場合は、レンズのミリ数、カメラから注視点の距離を考慮した値で手ぶれ感の数値を決めないといけなくなるので、トライ&エラーの回数が増えてしまうことです。

作例で使ったFBXファイルをUPしますので参考にしてみてください。
【DownLoad】
HandyCam_sample.zip

ただ、上記の階層カメラを使用しなくてもPerlinNoiseFilterを使えば簡単に手ぶれ感を表現するカメラアニメーションを作成することが出来ます。

今回は手ぶれカメラを作例にしましたが、キーフレームアニメーションでの味付けとしてPerlinNoiseを追加してあげるなど色々応用が出来ます。

PerlinNoiseFilterは以下から入手出来ます。

2015年11月2日月曜日

【Plug-in】バージョンアップ DelayBoxでグラディウスのような動き(Plug-inのDLもあるよ)

前回の記事でDelayBoxについて書きました。
このDelayBoxを作る時にあまりにもグラディウスのオプションの動きを再現することに意識が行きすぎてて、オブジェクトが止まっている時に座標の更新がされてませんでした。なので、1つだけコネクターを追加して、オブジェクトが止まっている時も座標を更新、オブジェクトが止まっている時は座標の更新しないを選べるようにしました。




このバージョンを使用するとタイヤのホイールを移動値から自動で回転してくれるRigを簡単に組めるようになります。



動画のサンプルファイルも一緒にUPしています。
詳しくは動画やサンプルファイルを参照してください。

Download
MotionBuilder2014 64Bit

【追記】
2016/02/15 アニメーション再生中の挙動を正しくなるように修正しています。

2015年10月31日土曜日

【Plug-in】DelayBoxでグラディウスのような動き(Plug-inのDLもあるよ)

Mayaだとエクスプレッション等を使えば指定したフレームの値を取得することが出来ます。これを利用して1フレーム前の値と現在の値との差分を計算してドリブンキーなどを使ってRigを組むことが出来ます。

これと同じような事がMotionBuilderで出来たらいいなと思いますが、MotionBuilderはMayaと違ってリアルタイムで計算処理が走っているので、基本的には現在のフレームの値しか参照することが出来ません。
また、MotionBuilderでは値を時間的に遅らせて出力するようなものがありません。
なので、ないなら作ろうの精神で作りました。


このプラグインは入力された値を指定したフレーム分遅らせて出力する物です。
これを使えば1フレーム前の値と現在のフレームの値が得られるので差分を用いたRigを作成することが出来ます。

動画みたくDelayFrameに10フレームや20フレームとしてあげれば、グラディウスのオプションみたいな動きが簡単に作成できます。


【Download】
(MotionBuilder2014 64Bit)

2015年7月11日土曜日

【Plug-in】続 MotionBuilderでSplineIKをセットアップする方法(Plug-inのDLもあるよ)

MotionBuilderでSplineIKの記事(こちら)を書いたところ、色々な国の人から使わせてくれという連絡があり、反響がぼちぼちありました。

やはりというかMBでSplineIKの需要は高いと思いますね。というかこれまでも何故SplineIKがMBで実装されないのかが疑問に感じる位ですね。

MB2014からカーブの制御ポイントがデフォルトの機能でコントロール出来るようになり(こちらの記事を参照)、あとはカーブの全長が分かればSplineIKがMBでも設定出来るようになります。

今回はカーブの全長を出力するプラグインと既存のコンストレインを使った方法でSplineIKを設定する方法をご紹介します。まずはカーブの全長を出力するプラグインのDLパスを記載です。
【Download】
(MotionBuilder2014 64Bit)

こちらの記事を参考にカーブをアニメーション出来るように準備しておきます。


今回は5個の骨階層のものにSplineIKを設定していきます。
 

まずは、骨階層をChainIKのコンストレインを1つ1つに設定していきます。

ChainIKコンストレインのプロパティでSolverTypeをikSCsolverに変更しておきます。

1つ1つに設定するのでChainIKではなくて、Aimコンストレインでも代用できますね。


次に、ChainIKを設定したIKハンドル(Effector)をPathコンストレインしていきます。
今回は一番上の骨にもPathコンストレインを設定しています。なので、1番上の骨と4つのIKハンドルで合計5つのPathコンストを作成しています。
PathコンストレインはZeroのボタンでアクティブにしてください。



次に、PathコンストレインのWarpの値をRelationコンストレインを使って設定していきます。
そもそもWarpの値はカーブの全長を0~100に置き換えた値です。
つまり、カーブの全長が仮に120cmだとしたときにWarp値が10のときはカーブの始点から12cmのカーブ上の位置、Warp値が50のときは始点から60cmのカーブ上の位置になるものです。

このことから、常に骨の長さの位置にIKハンドルがあればいいので、
(骨の長さ)÷(カーブの全長)x100=Warp値としてあげればPathコンストレインしたIKハンドルは、
カーブの始点から骨の長さ分の離れた位置に常にくるようになります。

次の工程として、上記のことからカーブの全長が必要になりますので、今回配布したNagaoPathLengthプラグインを使用してカーブの全長を出力するようにします。
NagaoPathLengthコンストレインを作成します。

そしてカーブをD&DしてZeroボタンでコンストレインをアクティブにしておきます。



次はRelationコンストレインでの設定です。
PathコンストレインをRelationコンストレインへドラッグ&ドロップしてReceiverとして配置します。


次は、(骨の長さ)÷(カーブの全長)x100=Warp値の計算になるように下図のようにRelationを作成してください。2個目のPathのWarp値は最初のWarp値を足すように設定します。3個目以降も同様に1つ前のWarp値を足すようにしていきます。
 

次は、NagaoPathLengthコンストレインをRelationコンストレインへD&DしてSenderとして配置し、下図のようにコネクションを繋げます。
これで完成です。


細かい設定としてはPathコンストレインのプロパティでFollow Pathにチェック入れて、
UpVector、FrontVectorを設定することと、World Up TypeをObject Rotateにして
World Up Objectを設定することです。

あとは、MayaのSplineIKでいうところのTwist設定をすることです。
なんでもいいのですが、例えばUpVectorという名前のオブジェクトにTwistというCustomPropertieを作成してます。


そのTwistのプロパティを下図のようにPathのRollにリレーションを繋げます。

これで一通りの機能は実装出来ました。このサンプルで作成したFBXファイルも一緒に同梱しました。

既知の問題として2つあります。
1.必ずしも骨がカーブの上に配置されるということではない。下図を参照。
解決策としてはプログラムでカーブの上にくるようにWarp値を計算させることですが、デフォルトの機能だけでは難しいですね。

2.こちらの記事にも書いてありますけど、カーブをアニメーションさせていてもその通りにPlotされないです。こちらの解決策としては、1フレ動かしてキーフレームを打ち、1フレ動かしてキーフレームを打ちの作業を必要なフレーム分繰り返し行えば解決できます。


【Download】
(MotionBuilder2014 64Bit)

2015年7月1日水曜日

【Tips】MotionBuilderの3D Curveのアニメーション

MotionBuilderでパスを作成することは可能でしたが、制御ポイントを調整するにはパスを選択している状態でVertexモードにしないとパスの形状を調整できませんでした。
さらには制御ポイントをアニメーションさせるには、プログラムから制御する必要がありました。

いつのバージョンから出来るようになったかは定かではありませんが、MB2014では制御ポイントの調整をVertexモードやプログラムを使用せずともアニメーション出来るようになってたことを発見しましたので簡単に紹介です。

3D Curveを作成し、プロパティでDefault(Type)からALL(Type)にすると、隠れていた?カーブに関するプロパティが表示されます。



このプロパティ欄をよく見ると制御点らしき項目があります。

しかもキーフレームに対応しててかつオブジェクトを入れることが出来るスロットもあります。

Markerなどのオブジェクトをドラッグアンドドロップでいれると、Markerとは違う位置にカーブが移動していまします。



これはどうやら、元の制御ポイントの座標(頂点座標)分がオフセットされているみたいです。
ですので、これを0にしてあげるとMarkerと同じ位置に制御点が配置されるようになります。

Markerにアニメーションを付けてパスが動いている状態で、Pathコンストレインを使って、
アニメーションを付けてみようとしたら、なんとPlotには対応していないようです・・・・・・。

厳密にいうと、シーンの開始フレームのパスの形状のままでPlotされてました。
Markerでアニメーションさせてたものは無視されているようですね。

回避策としては、1フレーム移動して、自分でキーフレームを打ち、1フレーム移動して、キーフレームを打ちを最後まで繰り返す、手動Plotなるものをやってあげれば、ちゃんとパスに沿ってこちらが想定している状態でキーフレームが打たれます。

結構いいところまで来ているんですがあと1歩足りてないところがMotionBuilderらしいですね。

2015年6月26日金曜日

アニメーションに役立つ動画などなど

わたしがアニメーションを作る際は当たり前ですがリファレンス動画をかき集めて
MBのカメラに貼り付けて作業しています。

リファレンス動画を探すときにはよくYoutubeを利用しています。
探すときのコツとしては、やっぱり日本語より英語のワードで探すほうがいいリファレンスが見つかる事が多き気がします。

その中で良かったものを今回は紹介させて頂きます。

【endlessreference】
https://www.youtube.com/channel/UCRvspTjApofA2Yg3i10gTdQ

アニメーターの人ならご存知の方も多いと思います。
マス目を引いてある状態で人の基本的な動きをまとめてあるチャンネルです。


【Anitoon Japan】
https://www.youtube.com/channel/UC8h_w8K_ArD32l3fROFwHtA

アメリカでご活躍されている日本人の方のチャンネルで、
ピクサーなどあっちのカートゥーンの技術をわかりやすい解説をしています。
基本はBlogベースで発信されているようです。
http://www.anitoonjapan.com/



【grahund】
https://www.youtube.com/channel/UC68Jt5a_Pg5M0GkO_REos9A

わんちゃんをランニングマシンに乗せてWalkサイクルやJogサイクルなど
非常に役に立つ動画があるチャンネルです。



【Pavel Barnev】
https://www.youtube.com/channel/UCzEOYlnO8fmaCkz1KiqWtkg

ゲームモーションなどを中心としたチャンネルです。
人型からクリーチャーなど多様なアニメーションの動画があり、非常に参考になります。

2015年5月23日土曜日

【Tips】回転の補間について

CGで回転を補間する方法は一般的に2種類あります。
1つはオイラー補間。もう一つは球面線形補間です。

オイラー補間というのはキーとキーの間をFカーブの形状通り補間する方法で、XYZの数値で決まる姿勢を補間するものです。
さらに細かく言うと、XYZの順番、いわゆるRotationOrderが変わると同じキーフレームでも補間するとき動きが変わります。

上記図は全て同じキーフレームアニメーションですが、RotationOrderが違うことで動きが微妙に違っています。


RotationOrderというのは、X軸を計算して次にY軸を計算して最後にZ軸を計算するというように計算する順番を決めるものです。



次に球面線形補間です。これは英語で書くとSlerp。
簡単に言うと、クォータニオンを使って最短距離で補間するというものです。

MBでこのSlerpを使うのは簡単です。
Propertiesの中のQuaternionRotationにチェックいれるだけです。



この時に注意しないといけないことが、Slerpで補間する方法はいつでも最短距離で補間するということなので、キーフレームで2回転、3回転するように大きい値のキーを打っても、少ししか回転しないということがあります。

下図では、両方とも1回転半(540°)回転するようにキーフレームが打たれています。

青い方はキーフレーム通り1回転半(540°)回転していますが、
赤い方は0度から540度の姿勢の最短距離を補間。つまり、180度しか回転していません。


それぞれのメリット、デメリットを私の経験から書くと以下のようになります。
【オイラー補間のメリット】
・サイクルアニメーションを付けやすい
・XYZの値通りの姿勢になるので直感的

【オイラー補間のデメリット】
・がたついたアニメーションを修正しづらい

【Slerpのメリット】
・最短距離で補間されるので、意図してない動きになりづらい

【Slerpのデメリット】
・サイクルアニメーションが付けづらい
・何回転もするようなアニメーションがつけれない

それぞれの補間の仕方にはメリット、デメリットがあるので適材適所で選択していければ
アニメーションのコントロールがしやすくなる分、試行錯誤の時間が稼げると思います。

2015年3月17日火曜日

【Plug-In】シミュレーションをバージョンアップ

以前にIKハンドルをリアルタイムシミュレーションする記事を書きました。
そのプラグインの機能を幾つか追加してバージョンアップ。

追加した機能とは
・IKハンドルの間(骨の途中)でも円柱の衝突判定を出来るようにした
・ConeLimit(円錐の制限)を追加

今までは円柱との衝突判定はIKハンドル自体では出来ていたのですが
骨の間隔が広い場合IKハンドルの間を円柱が通ってしまうことがありました。

今回のバージョンアップで骨の途中でも衝突判定が出来るようにしたことで
骨の間隔が広い場合でも通りぬけないで衝突判定が出来ます。




シミュレーションがONになったら重力で鉛直方向に垂れてしまうのをCone Limit の機能を追加したことでデフォルトの形状を決めることが出来るようなります。


まだ紹介していな機能がありますのでまた機会をみつけて紹介していきたいと思います。

このプラグインは以下から購入できます。