カメラ トラッキングとキャラクタ合成

概要

After Effectsで書き出したsceneファイルを開き、 アニメーション付きのキャラクタscene ファイルを読み込んで背景動画と合成していきます。

ここまでのAfter Effectsのカメラトラッカーの操作とMaya sceneファイルを書き出すまでの説明は下記を参照してください。

オブジェクトの調整

After Effects からAE3D_Exportスクリプトで書き出したsceneファイルを開き、全体のオブジェクト トランスフォームを調整していきます。

書き出されたsceneの中のカメラ オブジェクト複数のNullオブジェクトトランスフォーム(位置・回転・スケール)は、Mayaの座標、高さY=0の平面上にあるとは限らないので、Mayaの座標空間に合わせる必要があります。
特にすべてのNullオブジェクトは、座標 Y=0の高さの同一平面上に合わせることが理想です。

注意:カメラと複数のNullオブジェクトの相対的な位置・回転・スケールは、絶対に変更してはいけません
後の説明のように、全体をグループ化しておいて必ずグループを編集するようにしていきます。
ただし、この後で説明する「ロケータのスケール」「ローカル スケール」はこの限りではありません。

書き出した scene(.ma) ファイル

AE3D Exportスクリプトのデフォルトのオプション設定では、Mayaのスケールに合わせて単位は[ cm ]、スケールは [ 0.01 ]で書き出されます。
ただし、Mayaでのスケールを「実物大」にこだわるのであれば、適宜スケールを編集する必要があります。

次の4つの画像は、書き出したscene(.ma)ファイルをMayaで開いたものです。
Z軸プラス方向AE3Dカメラがあり、Z軸マイナス方向へ向かってNullオブジェクト8つが確認できます。

尚、ここでは、Mayaのデフォルトperspカメラと区別するために「AE3Dカメラ」と呼ぶことにします。

PersP  <クリックで拡大>

次の Side ビューだと分かりやすいですが、本来、地平面( Y=0)になければならないNullは、高さが異なっています。
この辺りをこれから調整していきます。

Side <クリックで拡大 >
Front < クリックで拡大 >
Top < クリックで拡大 >

見かけの大きさ調整

場合にもよりますが、AE3Dカメラと8つのNullを画面全体で表示しようとするとそれぞれが小さすぎて見にくいことがあります。
その場合は、次の図のようにチャネルボックスの「ロケータのスケール」で調整してください。
AE3Dカメラ「ロケータのスケール」、 Null「ローカル スケール」X, Y, Zの値を調整します。

AE3Dカメラ➡ロケータのスケール

AE3Dカメラだけを選択し、「ロケータのスケール」を見やすい大きさに調整してください。

Null➡ローカル スケール X, Y, Z

Nullは、まとめて調整できます。
すべてのNullを選択し、チャネルボックスで「ローカル スケール」のX, Y, Z すべての入力欄に同じ値を入力してください。

この例では、図のようにそれぞれ「4」倍の大きさに調整しました。

グループ化

AE3D CameraNullをひとつのオブジェクトとしてトランスフォームしていくためにグループ化しておきます。

Nullのグループ化

全てのNullを選択してグループ化してください。( 編集 > 「グループ化します」/ command(Ctrl)+G ) 
➡ グループ名を変更しておきます。(グループ名の例 「Null_GRP」)

NullグループとAE3Dカメラ のグループ化

さらにNullグループAE3Dカメラグループ化してください。 
Null_GRPAE3DCamera を選択、 編集 > 「グループ化します」。
➡ グループ名を変更しておきます。(グループ名の例 「AE_scene」)

注意: Mayaでは、グループを選択するときは必ずアウトライナグループを選択してください。
ビューポート画面上で選択しようとしても、グループに含まれるひとつのオブジェクトが選択されだけです。

グループの移動

ここからが肝心な作業。
AE3DCameraと全てのNullの位置関係を変えずに、全てのNullをできるだけ地平面(Y=0)に位置するように調整していきます。

グループのマニュピレータ(中心点)移動

準備として、[AE_scene ]グループのマニュピレータ(中心点)を移動しておきます。
Mayaでは、グループをつくるとマニュピレータは必ずワールド原点にあります。


移動先として、Nullの中で最も平均的な位置にあるNullを決めておいてください。 
➡ ここでは[ Null03 ]の位置を移動先として決めます。 [ Null03 ][ AE3D Camera ]を含めたグループの中心になります。

下記のようにしてマニュピレータの中心ハンドルをドラッグし、[ Null03 ]へスナップ移動します。

STEP
グループを選択

移動ツールに切り替え、[ AE_scene ]グループを選択します。

STEP
オブジェクトスナップ移動

Dキー Vキーを押しながら移動マニュピレータの中心ハンドルをドラッグし、[ Null03 ]へスナップ移動してください。

<クリックして拡大>

グループを座標原点へ移動

この後はすべてこの位置を基準として操作することになります。

次は、下記のようにしてグループ全体ワールド原点へ移動します。

STEP
グループを選択

[ AE_scene ]グループを選択します。

STEP
グリッドスナップ移動

Xキーを押しながら[ AE_scene ] グループのマニュピレータ中心ハンドルをドラッグし、ワールド座標原点グリッドスナップ移動してください。

<クリックして拡大>

グループの回転

次は、いよいよ[ AE_scene ]グループを回転して地平面( Y=0 )に合わせていきます。

最初にtopビューY軸水平方向に回転し、[ AE3DCamera ] カメラがワールド座標の Z 軸上( X=0 )に位置するようにします。
次に、sideビューX軸回転し、Null全体 Z 軸上( Y=0 )並ぶようにしていきます。

Y軸回転

top ビューに切り替え、次のようにして[AE_scene ] グループを Y 軸回転してください。 

STEP
グループをY軸回転

[AE_scene ] グループを選択し、[ AE3DCamera ] の位置を確認しながら、回転Yハンドルをドラッグします。

STEP
カメラ位置をZ軸上に合わせる

[ AE3DCamera ] が、ワールド座標の Z 軸上( X=0 )回転移動したらグループの回転を止めてください。

<クリックして拡大>

X軸回転

side ビューに切り替え、次のようにして[AE_scene ] グループを X 軸回転してください。 

STEP
グループをX軸回転

全てのNullができるだけZ 軸上に水平になるように[ AE_scene ] グループを回転します。

STEP
すべてのNullの並びを水平にする

[ AE_scene ] グループが、ワールド座標の Z 軸上( X=0 )回転移動し、水平に並んだところでグループの回転を止めてください。

ただし、Nullの直線状の並びから極端に外れているものは無視してください。
このようなNullは、After Effectsのカメラトラッカーによる演算誤差などの影響が大きかったトラックポイントです。

<クリックして拡大>

ここまで [ AE_scene ] グループを調整することで すべてのNullを地平面に揃え、同時に[ AE3DCamera ] の位置を調整する作業が完了しました。

 
この後は、[ AE3DCamera ] イメージプレーン背景動画を静止画シーケンスとして読み込み、最後にキャラクターのシーンファイルを読み込んで合成していきます。

perspカメラの「ファー クリップ プレーン」

perspビューの視点を引いたときに、Nullグリッドなどのオブジェクトが欠けたり、全く見えなくなる場合があります。


このような場合は、perspカメラのアトリビュートで「ファークリッププレーン」(どのくらい遠くまでビューポートで描写するか)の値を増やしてみてください。

実写動画の読み込み

After Effectsカメラトラッカーで使用した動画は、[ AE3DCamera ]のイメージプレーンに読み込みます。

ただし、Mayaで動画ファイルを読み込むと不具合が多いので、必ず事前に静止画シーケンス(静止画の連番ファイル)として書き出したものを読み込む必要があります。

読み込む静止画シーケンスについては、連番の直前に「_ (アンダースコア)」ではなく、「ピリオド」を使用しなければならなかったり、桁数は4桁までなど注意点が多くあります。

動画ファイルから静止画シーケンスを作成する方法については、下記のページを参照してください。
double_arrow

AE3D Cameraの準備

ビューポートカメラの切り替え

ビューポートを[ persp ]ビューに切り替え、下記のように、カメラを[ AE3DCamera ]視点に切り替えます。

ビューポートメニューで、 パネル > パースビュー > AE3DCamera を選びます。

カメラのロック

AE3DCamera視点では、無意識のタンブルなどの操作でカメラ視点を動かさないようカメラをロックしておきます。

ビューポート メニューで、 ビュー > カメラをロック を選択してください。

イメージプレーンと静止画シーケンス

「イメージプレーン」とは、カメラ視点に合わせてつくられる平面のことです。
この平面に静止画シーケンス画像を読み込んで表示していきます。

イメージプレーンと静止画シーケンス

ビューポートで「イメージプレーン」をつくり、静止画シーケンスを読み込みます。

STEP
イメージプレーン

ビューポートメニューで、 ビュー > イメージプレーン > イメージの読み込み… を選択してください。

STEP
静止画シーケンス

「開く」ウィンドウが表示されるので、あらかじめ背景動画から書き出しておいた静止画シーケンスフォルダを開き、連番ファイルのいずれかひとつを選択して開いてください。

静止画シーケンスの開き方: 静止画シーケンスファイルを開くときは、連番のいずれかひとつを選択して開くだけです。
ひとつを開くだけで、自動的にすべての連番ファイルが番号順に読み込まれます。

STEP
イメージプレーンの選択

ビューポートに表示された画像をクリックすると、イメージプレーンを選択できます。

STEP
「イメージシーケンスの使用」

選択するとイメージプレーンのアトリビュートエディタが表示されるので、「▼ イメージプレーンアトリビュート」「イメージの名前:」すぐ下の「イメージシーケンスの使用」にチェックを入れてください。

<クリックして拡大>

イメージシーケンスの使用:
これをチェックすることにより読み込んだ静止画シーケンスが動画として再生できるようになります。
同時に、Mayaのタイムスライダーの再生とリンクして動画が動くようになります。
静止画シーケンスを読み込んだときは、チェックを忘れないようにしてください。

イメージプレーンのロック

イメージプレーンの「トランスフォーム」ロックし、誤って動かさないようにしておきます。

STEP
選択

ビューポート画面で、イメージプレーンをクリックして選択します。

STEP
チャネルボックス

チャネルボックスで全てのトランスフォーム項目を選択します。

STEP
選択項目のロック

選択した項目の上で右クリックし、「選択項目のロック」を選びロックしてください。

<クリックして拡大>

トランスフォームのロック:トランスフォーム(移動・回転・スケール)操作だけができなくなります。
オブジェクトの選択アトリビュートの編集は可能です。

イメージプレーンの「深度」

カメラ[AE3DCamera]からイメージプレーンまでの距離を「深度」と呼んでいます。

カメラ[ AE3DCamera ]の位置は読み込んだ時点で決まっていて変更することはありませんが、イメージプレーンがカメラに近すぎるとNullも含めたMayaで作成したオブジェクトが後ろに隠れてしまいます。

必要なオブジェクトが見えるように、次のようにして深度を調整することができます。

イメージプレーン を選択 ➡ チャネルボックスの「 深度」の値をドラッグして調整します。


深度に応じてスケールも変化するので、[ AE3DCamera ]ビューの視点では変化が分かりにくいです。
下の図のように perspビューに切り替えると確認しやすくなります。

AE3DCameraからイメージプレーンまでの距離を長くすることで、必要なオブジェクトを隠さないようにできます。

「アニメーションプリファレンス」

アニメーションを再生するとき、Mayaのデフォルト設定では実際のスピードで再生されない場合があるので、次のようにして調整してください。

STEP
「アニメーションプリファレンス」

タイムスライダー右端のボタンをクリックして「アニメーションプリファレンス」を開きます。

<クリックして拡大>
STEP
「開始」と「再生スピード」

プリファレンス ウィンドウで、「開始」フレーム「再生スピード」を図のように設定してください。

「再生スピード」「フレームレート×1」に設定する。
さらに、再生開始アニメーション開始「0フレーム」に設定する。 
設定を保存し、確認のため再生する。ただし0フレームではイメージシーケンスは表示されません。

<クリックして拡大>

ここまででイメージシーケンスをアニメーション再生できるようになります。

Nullやグリッドがイメージシーケンスに対して追従しているか確認してください。


問題なければ最後にキャラクターを読み込み合成する作業に移ります。

キャラクタ オブジェクトの合成

アニメーション付きのキャラクタsceneファイルを読み込みセッティングしていきます。 
読み込むキャラクタHIKアニメーションでは必ずキーをベイクしておいてください。

ベイク及びモーションキャプチャ オブジェクトの削除については下記を参照してください。
double_arrow

ファイルの読み込み

ファイル > 読み込み… でファイルブラウザを開きアニメーション付きのキャラクタsceneファイルを選択します。
この時、下記のようにオプションを設定してください。

読み込みオプション

ブラウザ右側のオプションは、図のように設定してから読み込んでください。

<クリックして拡大>

トランスフォーム調整

読み込んだファイルは、読み込みオプショングループ化しているので、アウトライナでグループを展開してください。

ジョイントルートのグループ

キャラクタの位置・回転・スケールを調整していきます。
ただし、変更するのは「ジョイントルートのグループ」だけに限るよう注意が必要です。

<クリックして拡大>

接地の確認

front-Zビューに切り替え、キャラクタの足裏が地平面と合っているか確認してください。

この例では、元のシーンファイルで調整しているので問題はありません。
もし合っていない場合は、0フレーム=Tポーズの状態でジョイントルートグループを上下移動して調整してください。

<クリックして拡大>

アニメーション再生

タイムスライダをドラッグするか、アニメーションを再生して背景画像との整合性を調整します。
特にキャラクタの移動距離が長い場合など、必要なフレームで画面から見切れていないか確認、調整してください。

キャラクタのジョイントルートグループを選択、調整するのは次のトランスフォームだけに限ります

<クリックして拡大>

タイムエディタ

キャラクタのアニメーションで再生範囲よりうしろの時間帯に使いたい部分がある場合、「タイムエディタ」時間をオフセットして調整できます。

ジョイント ルート グループを選択、ウィンドウ > アニメーション エディタ > タイムエディタ「タイムエディタ」を開きます。

時間軸のオフセット

コンテンツを追加クリップ左へドラッグ移動、時間軸のうしろの希望するアニメーション部分が再生範囲に入るよう調整してください。

地平面(影を受ける平面)

ライトを追加する前に、キャラクタのを受けるための平面としてポリゴンプレーンを追加してください。
この平面ポリゴンのマテリアルに下記のようにaiShadowMatteを適用してください。この平面ポリゴンが照り返しを演出する地平面になります。

<クリックして拡大>

マテリアルにaiShadowMatteを適用したポリゴンプレーンは、このあとでライトを追加してから移動・回転・スケールを調整します。

<クリックして拡大>

ライトの追加と調整

ライトはイメージプレーン(背景動画)の環境に合わせて適宜設定します。

屋外など日中の自然光は、aiSkyDomeLightディレクショナルライトの組み合わせとします。

aiSkyDomeLightの注意点

図の上のようにレンダリングされると問題があるので、スカイドームライトの直接の見た目はレンダリングされないようにします。 
➡ aiSkyDomeLightアトリビュートで、Visibllity項目のCameraを「0.000」に設定しておく。

<クリックして拡大>

屋内夜間ではスポットライトポイントライトの組み合わせとします。

スポットライトとポイントライトの注意点

背景画像内の影からおおよその位置・向きを予想してライトの位置と向きを決めます。
移動するときは、最初にXZ平面上を移動し、最後にY方向に持ち上げるようにします。
マニュピレータのハンドルが見えない位置になりやすいので、4画面で操作するか、またはチャネルボックス項目名を選択 し、ビューポート上で マウス中ボタンで左右にドラッグして値を変化させてください。

<クリックして拡大>

地平面のトランスフォーム

aiShadowMatteを適用したポリゴンプレーンの大きさと位置を、時間軸上全体にわたってキャラクタの影が見切れないよう適宜調整してください。

<クリックして拡大>

カメラトラッキングで書き出したsceneとアニメーション付きキャラクタオブジェクトの合成についての説明は以上です。