CollabViewerを快適なVRマルチプレイで楽しもう。Quest2編
本記事はUnreal Engine (UE) その1 Advent Calendar 2022 6日目の記事です。
- はじめに
- 快適なプレイへの道
- 起動しても画面が真っ暗でログインメニューが表示されない
- めっちゃカクカクする
- FFRDynamicを有効
- お詫び
UnrealVRSpectatorUtilitiesPluginのビルドエラーについて
訂正
2020年12月アドカレで【VRSpectatorScreenにUMGを表示する方法】を投稿しました。
そして、こう記載しました。
C++分からなくても実装できる...と。
戒めの魚拓(心のジョルノがすまん、ありゃ嘘だと言っている)
-------------戒め終了--------------
記事を読んでいただいた方から、パッケージエラーが出る質問を受けて、
Blueprintオンリーのプロジェクトの場合、事前準備とプラグインソースコードを変更する必要があったので補足説明いたします。
初めに
※ソースコードの知識がないので、処理が効率的ではない、誤っている点があると思いますがその際は、コメントをいただければ幸いです。
目標
4.26のVRテンプレートに”UnrealVRSpectatorUtilitiesPlugin”を入れて下記機能を実現し、パッケージ化する。
レベルBlueprintの実装
Play画像(マウスの座標を表示しています)
今回、パッケージ化を達成するためには2つの処理を行う必要がありました。
順番にやってみましょう。
1.プロジェクトにC++クラスを追加
C++のプラグインを利用するには、プロジェクト自体にc++クラスを用意しておく必要があります。
Noneを選択してMyClassを作成
2.includeエラーの対処
当方環境にて、ビルド時にHeadMountedDisplayでIncludeエラーが発生するので、事前に対処します。
VRSpectatorUtilities.Build.csを開き、茶範囲のPublicIncludepath~の下に
青範囲に下記コードを追加
PrivateDependencyModuleNames.AddRange(new string[] {"HeadMountedDisplay"});
注意:リンク先のコードをコピペするとString[のあとに"]"が抜けているので気を付けてください
あとは、レベルブループリントを組んでパッケージ化を実行すれば完了です。
補足の補足
プラグインをエンジンフォルダにも入れていたら競合するから気を付けて
(僕は毎年恒例行事のようにハマってます)
またこのエラーにハマった。
— TARK (ISKJ) (@LideTark) 2021年10月4日
毎年調べて自分のツイートに気づく。 https://t.co/wBxmnkPkFX
第16回ぷちコンの振り返り ネタだし編
初めに
ヒストリア様が企画している学習コンテストに初参加しました
応募作品「未知草。」youtu.be英語、解説字幕アリです
企画
当初は、道というテーマで交通整理のゲームを検討しました
youtu.be
しかし、ぷちコン参加した裏テーマが「完璧を求めず、ちゃっちゃと作る」だったので、もっとシンプルなものにしようと没にしました
夏休みの宿題を8月末やるタイプなので、あっという間に締切1週間前...
もういいや...出すのやめよう..仕事の締切もあるし...
遅くなったしシャワー浴びて寝よう...
そんな深夜2時にネタが浮かんだので、勢いで整理しました
思考整理
思考整理のツールとして下記のツールを使用しています
- Notion
- Frieve Editor
とくに、Frieve Editorは直感的にアイディアを作成して、
自由にリンクをつなげるので愛用しています
テーマ決定
未知飛行物体の攻撃により、地面が底なし沼に。手すりや電柱を伝って移動するアクションゲーム「未知草。」となりました
次回気が向いたら実装部分の説明をしたい
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日
最後に
まとまりのない記事となってしまいましたが、どこかの誰かに刺さる内容であれば幸いです。