Back of the flyer

裏が真っ白なチラシがないので、ここに綴る

UnrealVRSpectatorUtilitiesPluginのビルドエラーについて

訂正

2020年12月アドカレで【VRSpectatorScreenにUMGを表示する方法】を投稿しました。

tark146.hatenablog.com

 

そして、こう記載しました。

C++分からなくても実装できる...と。

戒めの魚拓(心のジョルノがすまん、ありゃ嘘だと言っている)

f:id:TARK146:20211005122453p:plain

-------------戒め終了--------------

 

記事を読んでいただいた方から、パッケージエラーが出る質問を受けて、

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"});

 

参照リンク:https://forums.unrealengine.com/t/solved-headmounteddisplaytypes-generated-h-no-such-file-or-directory/143696/3

注意:リンク先のコードをコピペするとString[のあとに"]"が抜けているので気を付けてください

 

あとは、レベルブループリントを組んでパッケージ化を実行すれば完了です。

 

補足の補足

プラグインをエンジンフォルダにも入れていたら競合するから気を付けて

(僕は毎年恒例行事のようにハマってます)

第16回ぷちコンの振り返り ネタだし編

初めに

ヒストリア様が企画している学習コンテストに初参加しました

応募作品「未知草。」youtu.be英語、解説字幕アリです

企画

当初は、道というテーマで交通整理のゲームを検討しました
youtu.be
しかし、ぷちコン参加した裏テーマが「完璧を求めず、ちゃっちゃと作る」だったので、もっとシンプルなものにしようと没にしました

 

夏休みの宿題を8月末やるタイプなので、あっという間に締切1週間前...

もういいや...出すのやめよう..仕事の締切もあるし...

遅くなったしシャワー浴びて寝よう...

 

そんな深夜2時にネタが浮かんだので、勢いで整理しました

 

思考整理

思考整理のツールとして下記のツールを使用しています

  •  Notion
  • Frieve Editor

とくに、Frieve Editorは直感的にアイディアを作成して、
自由にリンクをつなげるので愛用しています
f:id:TARK146:20210921120618p:plain

 

テーマ決定

未知飛行物体の攻撃により、地面が底なし沼に。手すりや電柱を伝って移動するアクションゲーム「未知草。」となりました

 

次回気が向いたら実装部分の説明をしたい

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でリプレイ実行するとき困ったこと 

宜しくお願いします。

 

VR Spectator Screen機能に操作可能なUMGを表示したい

VR Spectator Screen機能使っていますか?

なにそれ?という方は是非、おかずさんのブログを確認してみてください。

pafuhana1213.hatenablog.com

  

VR Spectator Screen機能は、HMD上の映像とは異なる映像をPCモニタに出力する機能です。

f:id:TARK146:20201218091754p:plain

 

VRHMD画面

f:id:TARK146:20201219145057p:plain


PCモニタ出力画面

f:id:TARK146:20201219145016p:plain

この機能を使っていると、図のようにPCモニタに専用のUMG表示したいとふつふつ感じるわけです。 しかし、PCモニタ上に表示されているものは、テクスチャです。

 

Inside UnrealでVictor Brodin氏は、

通常、テクスチャ上にUMGを表示する方法はないと述べており、

BlueprintでUMGを表示したい場合は、3DWidgetをカメラアタッチし、画面のマウス位置を取得する方法を提案しています。

1:06:30より~該当箇所

youtu.be

 

 

解決案 

いろいろ模索した結果、Unreal Engine Forumsに解決方法がありました。

目的に合致するものは「UnrealVrSpectatorControl」でした。

github.com

 

 UnrealVrSpectatorControl仕組み
(バーチャルリアリティテンプレートの場合)

f:id:TARK146:20201219182834p:plain

  1. レベルで、SceneCapture2Dより描画ターゲットを取得
  2. PawnにWidgetとWidgetInteractionを配置し、描画ターゲットを表示
  3. PawnのWidgetをTextureとしてSpectatorScreenに設定 f:id:TARK146:20201218104100p:plain

 そしてSpectatorScreen上のマウス位置情報を取得し、Widgetの位置に変換WidgetInteraction位置を設定しています。

 Calem Bendell氏の関数f:id:TARK146:20201218111143p:plain

詳しくは、氏のドキュメントを確認してください。

https://calben.github.io/UnrealVrSpectatorControl/#/

C++のコードを見たらそっとサイトを閉じる方。わかる。わかります。私も同じ。でも、一緒に勉強しましょう!あ、ちなみに、プラグインで配布もされているからC++分からなくても実装できました。
【2021/10/05】一部環境でコード作業が必要でしたので、記事を投稿しました。

tark146.hatenablog.com

f:id:TARK146:20201216125154p:plain

是非試してみてください。

 

新たな課題の発覚

HMD装着時の低FPSです。

再現性

ビルドもしくは、スタンドアローンでVRSpectatorScreenを実行。

HMDを外すとVRSpectatorScreenのFPSがガタ落ちする。PIEでは起きない。 

 

暫定対応

HMDを外した時、SpectatorScreenをオフにして、非VRPawnでUMGを表示

f:id:TARK146:20201219164031p:plain

もし、いい対処法があったらヒントをいただければ幸いです。
 

ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー

VR体験をリプレイで確認したい

 課題

リプレイシステムの何がわからないかが、わからない。

リプレイ以前に学ぶべき仕組みを理解してない。

 

解決策

公式ドキュメントを熟読。

docs.unrealengine.com

 

マルチプレイヤーにセットアップされたプロジェクトは、リプレイ システムと互換性があるという点から、マルチプレイの仕組みを押さえていないと学習が進まないことに気づきました。

 

私はまったく分からなかったので、書籍やSlideShareYoutubeで学習。

UE4 ネットワークゲーム開発入門

www.shuwasystem.co.jp

www.slideshare.net

youtu.be

なんとなく理解ができたところで、C++を写経し、手を動かす。

youtu.be

 

そして、コンソールコマンドでリプレイできることにようやく気付く。

 

 過程や方法なぞどうでもよいのだーという人は、ThirdPersonテンプレートを作成し、ThirdPersonCharacterに下記を追加するだけで、リプレイが実行できます。

f:id:TARK146:20201218172750p:plain

 やったね!

 

 VRテンプレートにリプレイ実装時のエラー例

 同じ要領でVRテンプレートにReplayを実装した時につまずいた点を紹介

 

エラー①録画時に水色の箱を掴んでも、Replay時に反映されない

f:id:TARK146:20201218174908p:plain

原因

f:id:TARK146:20201218175023p:plain

 Replicate MovementとReplicatesにチェックを入れてなかった。

マルチプレイ同期には必須な項目でした。

 

エラー②VRPawnの動きがカクカクする。

これはなかなか情報源がなく、探すの苦労しました。

画面がカクカクする=choppy?

見つかりました!

 

原因

”demo.RecordHz”の値が低かった。デフォルト値=8

コンソールコマンドで60に変更  

 

 

最後に

まとまりのない記事となってしまいましたが、どこかの誰かに刺さる内容であれば幸いです。