2019年6月のはじめくらいに
Oculus Quest を購入しました。
折角、購入したので、開発しないと勿体ないとおもったため
ゆるゆると開発を始めていました。
どうしても、さぼるだろうなと感じていたために
2019年6月1日(土)に開催された
【しなもく会特別版】Quest開発もくもく会 等にも参加してしていました。
実は、以前に少しだけ、業務でOculus Goのアプリを開発したときに【しなもく会特別版】Quest開発もくもく会 (2019/06/01 14:00〜)
VR開発に詳しいSynamonのUnityエンジニアと、一緒にQuest開発をもくもくできる会 「開発とか作業をしたいけど、自分の部屋だとやる気がでなくて...」 「Questが届いたのでさっそくみんなでワイワイやりながら開発したい!」 「AndroidベースのVR開発に関する新しい知見が欲しい...」 「VR転職に興味ある!けど知り合い全然いない...知り合い欲しい...」 ...
UIを操作するときにLaserPointerを表示しているサンプルがあったなぁと
かすかな記憶に残っていました。
ググってみると。いくつかLaserPointerを表示する技術記事が見つかりました。
- Oculus Goでレーザーポインターを表示する - Qiita
- Oculus Go 開発メモ - レーザーポインタとuGUI編 - Qiita
- Oculus GoのコントローラからレーザーポインタによりUIを操作するまで ...
しかし、2019年6月のOculus Integrationの中 Assets > Oculus > SampleFramework > Core > Scriptsに LaserPointer.csというScriptが含まれていました。なので、わざわざ自作必要は無いのでは? というモヤモヤが自分の中に生まれてきました。
すでに、こちらのQiita記事 に記述されているんですが。
Oculus Integration に含まれるLaserPointerは、Oculus QuestでuGUIを操作する - Qiita
はじめに 基本的にはOculusGoなどと同じですが、少し情報が古くなっているので、2019.06時点での情報を記して置きます。 Oculus Go 開発メモ - uGUI編 - Qiita https://qiita.com...
Assets > Oculus > SampleFramework > Core > Prefabsの中の
UIHelpersのPrafabにまとめられています。
UIHelpersのPrafabは
- LaserPointer
- Shpere
- EventSyste
それぞれ、細かく内容を見てみましょう
LaserPointerのGameObjectは、LaserPointer.csのScriptと
Line Renderがアタッチされています。
ShpereのGameObjectは3DオブジェクトのShpereが
Scale x 0.01 y 0.01 z 0.01となっています
EventSystemのGameObjectはUnityのEventSystemと
OVRInputModule.csのスクリプトがアタッチされており、
CursorのプロパティにLaserPointerがアタッチされています。
また、UIHelpersそのものには、HandedInputSelector.csのScriptがアタッチされています。
HandedInputSelector.csの中身は、OVRInput.GetActiveController()で
アクティブなコントローラーを取得し、OVRInputModuleのrayTransformを右か左のHandAnchorにセットしています。
実際にLaserPointerを利用しているサンプルは、
Assets > Oculus > SampleFramework > Usage > DebugUI.unityのSceneが参考になります。
DebugUIのHierarchy、CanvasWithDebugにDebuUIBuilder.csの
UI Helper To InstantiateのプロパティにUIHelpersのPrefabがアタッチされています。
また、Laser Beam BehaviorをONに変更することで
常にLaserPointerを表示し続けることが可能です。
本当は、VRChatのアプリのように両方のコントローラーから
LaserPointerを表示してUI操作をおこないたったのですが、
色々、自分で独自Scriptを記述したり試してはみたのですがうまくいきませんでした。orz..
まぁ、今後も、こんな感じでゆるりと Oculus Quest 開発は続けていきたい。