2
1

More than 3 years have passed since last update.

【UE4】VRの観客視点にCineCameraを使う

Last updated at Posted at 2020-06-25

きっかけ

VRネタの動画を撮影した際、キャラクタが可愛く映らなくて気になったので調べました。

やりたいこと

CineCameraで調整したキレイな絵を、VRの観客視点で利用したい!
「SceneCaptureComponent2Dで同じ絵を作る」という内容です。

↓この動画を撮る時に使いました。(HMDを被っている人には 一人称視点の絵が出ています)

注意:
この記事の内容はUE4.25.1で確認しています。
UE4.20ではキレイにキャプチャできませんでした。古いバージョンの方はご注意ください。

キャラクタモデルはNecoMaidさんをお借りしました。
https://booth.pm/ja/items/2147201

何が問題なのか

CineCamera と SceneCaptureComponent2D でパラメータ保持の方法が異なります。
前者は実際のカメラのレンズやフィルムサイズといった分類で保持するのに対し、
後者はまとめてポストプロセスデータとして保持しています。

そのため、パラメータを一部コピーしてやる必要があります。

設定まとめ

初期値から以下の項目のみ変更すればOKです。
描画負荷が高いため、一度完全な絵を作った後、個別にShowFlagを制御していくと良いでしょう。

  • SceneCaptureComponent2Dの設定

    • SceneCaptureのShowFlagを ひとまず全てONにする
    • CaptureSourceを FinalColor(LDR) にする
    • 画角と被写界深度をCineCameraパラメータからコピーする(後述)
  • RenderTargetの設定

    • 用途に応じてRenderTargetのTargetGammaを2.2にする。
    • 確認はゲーム画面で行う。テクスチャビューワでは見た目が異なる。

CineCameraから画角と被写界深度設定をコピーする

図のようなノードでSceneCaptureComponent2Dに画角・被写界深度を設定します。
固定カメラであればBeginPlayで1度だけ、動的にフォーカス変更などする場合はTickに繋ぎます。
位置・姿勢を反映するため、コンポーネントをCineCameraにAttachしておきます。

CineCameraから画角・被写界深度をコピーする
image.png

なおパラメータの対応関係を知りたい方は
エンジンソースコード CineCameraComponent.cpp の UCineCameraComponent::UpdateCameraLens() を参照ください。

他の設定項目として、CaptureSourceはFinalColor(LDR)に、観客視点であればRenderTargetのフォーマットはRTF RGBA8で十分でしょう。

FinalColor(LDR)に設定 RTF RGBA8
image.png image.png

これでCineCameraと同じ絵をキャプチャできるようになりました!

左:CineCameraの絵、右:キャプチャしたテクスチャ
image.png

めでたしめでたし。
…と言いたいところなのですが、本当に厳密には、テクスチャビューワでの見た目がほんの少し暗いです。
後段の観客視点として表示すると正しい明るさになっています。のでプレビューだけの問題ぽい…?
詳しい方がいたら教えて下さい…

ともあれ、被写界深度や画角・各種ポストフィルタも適用されたテクスチャを取得できました。

CineCameraの絵をVR観客視点に表示する

前段のキャプチャ結果をSpectatorScreenに設定します。
こちらのスレッド情報のとおり、RenderTargetのTargetGammaを2.2にします。
これでゲーム内では正しく表示されます。テクスチャビューワでの見た目は明るくなりますが気にせずOKです。

余談ですがSpectatorScreen設定はPlayInから戻っても引き継がれます。動作が紛らわしいのでEndPlayで初期値にもどしています。

観客視点に切り替え&テクスチャ設定 TargetGammaを2.2に設定
image.png image.png

これでCineCameraの映像を観客視点として表示できるようになりました!

左:VRPreviewの観客視点、右:利用しているテクスチャ(プレビューは明るくなっている)
image.png

めでたしめでたし。

おわりに

VRの観客視点は派手に盛っていきましょう。撮影が主目的であるなら、負荷軽減のためにHMD側の解像度を落とすもアリです。(ScreenPercentageで制御)
その一方で、VR視点(HMDで見る側)を盛ると不快感に繋がりやすいです。使い所にご注意ください。

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1