こちらは ミライトデザイン Advent Calendar 2023 の24日目の記事となっています。
23日目は suzuki-hoge さんの 「身体的疲労との付き合い方」 でした。
自分はもうそろそろで40代後半に突入しそうな歳で、若い時のように無茶をするのは無理な体になってきています。
こまめに体をほぐしたりするだけでも疲れ具合が軽減されるので、こちらの記事の内容を参考にしてあまり疲労を溜めないようにしようと思いました。
はじめに
Quest3を手に入れたので、せっかくなのでUnityを使って色々作って遊ぼうと考えています。
なので、まずは簡単なアプリを作ってみてQuest3での開発がどんな感じなのかを知ろうと思い立ちました。
自分が作業しながらメモした内容等を箇条書きでまとめた状態にしています。
Quest3とは直接関係ない部分(主にStep1)もありますが、自分と同じようにQuest3で初めてアプリを作る方の参考になれば良いなと思っています。
Step 1 環境構築
PC周りの設定
MacからWinodwsへの接続
- Windows機がHomeエディションでリモートデスクトップが使えなかったのででProへアップデート
- Windows上で「システム設定」からリモートデスクトップを有効化
- MacにRemote Desctop をインストールして接続
- コンピュータ名はWindowsのマシン名の後ろに
.local
を付与する- 例:
SurfacePro8.local
- 例:
- 接続用のユーザー名はコマンドプロンプトから
whoami
コマンドで確認出来る- [ドメイン名][ユーザー名] の形式で表示されるのでそれをそのまま使用する
- 例:
surfacepro8\frozenvoice
- もしくは、MicrosoftアカウントでPCにログインしている場合はそちらのID/PassでもOK
- 接続設定で「Use all monitors」をONにして、Mac側のディスプレイ全てをWindows側でも使えるように設定
- コンピュータ名はWindowsのマシン名の後ろに
Unity準備
インストール
- Unity Hubをダウンロードしてインストール
- Unity HubからUnityをインストール
- 自分が作業した時点の最新は
2022.3.16f1
だったのでそちらを利用
- 自分が作業した時点の最新は
- Unity HubでインストールしたUnityに下記のモジュールを追加
- Android Build Support
- Android SDK & NDK Tools
- OpenJDK
- Android Build Support
Meta Quest Developer Hub準備
インストール
- Meta Quest Developer Hubをダウンロードしてインストール
実機との接続確認
- Quest3の開発者モード有効化
- 自分は既にImmersedを有線接続するために開発者モードをONにしているのでそのままでOK
- WindowsPCとQuest3をUSBケーブルで接続
- Meta Quest Developer Hub を起動
-Device Managerのタブで 「Set Up New Device」を選択してQuest3を登録 - 「Cast」をしてみてQuest3で見えてる映像がPC側でも見えることを確認
Step 2 VRアプリを作る
Hello World的な簡易アプリ作成
Quest3向けのプロジェクト設定
- Unity Hubで新規プロジェクトを作成して起動
- メニューから「File」 → 「Build Setting…」を選択して下記を設定
- 「Platform」 で
Android
を選択 - 「Texture Compression」 で
ASTC
を選択 - 「Switch Platform」ボタンを押下
- 「Platform」 で
- メニューから「Window」 → 「Asset Store」 を選択してAsset Storeを表示
- 「Open Package Manager」 を押下
- 左上「+」マークから「Add package by name…」を選択
-
com.meta.xr.sdk.core
を 入力して 「Add」ボタンを押下 - インストールが終わると「Restart Unitiy」のダイアログが出るので「Restart Editor」のボタンを押下して再起動
- メニューから「Edit」 → 「Project Settings…」を選択
- 左側ツリーから
Oculus
を選択して、右側ペインで「Fix All」ボタンと「Apply All」ボタンを押下
- 左側ツリーから
アプリ作成
- 「Hierarchy」 タブから
Main Camera
を削除 - 「Project」タブのツリーで
Packages > Meta XR Core SDK > Prefabs
を選択-
OVRCameraRig
を 「Hierarchy」タブにドラッグ&ドロップして追加 - 「Inspector」タブの「OVR Manager」部分で 「Target Device」として
Quest 3
がデフォルトだとOFFなのでONに変更
-
- 「Hierarchy」タブの左上「+」マークから「3D Object > Cube」を選択
- 動きがないと面白くないので、下記のスクリプトを作成してCubeにアタッチ
回転用スクリプト
using UnityEngine;
using System.Collections;
public class RotateCube : MonoBehaviour {
void Update () {
float deg = 30.0f * Time.deltaTime;
transform.Rotate(new Vector3(deg, deg, 0));
}
}
Step 3 PCとQuest3を接続して実機で確認
実機で動作確認
- PCとQuest3をUSBケーブルで接続
- Unity上で「File」→「Build Settings…」を選択
- 「Run Device」 で
Oculus Quest 3
を選択 - 「Build And Run」ボタンを押下
- 「Run Device」 で
Step 4 MRアプリに変更する
パススルーを有効化して外部を表示
- 「Hierarchy」タブに追加した
OVRCameraRig
を選択 - 「Inspector」タブの 「OVR Manager」部分で下記を設定
- 「Quest Features」部分の「General」内の「Passthrough Support」 を
Supported
に変更 - 「Insight Passthrough」 のチェックボックスを
ON
- 「Quest Features」部分の「General」内の「Passthrough Support」 を
- 「Project」タブのツリーで
Packages > Meta XR Core SDK > Scripts
を選択-
OVRPassthroughLayer
を 「Hierarchy」タブの 「OVRCameraRig」にドラッグ&ドロップして追加 - 「Inspector」タブの「OVRPassthroughLayer」部分で下記を設定
- 「Placement」 を
Underlay
に変更
- 「Placement」 を
-
- 「Hierarchy」タブで
OVRCameraRig > TrackingSpace > CenterEyeAnchor
を選択- 「Inspector」タブの「Camera」部分で下記を設定
- 「Clear Flag」 を
Solid Color
に変更 - 「Background」 を
(0, 0, 0, 0)
の黒色に変更
- 「Clear Flag」 を
- 「Inspector」タブの「Camera」部分で下記を設定
- 「Build And Run」して実機で確認
-
Ctrl + B
がショートカットなのでコレを使うのが楽
-
Building Blocksでハンドトラッキングを追加
- Unityのメニューから「Oculus > Tools > Building Blocks」 を選択
- 「Hierarchy」タブに
Hand Tracking
をドラッグ&ドロップで追加 - BuildingBlocksのCameraRigが使われるようなので、自前で追加したOVRCameraRigを削除
- 「Hierarchy」タブに
Passthrough
をドラッグ&ドロップで追加
- 「Hierarchy」タブに
さいごに
本当はハンドトラッキングでCudeを触れるようにしたかったのですが、まだ理解が進んでおらずそこまで実装できませんでした。
Quest3はライブラリ等も揃っているようなので、ちゃんと使いこなせればそれほど労力を掛けずにVR/MRアプリが作れそうかな?というのが現時点での印象です。
個人的な趣味としてVR/MRは興味があるので、じっくりと学習してなにかちゃんとしたアプリを作ってみたいところです。
来年にはAppleのVison Proも発売されるので、VR/MRの流れがそろそろで本格的に来てくれると良いなと願っています。