2011年8月22日月曜日

とある海外のMocapデータ

仕事で海外のMocapデータをいじる仕事をやる機会がありまして、
そこで衝撃を受けました。

まず、背骨のアニメーションのアサインのされ方がMotionBuilderとは全く違う動き方なんです。
背骨と腰のアサインのされ方が生きているというか有機的な動きです。

MotionBuilderだと上半身の動き方が、どうしても硬いというか有機的な動きにならないんです。
背中に棒が入っているというかあまり動かない印象なんですけど、
そのデータ(海外のMocapデータ)は人間らしい有機的な生きた動きをしているんですよね。

次にびっくりしたのが膝が180度を超えて逆間接に曲がりながら綺麗なキャットウォークを
しているんです。普通足にIKを仕込んだら180度を超えることは出来ないかと思うんですよ、確か。
それを可能にしながらかつ足の滑りも無く綺麗に歩いている。
ぶったげました。

Mocapのキャプチャーされたデータは基本、GlobalTranslationのデータなので
そこからどう扱うかが各Mocapスタジオの腕の見せ所だと思います。

僕自身も精度の高いものを作っていけるよう、色々検証を重ねていきます。

2011年8月16日火曜日

ミラーリング

アニメーションの作業すると度々ミラーリングをしてデータを作成する機会があります。
そんなときMotionBuilderだとMirror機能を使えばキャラクターはミラーリングをすぐにできます。

次にやりたいと思うのは剣とか銃とかいわゆる武器系のミラーリングなんですね。

MotionBuilderのMirror機能を使った体のモーションに合うように武器もミラーリングする方法は、回転をどうミラーリングするかが肝になってきます。

MotionBuilderのデフォルト機能でやろうとしたんですけどそれらしい機能が見つからなかったです。

次に力技としてオイラー角をいじろうとすると思ったとおりならなかったりする場合がよくおきます。

そこで私が考えた方法として、3PointConstraintを使ってミラーリングする方法です。

1.Nullを3つ作成して、Parent/Childコンストなどで武器のデータを流し込みます
 このとき3pointConstを使うことを意識して武器の根元、先端、UPVectorに配置します。

2.Parent/ChaildのコンストをOFFにして、武器のRotaionを1で作成した3つのNullを使用して3PointConstでコンストレインします。

3.新しく親用のNullなどを原点に作成して、1で作成したNull3つを子供にします。

4.その親のScaleXを-1に設定します。これでRotationは反転することになります。

5.武器のTransXのFカーブの値に対して-1を乗算します。これでTranslationは反転することになります。

手間はかかるけど、これで武器のミラーリングをすることが出来ます。


手間がかかるから自動でミラーリングするスクリプトを作ったほうがいいかもしれないですね。

2011年8月13日土曜日

アニメーターとプログラミング

アニメーターでもゲーム開発をしているとやっぱりプログラムの知識が必要と思う機会あります。
いい物を作ろうとするとプログラマーと対等に話を進めていかないと、
有意義な話し合いにならないような気がするんですよ。

普通のアニメーターなら知らないよりは知っていたほうがいいってレベルだと思うんですけどね。

でもプログラム特にアニメーションに関するプログラム技術を知っていると色々と融通が利くことは確かです。これは実体験より。