AfterEffectsにUnityのシミュレーションの動きをキーフレーム付きで持っていく方法
すぐ忘れてしまうので見返せるようにメモっておく
出来るもの→https://twitter.com/EffectsKoji/status/1463754983229120514
いつもはTwitterにメモしてるので気になる方はフォローお願いします
Twitter:https://twitter.com/EffectsKoji(@EffectsKoji)
まぁ自分用なので適当にまとめる
1.AEで3Dカメラトラックで平面とカメラを作成する
後々この平面を基準にUnityでシミュレーションをする
2.Blenderのアドオン:AE2BlendでAEのカメラをBlenderに持っていく
AEで作った3Dトラッカーカメラを選択してUキーを押してキーフレームを表示させる
位置と方向のキーフレームが出るはずなのでそれを同時に全て選択してCtrl C(Cmd C)でコピーする
BlenderのAE2BlendでCreate Cameraをクリックすると自動でコピーしたカメラが作成される
作成されたカメラのキーフレームはAEでは0からだけどBlenderでは1から始まるので、Blenderで開始キーフレームを0にして終了キーフレームはデフォルトでは250になってるのでBlenderのタイムラインの黄色いキーフレームの点を見て終了の数値を見て入力(日本語変だけど分かればおk)
アニメーションのFPSもAEと合わせておく
更に、AEの3Dトラッカーカメラをダブルクリックして、焦点距離をコピーする(この時詳細の数値を見るために数値をクリックすること)
BlenderでCamera_Transformの子になっているカメラを選択して、レンズの項目にある焦点距離にペーストする(レンズ単位をミリメーターにすること)
3.Blenderのアドオン:AE2BlendでAEの平面をBlenderに持っていく
AEで作った平面の大きさと回転を好きにいい感じに調整した後、平面の位置とスケールと方向を選択してコピー
BlenderのAE2BlendでCreate Planeをクリックすると自動でコピーした平面が作成される
4.上手くBlenderに持っていけてるかチェック
ここまで上手くいってれば、Blenderで0(ゼロ)キーを押してカメラ視点に切り替えると平面がAEと同じように見えて、タイムラインを動かすと同じように動く
5.FBXで書き出してUnityに持っていく
実はこの時点では原点座標や回転軸がUnityと違ったりなんだけどBlenderではなくUnityで直すので無視して普通にFBXでエクスポート(エクスポート設定で、Blenderで見て上の軸を上にして前方の軸を前方になるようにして、トランスフォームを適用にもチェック)
6.Unityにインポートして設定を変更
エクスポートしたFBXをUnityに入れたら、AnimationタブのAnim.CompressionをoffにしてApplyを押す
7.FBXをシーンに配置して位置や回転、大きさを調整
FBXをシーンに配置したら、まず親子関係を外し、Plane Transformの子に元々の親である空オブジェクトとCamera Transformオブジェクトを入れる
その後Plane Transformの座標を原点(0,0,0)とか好きな場所に合わせて大きさも調整する
全て調整後、元々の親子関係に戻しておく(元々の空オブジェクトの中に平面とカメラ)
8.アニメーションを適用
親の空オブジェクトにAnimate Controllerを付けて、アニメーションをFBX内のアニメにする
9.上手くいってるかチェック
ここまで上手くいってれば、シーンを再生するとカメラが動きAEの平面と同じように見える
10.シミュレーションを録画とアニメーション化
UnityはHDRPを使っているのでHDRPでの説明
UnityのRecorderをPackageManagerからインストールする
Recorderウィンドウを開いてシーンの動きを録画する(背景を抜きたい時はカメラのEnvironmentから背景をColorにしてAlphaを0にしておく)
背景のAlphaを0にする場合VolumeのProfileでExposureはFixedにした方が良いかな、カラーの背景によって露出が変わるのは実写と合成した時におかしくなるからね
Recording ModeをFrame Intervalにして開始と終了をカメラのアニメーションと合わせておく
Add RecorderでMovieとAnimation Clipを設定する
Movieの方はAlphaを設定するためにカメラをTaggedCameraにして設定する
シーンを再生する時に動く予定のオブジェクトを全て、1つの空オブジェクトの中に入れる(※※ただしBlenderから持って来たカメラとか平面の入ったやつは入れない※※)←重要
AnimationClipのGameObjectのとこに今作った全てが入った空オブジェクトを設定
これでSTART RECORDINGを押すことでゲームビューの録画と同時にシーンの物理的な動きを全てアニメーションとして保存してくれる
11.またBlenderに持っていく
さっき作った、動くものが入っている空オブジェクトにAnimationControllerを付けて、そのアニメーションをRecorderで作成したアニメーションにする
そして空オブジェクトの中に入っている子オブジェクト全てのRigidBodyのIsKinematicにチェックを入れる(アニメーションで動かすため物理挙動を消すためなのでRigidBodyを削除してもok)
空オブジェクトを1つ新たに作り、カメラと平面の入っている空オブジェクトと、動くものが入った空オブジェクトを入れる
そして今作った空オブジェクトを右クリックして、Export to FBXで書き出す(PackageManagerからFBX Exporterをインストールしてね)
それをBlenderでインポートする
12.Blenderでカメラの向きを直す
Blenderに持っていくと、カメラの向きがおかしいので、カメラのZ軸回転を+180°する(CameraTransformではなく、その子オブジェクトになっているカメラの方ね)
13.上手くいってるかチェック
0キーを押してカメラからの映像にしてUnityのシーンと動きが同じかどうかチェックする
14.AfterEffectsにもっていく
Blenderで全てのオブジェクトを選択した状態でio_export_after_effectsというアドオンを使って、jsx形式で書き出す(io_export_after_effectsは持ってない人はググって探してね)
15.AfterEffectsでごにょごにょ
AEでファイル->スクリプト->実行で今作ったjsxを実行するとコンポジションの名前を決めるウィンドウが出てくるので適当に名前を付けてokする
そのコンポジションの中にカメラの動きを含めたオブジェクトのキーフレームが全て入っている
AEの実写映像の上に、UnityのRecorderで録画しておいた、動画のファイルを置くと合成できる
さらにjsxで作られたコンポジションを置くとキーフレームも重ねることが出来る
jsxで作られたコンポジションの中でキーフレームを使ってごにょごにょすれば何でもやりたい放題だな
良かったらYouTubeも見てね!!
YouTube:VFXこーじ