2012年9月24日月曜日

【Rig】MotionBuilderでSplineIK

MotionBuilderでアニメーションを付けていて思うのが、鞭とか触手系のアニメーションが付けづらいというか、そういうものが出てきたらMayaとかに持って行ってSplineIKのRigを組んでアニメーションを付けていました。

そもそもMotionBuilderでSplineIKが実装されないのが不思議ですが、あったらかなり便利というか欲しいので、これまた無いなら作ろうの精神でなんちゃってSplineIKを作りました。


※動画が分かりづらかったので、更新

これは前の記事で書いたパスをアニメーションさせるプラグインと、今回新たに作成したパス上にIKのハンドルをコンストレインするプラグインを組み合わせたものです。
厳密に言うと、カーブの長さを積分して全長を算出して、その値からPathコンストレインのWarp値を計算で出力するRelationのBoxのプラグインです。


RelationのBoxとして実装しているので間に色々な物を組み合わせることが出来るので
動画のように伸び縮みするようなRigを組んだりすることも可能です。

これがあれば、関節が多い触手系や鎖、尻尾などを簡単にアニメーションさせる事が出来るようになりました。

2012年9月23日日曜日

画角と焦点距離のお話

カメラの話をしていると、焦点距離50ミリレンズが人間の見た目と同じパース感だとか、
人物をとるときは60~70ミリが良いよとか、風景は広角がいいよとか言います。

ただ、この時に言われてるレンズのミリ数というのは35ミリフィルムというサイズの時のお話です。
この35ミリフィルムサイズ以外にもCGの場合は出力する媒体で
特殊なフィルムサイズを採用したりする場合があります。
35ミリフィルムサイズ以外のフィルムサイズの場合の時は、
上記で言われているレンズのミリ数を同じにしても見え方が変わってくるんです。

これは、焦点距離(Focal Length)と画角(Field Of View)が密接に関わっていることは明白ですね。

ここで基準として考えるのは画角の値で、この値が同じでフィルムサイズが変わった時に焦点距離は変わってきます。
今回は焦点距離と画角とフィルムサイズの関係を式で見ていきます。

フィルムからレンズまでの距離をいわゆる焦点距離(Focal Length)といい、上図でいうbになります。
フィルムの半分の長さがcになります。これらの関係式を表すと高校の数学で習った以下の式がでてきます。
 これをbについて整理すると

になります。このときθの値というのはFOVの半分の値になります。つまり、画角とフィルムの半分の長さがわかれば焦点距離がわかるというわけです。

つまり上記の式から、θに画角(縦の画角または横の画角)の半分の値を代入し、35mmフィルムの縦又は横のフィルムサイズの半分をCに代入すれば焦点距離が算出できるというわけです。

このような式をRelationコンストで作ってあげて、カメラにCustomProperties作成してつなげてあげれば、いつでも35mmフィルムサイズのときの焦点距離を確認しながらアニメーションが付けれるようになるので効率的になります。

計算するときに気をつけないといけないのが、CGソフトでフィルムサイズはインチで表記されているのが多いのでミリに変換しないといけないのと、画角が縦なのか横なのかと、使用するソフトのtanの関数で「度」を使用するのか、「ラジアン」を使用するかを気をつけないといけないです。