VR Spectator ScreenのUMG表示とVRPawnのリプレイ挙動について
本記事はUnreal Engine 4 (UE4) その3 Advent Calendar 2020 21日目の記事です。
UE4.26で作成。
はじめに
こんにちは。TARKと申します。
家業の配管屋を手伝いながら、トレーニングVRを作っています。素人の私がVRアプリを作成するうえで、UE4の公式ドキュメント、オンラインラーニング、SNS、書籍より学んだ情報を自己解釈混じりでお伝えしたいと思います。
主な内容
宜しくお願いします。
■VR Spectator Screen機能に操作可能なUMGを表示したい
VR Spectator Screen機能使っていますか?
なにそれ?という方は是非、おかずさんのブログを確認してみてください。
VR Spectator Screen機能は、HMD上の映像とは異なる映像をPCモニタに出力する機能です。
VRHMD画面
PCモニタ出力画面
この機能を使っていると、図のようにPCモニタに専用のUMG表示したいとふつふつ感じるわけです。 しかし、PCモニタ上に表示されているものは、テクスチャです。
Inside UnrealでVictor Brodin氏は、
通常、テクスチャ上にUMGを表示する方法はないと述べており、
BlueprintでUMGを表示したい場合は、3DWidgetをカメラアタッチし、画面のマウス位置を取得する方法を提案しています。
1:06:30より~該当箇所
解決案
いろいろ模索した結果、Unreal Engine Forumsに解決方法がありました。
目的に合致するものは「UnrealVrSpectatorControl」でした。
UnrealVrSpectatorControl仕組み
(バーチャルリアリティテンプレートの場合)
- レベルで、SceneCapture2Dより描画ターゲットを取得
- PawnにWidgetとWidgetInteractionを配置し、描画ターゲットを表示
- PawnのWidgetをTextureとしてSpectatorScreenに設定
そしてSpectatorScreen上のマウス位置情報を取得し、Widgetの位置に変換しWidgetInteraction位置を設定しています。
Calem Bendell氏の関数
詳しくは、氏のドキュメントを確認してください。
C++のコードを見たらそっとサイトを閉じる方。わかる。わかります。私も同じ。でも、一緒に勉強しましょう!あ、ちなみに、プラグインで配布もされているからC++分からなくても実装できました。
【2021/10/05】一部環境でコード作業が必要でしたので、記事を投稿しました。
是非試してみてください。
新たな課題の発覚
再現性
ビルドもしくは、スタンドアローンでVRSpectatorScreenを実行。
HMDを外すとVRSpectatorScreenのFPSがガタ落ちする。PIEでは起きない。
暫定対応
HMDを外した時、SpectatorScreenをオフにして、非VRPawnでUMGを表示
もし、いい対処法があったらヒントをいただければ幸いです。
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
■VR体験をリプレイで確認したい
課題
リプレイシステムの何がわからないかが、わからない。
リプレイ以前に学ぶべき仕組みを理解してない。
解決策
公式ドキュメントを熟読。
マルチプレイヤーにセットアップされたプロジェクトは、リプレイ システムと互換性があるという点から、マルチプレイの仕組みを押さえていないと学習が進まないことに気づきました。
私はまったく分からなかったので、書籍やSlideShare、Youtubeで学習。
なんとなく理解ができたところで、C++を写経し、手を動かす。
そして、コンソールコマンドでリプレイできることにようやく気付く。
過程や方法なぞどうでもよいのだーという人は、ThirdPersonテンプレートを作成し、ThirdPersonCharacterに下記を追加するだけで、リプレイが実行できます。
やったね!
VRテンプレートにリプレイ実装時のエラー例
同じ要領でVRテンプレートにReplayを実装した時につまずいた点を紹介
エラー①録画時に水色の箱を掴んでも、Replay時に反映されない
原因
Replicate MovementとReplicatesにチェックを入れてなかった。
マルチプレイ同期には必須な項目でした。
エラー②VRPawnの動きがカクカクする。
これはなかなか情報源がなく、探すの苦労しました。
画面がカクカクする=choppy?
見つかりました!
原因
”demo.RecordHz”の値が低かった。デフォルト値=8
コンソールコマンドで60に変更
Replay demoRecordHz 比較#UE4Study pic.twitter.com/s7TeoT8Yih
— TARK (@LideTark) 2020年12月18日
最後に
まとまりのない記事となってしまいましたが、どこかの誰かに刺さる内容であれば幸いです。