unityroomにVRゲームをアップする

VRゲーム開発

この記事は、unityroomにVRのサンプルゲームをアップしてQuest2でVRでプレイする方法を紹介します(検証していないですが、Quest1や3でも大丈夫かと思います)

以下の動画でQuestアプリがインストールされたスマホからunityroomのゲームページをQuest2に転送して、VRモードになる流れがわかります。

動画のサンプルゲームのページは以下です。

webxr-test | フリーゲーム投稿サイト unityroom

以降で、上記のサンプルゲームをunityroomにアップする方法を説明します。

サンプルプロジェクトをダウンロードする

GitHub - mathken029/webxr-test
Contribute to mathken029/webxr-test development by creating an account on GitHub.

unityroomにゲームページを作る

プロジェクトを開く待ち時間の間にunityroomにゲームページを作ります。
作成方法は以下のページを参考にしてください。ビルドやWebGLアップロードはまだ行わなくて大丈夫です。アイコンは設定しておかないとゲームページを表示できないので、なにか設定するようにしましょう。

unityroomへの投稿の仕方(Unity2020 3.x) - Qiita
はじめにこの記事は何?公式の Unity1週間ゲームジャム のページの下の方に投稿方法の記事があるのですが、【unity】WebGLビルド方法 - naichi's lab …

Unityのバージョンは以下のように設定します(Unityのバージョンが上がっている可能性があるため、最新のバージョンはリポジトリでご確認ください)

割当メモリを512MBにしたほうが動作が安定しやすい印象です。
また、スマホからゲームページを開いてQuestにURLを転送できるように以下のオプションをオンにしてください。

その他設定からゲームページのURLを確認できます。

以降の手順でエンコードしたURLが必要になるのでエンコードをしてメモしておきます。

URLエンコード・デコード|日本語URLをサクッと変換 | すぐに使える便利なWEBツール | Tech-Unlimited
日本語URLを取り扱うときに便利な変換ツールです。どのブラウザからでもアクセス可能な形式に変換します。

以下のように変換します。

必要なアセットをインポートする

Unityのライセンスの関係でUnity社のサンプルアセットはOSSとして公開できないため、除いています。そのため、インポートを行う必要があります。プロジェクトを開くと以下の画面が表示されるので、「Fix All」ボタンを押します。

以下のダイアログが表示されるので、左側のボタンを押します。

再度「Fix All」ボタンを押します。

これでインポートは完了です。

エンコードしたURLを設定する

以下にあるサンプルゲームのシーンファイルを開きます。

「OpenInQuestButton」の「Url Open In Quest」の部分にエンコードしたURLを記入してください。そしてそのURLの前に以下をコピーしてください。元々入っている値は削除してください
https://www.oculus.com/open_url/?url=

つまり、「https://www.oculus.com/open_url/?url=<デコードしたURL>」の形式になるようにしてください。こうすることで、Quest2にURLが転送されます。

完了後、プロジェクトを保存してください。

ビルドしてunityroomにアップロードする

Ctrl+Shift+Bを押して、ビルドメニューを表示して「WebGL」を選択してから「Switch Platform」を押してください。

「Build」ボタンを押して、「Builds」フォルダを新規作成してからビルドしてください。「Builds」フォルダはgitignoreに設定しているためGitHubなどにコミットされません。このようにして容量を圧迫しないようにするためです。

ビルドが完了したら、以下の記事を参考にunityroomへのアップロードを行ってください。

unityroomへの投稿の仕方(Unity2020 3.x) - Qiita
はじめにこの記事は何?公式の Unity1週間ゲームジャム のページの下の方に投稿方法の記事があるのですが、【unity】WebGLビルド方法 - naichi's lab …

Quest2からアクセスできるようにunityroomの設定で、限定公開か一般公開を選択してください。

動作確認を行う

以下の動画を参考に動作確認を行ってください。動画ではスマホで行っていますが、PCでもできます。PCにもQuestアプリのインストールが必要かもしれません。

流れとしては以下です。

  • Questアプリをインストール済みのスマホかPCで以下のゲームページにアクセスして、「OpenInQuest」ボタンを押すとどのQuestでページを開くかを選択できます
  • Questを開いて、ページ内の「別タブで開く」を押してからゲーム画面内の「ToggleVR」ボタンをコントローラで選択するとVRモードになります。

イチからやりたい人向け

本記事は以下のunity-web-exportをベースに活用しています。URPのプロジェクトテンプレートを新規に作成して以下の内容を実施することで、Github Pageなどにアップして動作するビルドを作成できます。

https://github.com/De-Panther/unity-webxr-export/blob/master/Documentation/Using-XR-Interaction-Toolkit.md

unity-web-exportはゲーム画面外にAR/VRモードに変更するためのボタンを設置して、そちらを押すことで各モードに切り替えることを想定しています。Github Pageなどにアップする場合はこの方式でVRモードに切り替え可能です。

unityroomではゲーム画面外にボタンを表示することができないため、ゲーム内にVRモードに切り替えるボタンを設置する必要があります。以下のサンプルゲームのリポジトリ内にVRモードに切り替えるための処理を書いているので、そちらを参考に実行してみてください。

GitHub - mathken029/webxr-test
Contribute to mathken029/webxr-test development by creating an account on GitHub.

QuestでゲームページのURLを開くのは以下の方法を使用しています。

#WebXR 対応ウェブサイトに Web Launch 機能がついたら Oculus Meta Browser での閲覧が捗るお話

VRのサンプルキット

イチから作り始めるのは大変なので、以下の無料のツールを使うと便利です。

XRI Starter Kit | ゲームツールキット | Unity Asset Store
Get the XRI Starter Kit package from MikeNspired and speed up your game development process. Find this & other ゲームツールキット options on the Unity Asset Store.

以下のように銃も撃てます。

インポートする際に、XR Interaction Toolkitを上書きしてしまうとうまく動作しないので以下のように「Samples」フォルダ以外をインポートすると良いです。撮影の都合上「TextMesh Pro」はチェックついていないですが、チェックつけてインポートしましょう。

WebXRに対応するステップ

WebXRのXR Originではなく、XRI-Starter-KitのXR Originを使うことになるので以下のように変更が必要です

VRへの切り替えボタンがブラウザの画面上に表示されない:Canvasの中の描画先のMain CameraをXRI-Starter-KitのXR OriginのMain Cameraに変更する

ヘッドセットのブラウザでVRモードに入ったときに、顔の動きと画面の動きが逆になる:まず、XRI-Starter-KitのXR OriginのTracked Pose Driverを無効化します。WebXRのXR Origin内のMain CameraにあるTracked Pose Driverをコピーして、XRI-Starter-KitのXR OriginのMain Cameraに貼り付けます。

VRモードに入ったときにプレイヤーの位置が高くなる:Camera OffsetのPosition Yに数値が入っていると高くなるので0にします

コメント

タイトルとURLをコピーしました