その他
    ホーム 技術発信 DoRuby 簡易リグで綺麗なカメラの軌道を描く
    簡易リグで綺麗なカメラの軌道を描く
     

    簡易リグで綺麗なカメラの軌道を描く

    この記事はアピリッツの技術ブログ「DoRuby」から移行した記事です。情報が古い可能性がありますのでご注意ください。

    はじめに

    最近はカメラモーションを使った演出などを考える機会が増え、カッコいいカメラワークを模索しています。
    というわけで、コンストレイントを使ってカットシーン制作などで必要になってくるカメラモーション用の簡単なリグを作ってみます。

    コンストレイントって何だ?という説明については前回の記事で軽く触れておりますので割愛します。

    カメラモーションは綺麗な軌跡を

    カメラワークも想定したモーションにおいて、ダイナミックなシーンや注視点をより際立たせるために気をつけたいことがあります。

    それが、
    綺麗なモーション軌跡を描くことです。
    見ていてカメラの動きに違和感を感じてしまうようだと、頑張って付けたお気に入りのキャラクターモーションや壮大な背景モデルが台無しです。

    3DCGにおけるカメラの構造

    MAYAでは、常にあるオブジェクトの方向を向かせるエイムコンストレントという便利な機能があります。
    エイムコンストレントはキャラクターの視線や顔の方向を制御するために使われることがあるもので、カメラの注視点固定用にも使えます。

    しかし、エイム対象とカメラだけを作成してそれらにキーを打ってカメラワークを作ろうとすると綺麗なモーション軌跡を作ることが難しくなってきます。

    例えば背の高いオブジェクトを
    下から上へオブジェクトを中心にその周りをぐるっと1周しながら近づいていくカメラワークを作るとします。
    カメラの移動に直接キーを打って作ってみるとガタガタとした軌跡になりがちです。

    画像1

    また軌跡を綺麗にするためにはその分たくさんキーを打たなくてはならなかったり、
    修正が出て1周ではなく2周するよう要望が出た際、作り直しにかかる時間が多いのと修正作業が大変なのとであまり賢いとは言えません。

    グループノードでリグを作る

    綺麗な軌跡を作りたい時はカメラに対してどのような動きをしてほしいかを考え、それに応じたリグを作ってあげることが無駄の出ない方法だと思います。
    具体的な方法としてはカメラを適当なオブジェクトなどにコンストレインしその上に制御用のグループノード階層を作り、それらに対してキーを打っていくというやり方です。

    画像2

    画像の構造では最下層のcampointにカメラをポイントコンストレイントしてその上にある
    cam_trsでローカルのカメラの移動を制御
    cam_rttX、Yでグループノードの回転軸を中心としたカメラの移動を制御します。

    今回は注視点を中心にしてカメラがY軸に下から上へ一周回転しながら近づいていく動きをしてほしいので
    cam_trsでZ軸(中心に近づいていく軸)とY軸(上下に移動する軸)の移動にキーを打ち、一周回転はcam_rttYにてY軸回転値の開始フレームに0、最終フレームに360と数値を入力します。
    こうすることでガタつきのない綺麗なモーション軌跡を描くことができるかと思います。(見えづらくて申し訳ないです)

    画像3

    キーを比較してみましょう。上がカメラの移動でつけたアニメーションカーブ、下がリグでつけたアニメーションカーブです。

    画像4
    カメラの移動で頑張ってつけたモーションはこんなにキーを打ってしまっているのに対し、
    リグを使って付けたモーションでは開始フレームと最終フレームにしか打っていません。
    2周にしてくれと要望が出た際はcam_rttYの最終フレームの値を360から720にするだけで済むので急な変更にも対応できます。

    グループノードでは親の階層の動きが子の階層に継承されていくため 階層の順番 や 各ノードの中心軸 を慎重に考えながら作ることが注意点です。
    また、rtt_X、Yのように回転をわざわざ分けている理由は一つのグループノードで3軸動かそうとするとジンバルを起こしてアニメートしづらくなってしまうためでもあります。

    作り方は人それぞれですが場面に応じた作り方で作りやすいリグを考えて作る習慣を身につけると無駄な時間を費やす事にならずにすみます。

    おわりに

    今回の階層に分けたリグでアニメートする、という方法はとても初歩的なものですが、コンストレイントとリグを組み合わせて使っていくことでイメージ通りの動きを実現できるようになると思います。
    筆者もたくさん試して応用力をあげたいところです。