2017-03-02

camera switcher

カメラを切り替えるための Camera Switcher について紹介する。

Switcher を使うことでカメラの切り替えを行ったシークエンスを一つのストリームとして扱うことが可能になる。




使用したビルド: 16.0.534
シーンファイルへのリンクは一番下にあり。

1. 元シーンの作成

  1. 背景峡谷の作成
    1. Terrain FX タブから Terrain: Canyon を実行。

      terrain_canyon ができた。この峡谷の長さは-500から+500まで約 1000(m)、深さは 50m 程度あることに留意。
    2. /obj/terrain_canyon に入り、最下流の heightfield_erode1 の出力に Time Shift ノード (timeshift1) を追加。Shift+Enter で表示フラグを timeshift1 に設定。
    3. Frame パラメータにあるエクスプレッションを RMB->Delete Channels で削除。
        Frame には 1 が残り、terrain_canyon に設定されている侵食シミュレーションが走らないようにする。
  2. Rubber Toy の作成
      ビューポートで TAB->Test Geometry->Rubber Toy を実行、Enter キーを押して原点に作成。
        testgeometry_rubbertoy_object1 ができた。ビューポート内で スペースバー+2 で Top ビューに、スペースバー+Gキーでフォーカスすると、Rubber Toy オブジェクトは、+Z 軸方向を向いていることがわかる。
  3. トーラスの作成
    1. スペースバー+1 でパースビューに戻り、スペースバー+G で Rubber Toy にフォーカス。
    2. Create シェルフの Torus を Ctrl キーを押しながらクリック。
      torus_object1 ができた。
      • Orientation を Z-Axis に
      • Radius を 1.25 と 0.25 ぐらいに
  4. パスカーブの作成
    1. terrain_canyon を選択、ビューポートでスペースバー+2 でトップビューに戻り、スペースバー+G で峡谷全体を俯瞰できるようにする。
    2. Create シェルフの Curve を クリック。curve_object1 ができた。峡谷の中央に上から下に向かってカーブを描く。Primitive Type は NURBS にする。
  5. パスアニメーションの設定
    1. curve_object1 と torus_object1 の Translate Y の値を 40程度にして谷底から上に移動。
    2. testgeometry_rubbertoy_object1 を選択、Constraints シェルフの Follow Path をクリック、(ネットワークエディタで) curve_object1 を選択、カーソルをビューポートに戻して Enter キーを押して選択を確定、さらに Enter キーを2度押して (Look at と Look Up をスキップ)、Rubber Toy がカーブに沿うようにする。
    3. testgeometry_rubbertoy_object1 を選択、ビューポートでスペース+G を押し、Rubber Toy の向きを確認。
        デフォルトでは進行方向とは逆を向いているはず。
    4. ネットワークビューで /obj/testgeometry_rubbertoy_object1/constraints/path を選択。
      • Look At Axis を +Z に
      • タイムラインの長さを 120 フレームに変更
      • Position のエクスプレッションを
        ($FF-1)/120
        とする。

      $FF はフレーム番号を実数で定義する。これによりモーションブラーなどのサブフレームに対応可能。$F は整数。よってサブフレームに対応できない。
    5. ネットワークビューで /obj に戻り、torus_object1 を選択、ビューポートでスペースバー+G を押し、カメラがトーラス形状にフォーカスしている状態にする。タイムラインをスクラブして、描いたパスカーブがトーラスの中央を通り、Rubber Toy がトーラスの中をなんとなくくぐるような感じにする。

      65フレーム目
  6. Pyro シミュレーションの設定 (なくとも良い)
    1. torus_object1 を選択したまま 1 フレーム目に戻り、Pyro シェルフから Flames を実行。
        トーラスが炎の輪になる。
    2. /obj/torus_object1/create_fuel_volume の fuel の Scale を .5 程度にして、炎を弱める。

      65フレーム目
これでシーンの設定は終了。次にカメラの設定に移る。

2. カメラの作成

  1. 一つ目のカメラ (固定 cam1) 作成
      1フレーム目に戻り、ビューが (1-5-5のように) torus_object1 にフォーカスしている状態で、Lights and Cameras シェルフの Camera ツールを Ctrl キーを押しながらクリック。

      cam1 ができた。このカメラはトーラスに固定。
  2. 二つ目のカメラ (追従 cam2) 作成
    1. testgeometry_rubbertoy_object1 を選択。ビューポートでスペースバー+G を押し、カメラが Rubber Toy にフォーカスしている状態にする。
    2. 上の状態からビューをY軸回転、Rubber Toy の後方から見ている状態で、Lights and Cameras シェルフの Camera ツールを Ctrl キーを押しながらクリック。

      cam2 ができた。ただし、タイムラインをスクラブすれば、Rubber Toyだけが前進、カメラは置いて行かれる。
    3. cam2 の Keep Position When Parenting をオンに。ネットワークエディタで、testgeometry_rubbertoy_object1 の出力を cam2 の入力に接続。

      再生すれば、cam2 は Rubber Toy に追従する。

      このまままでは面白みに欠ける。
    4. cam2 のTranslate ラベル上で RMB->Motion FX->Noise を実行。別パネルに表示される Amplitude を 1 ぐらいに。再び再生するとカメラにノイズを元にした揺れが追加されたのがわかる。

      揺れを弱くしたければ Amplitude をさらに低くする。
  3. 三つ目のカメラ (Look-at cam3) 作成
    1. 120 (最終)フレームに進み、testgeometry_rubbertoy_object1 を選択、ビューポートでスペースバー+G を押し、カメラが Rubber Toy にフォーカスさせ、さらにカメラ位置を調整してカメラが Rubber Toy と正体するようにしてLights and Cameras シェルフの Camera ツールを Ctrl キーを押しながらクリック。

      cam3 ができた。
    2. cam3 を選択、Constraints シェルフから、Look At ツールをクリック、Rubber Toy を選択して Enter、もう一度 Enter を押して Look Up オブジェクト指定をスキップ。これで、cam3 は Rubber Toy3 の動きを捉えるようになった。
これでカメラの設定は終了。次にSwitcher の設定に移る。

3. Camera Switcher

設定したカメラを下記のように使いたいとする。

    1 1 ~ 24 フレーム
    cam1
    2 25 ~ 48 フレーム
    cam2
    3 49 ~ 72 フレーム
    cam1
    4 73 ~ 96 フレーム
    cam2
    5 97 ~ 120 フレーム
    cam3
  1. ネットワークパネルで TAB-> Switcher を実行。作成された switcher1 に cam1, cam2, cam3 の順番に接続。

    switcher1 の Switch Camera パラメータ 0が cam1、 1 が cam2、 2 が cam3 になる。
  2. ビューポートのカメラメニューを switcher1 に変更。
  3. 1フレーム目で Switch Camera の値を 0 (デフォルトのまま)に、ラベルを Alt+LMB クリック、キーフレームが設定される。
  4. 25フレーム目で Switch Camera の値を 1 に、ラベルを Alt+LMB クリック、キーフレームを設定。
  5. Switch Camera のラベルを Shift+LMB クリック、Animation Editor を表示する。
  6. エディタ上のキーフレーム2つをバウンディングボックス選択して、上の図の右の方、赤で囲われた Constant をクリック。

    ステップカーブとなった。
  7. 49フレーム目に進み、左下、下記図で赤で囲われたところに 0 (cam1) を入力。Alt+LMB クリックすればキーフレームが設定される。
  8. 同じ要領で、73フレーム目に 1 を入力して Alt+LMB、97フレーム目で 2 を入力して Alt+LMB をクリックすれば下記のグラフになる。
  9. 一番上の左から3番目をクリックすれば、Dopesheet に切り替わるので、ここでタイミングを調整することも可能。

    キーをクリックすれば、LMB で移動可能。
こうして設定したswitcher1 のビューを Playblast すると、パスカーブやカメラの位置など微調整はさらに必要だが、一番上の Gif 画像になる。

おまけ

Camera Switcher 機能は Houdini 16 からの機能ではなく初期の Prisms からある。一説によれば SideFx の現社長 Kim Davidson が当時の機能を書いたらしい。

1 件のコメント:

  1. 大変勉強になりました。ありがとうございます!

    返信削除