LoginSignup
6
7

More than 1 year has passed since last update.

unityで作成したVR空間をoculusに実装する方法-レーザーポインターでオブジェクトを選択する方法-

Posted at

OculusとUnityの接続が無茶苦茶ハマる

OculusとUnityの接続に関して、ネット上に数多くの屍が散見します。
その屍を乗り越えて、下のような実装を行ったので、今後の自分のためにもナレッジを残そうと思います。
完成したVR空間がこちら↓

一応公式ドキュメントも貼っておきますが、このドキュメントを乗り越えるのがムチャクチャ大変です。
どMの方は、どうぞ読みといてください。

 開発環境

Image from Gyazo

Oculusの初期設定

公式ドキュメントはこちら

1 Oculusアプリをスマホに入れ、Oculusの初期設定を行う

この際に、facebookアカウントとリンクさせると、その後の設定がスムーズになります。

2 アプリからデバイスを選択し、その他の設定から開発者モードをオンにする

これをオンにすることで、自分が作ったアプリをOculus上に上げることができます。

3 PCとOculusを接続し、PCとのデータのやりとりをOculu上で許可する

この設定により、PCから作成したVR環境のデータをOculusに送信することができます。

Unityの初期設定

公式ドキュメントはこちら

1 プロジェクトの立ち上げ

Image from Gyazo

2 ビルド設定を修正

「テクスチャ圧縮」をASTCに変更
「デバイスを実行」を一度refreshを押した後に、自分のデバイスが選択できるようになるので、自分のデバイスを選択
その後「Switch Platform」を選択
終了後、左下の「Player設定」を選択
Image from Gyazo

3 Player設定を修正

企業名とプロダクト名を固有のものに設定
Image from Gyazo

最低APIレベルを「Android 6.0」に設定
Image from Gyazo

4 XRPlugin Managementのインストール

Image from Gyazo

インストールが完了すると下図のような設定になっていればOK
Image from Gyazo
Image from Gyazo
Image from Gyazo

5 Oculus Integration(Oculus統合パッケージ)のインストルール

*必ず上記の設定が終了してからOculus Integrationをインポートしてください!!!
もう一度書きます!
必ず上記の設定を終了させてからOculus Integrationをインポートしてください。まじでハマります。

公式ドキュメントはこちら
アセットストアで「Oculus Integration」と検索し、左下のOculusのマークのパッケージをUnityにインストール&インポート。
Image from Gyazo
インポートを軽くするために、Avatar,LipSync,SampleFrameworkのチェックを外しておく。
Image from Gyazo
インポート中にアップグレードを勧められるの、全て「yes」を選択。UnityがRestartされる。

VR環境の構築

1 OVRGazaPointerをprehab化する。

Sceneの中のUIを選択Image from Gyazo

Hierarchyの中のOVRGazaPointerをPrefabsの中にドラック&ドロップする。
Image from Gyazo

2 OVRCameraRigの設定

1) 新しくSceneを作成し、Hierarchyの中に、prefabsからOVRCameraRigをドラック&ドロップする。

2) 元々あったMian Cameraは削除する。

Image from Gyazo

3) OVRCameraRig/TrackingSpace/RightHandAnchor/RightControllerAnchorの下にPrefabsからOVRControllerPrefabをアタッチする。自動的にコントローラーとしてR Tracked Remoteが設定される。

Image from Gyazo

3 uGUIを構成する

1 Canvasを作成

Image from Gyazo
Canvasのインスペクターを以下のように設定する。

1)CanvasのRender Modeをスクリーンスペース・カメラに変更。
2)CanvasのEventCameraをOVRCameraRig/TrackingSpace/CenterEyeAnchorに設定。1)と2)よって常に正面にCanvasが設定されるようになる。
3)CanvasのGraphicRaycasterコンポーネントを削除。
4)CanvasにOculus/VR/Scripts/UtilのOVRRaycasterを追加。
5)OVRRaycasterのBlocking Objects欄を"すべて"に変更。

以下のようになればOK
Image from Gyazo

2 OVRGazaPointerの設定

1)PrefabsからOVRGazaPointerをHierarchyにドラック&ドロップする。

Image from Gyazo
作成したOVRGazePointerのRay Transform欄は、OVRCameraRig/TrackingSpace/RightHandAnchorを設定する。
Image from Gyazo

3 EventSystemの設定

1)EventSystemからStandaloneInputModuleコンポーネントを削除
2)EventSystemのOculus/VR/Scripts/UtilのOVRInputModuleを追加
3)OVRInputModuleのRay TransformにOVRCameraRig/TrackingSpace/RightHandAnchorを設定
4)カーソルにOVRGazaPointerを設定
5)Joy Pad Click Keyにone(Aボタン),Two(Bボタン),Secondary Index Trigger(Triggerボタン)を設定し、作動するボタンを設定する。

以下のようになっていればOK
Image from Gyazo

4 UI部品を設置

試しにボタンを設置する設定を記載します。

1)CanvasにButtonを設置。
2)AssetsにButtonAction.csを作成し、以下のスクリプトを追加。
ButtonAction.cs
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;

public class ButtonAction : MonoBehaviour
{
    [SerializeField] Image image;

    public void OnClick()
    {
        image.color = Color.red;
    }
}
3)Button ObjectにButtonAction.csを設定
4)クリック時のイベントにButtonAction.OnClickを設定

Build & Run

作成したVR空間をOculus上に表見するために、Build & Runを行います。
「デバイスを実行」は自身のデバイを選択してください。
Image from Gyazo

完成したVR空間がこちら(再掲)↓

6
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
7