質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Unity3D

Unity3Dは、ゲームや対話式の3Dアプリケーション、トレーニングシュミレーション、そして医学的・建築学的な技術を可視化する、商業用の開発プラットフォームです。

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

Q&A

解決済

1回答

2133閲覧

Oculus Touchの入力が取れない

maku459

総合スコア5

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Unity3D

Unity3Dは、ゲームや対話式の3Dアプリケーション、トレーニングシュミレーション、そして医学的・建築学的な技術を可視化する、商業用の開発プラットフォームです。

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

0グッド

0クリップ

投稿2019/11/17 13:16

前提・実現したいこと

VR開発初心者です。

UnityでOculus IntegrationのAssetを使いOculus Quest向けの開発をしているのですが、Oculus Touchの入力を取得することができません。

Oculus Integrationのレビューを見るとver1.4.2に不具合があると思われるためArchiveからver1.3.9を試したりもしたのですが、やはり上手く動きません。

どのようにしたらOculus Touchの入力を取得できるのでしょうか。

発生している問題・エラーメッセージ

  1. Oculus Integrationの Oculus > SampleFrameworks > Usage > DebugUIのシーンを読み込む。
  2. HierarchyでPlayerController > OVRCameraRig > TrackingSpace > RightHandAnchor > RightControllerHandAnchor の子オブジェクトとしてOVRControllerPrefabを設定、ControllerをR Tracked Remoteに変更する。
  3. Oculus IntegrationのUIHelpersをシーンに配置し、子オブジェクトのLaserPointerのLineRendererをオン、EventSystemのOVRInput ModuleのRay TransformをRightControllerAnchorにする。(レーザーを出したいため)
  4. 以下のソースコードをアタッチする。

cs

1//ButtonPush.cs 2using System.Collections; 3using UnityEngine; 4 5public class ButtonPush : MonoBehaviour 6{ 7 void Start() 8 { 9 10 } 11 12 void Update() 13 { 14 if (OVRInput.GetDown(OVRInput.RawButton.RIndexTrigger)) { 15 Debug.Log("ButtonPush"); 16 } 17 } 18}

4.のファイルを関係ありそうなどのオブジェクトにアタッチしてもコンソールには一切Debug.Logの内容が表示されない状態です。エラーは特に出ていません。

試したこと

UnityとOculus Integration共に複数のバージョンで試しました。

Unity2019.2.12Unity2017.4.28
Oculus Integration1.4.2Touch自体が表示されないTouchは表示されるが入力は取得できない
Oculus Integration1.3.9同上同上

バージョンの問題かと思いきやバージョンを下げても得られる結果が同じだったので、根本的に何か違うのかもしれません…

些細なことでも構いませんのでご助言いただけると幸いです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

v1.3.9の場合は以下の記事に書いた uses-feature の対処をしないとOculus Goアプリと認識されてボタンの挙動が想定と違ったものになります。色々と面倒なので1.4.1以上をおすすめします。

Oculus Quest Build 7.0アップデート後に自作アプリがおかしくなった時の対策

またUnity2019.2.12とOculus Integaration 1.4.2の組合せで同じシーンを作ってみたのですがTouchは表示されて右コントローラーのトリガーを引くとログが出ました。思い当たるものがないのですがプロジェクト作成後にPlayerSettingsから以下の項目を変えたので何か影響しているかもしれません。

Other Settings

  • ColorSpaceをLinearに変更
  • Graphics APIsをOpenGLES3のみに変更
  • Minimum API LevelをAndroid 6.0 'Mashmallow' (API level 23)に変更

XR Settings

  • Virtual Reality Supportedをチェック
  • Virtual Reality SDKsにOculusを追加

Android SDKとOpenJDKはUnityモジュールでインストールできるものを使っています。

あとは違うと思いますがPackage ManagerからXR Managermentをインストールしているとコントローラーが表示されなかったり他のも不具合があったのでアンインストールしたことがあります。

■ALVRを追記
ALVRは一次開発版だとQuestに対応していないのでフォーク版を使います。
https://github.com/JackD83/ALVR/releases

UnityとALVRで動作させる為にはPlayerSettingsをPC, Mac & Linux Standalone settingsに切り替えて以下のように設定します。

XR Settings

  • Virtual Reality Supportedをチェック
  • Virtual Reality SDKsの先頭にOpenVRを追加

またALVRでCustomHandLeft/CustomHandRightプレハブのようにOVRGrabber.csを使っているとエラーが発生します。これは以下のように若干の修正が必要です。

https://www.facebook.com/groups/1535715303335703/permalink/2463535003887057/?comment_id=2475098992730658&reply_comment_id=2477251025848788

■Oculus Linkを追記
また、Oculus Linkが使えるようになりました。こっちの方がALVRよりQuestの挙動と近くなり上記のOVRGrabber.csの対策も不要です。こっちを使う場合はPC, Mac & Linux Standalone settingsのVirtual Reality SDKsの先頭をOculusに変更してください。
まだ公式のケーブルは出ていないのですが以下のサポートページに推奨ケーブルが紹介されています。
https://support.oculus.com/444256562873335/

投稿2019/11/17 14:42

編集2019/11/21 16:58
shiena

総合スコア1825

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

maku459

2019/11/18 12:28

Unity2019.2.12で教えていただいた設定を行ったところうまくボタン操作行えました!ありがとうございます! すっかり書き忘れていたのですが、実は今までUnityからビルドする形ではなくALVRでSteamVRを経由して実行しており、ALVRではGraphics APIsやMinimum API Levelの設定ができないためかコントローラーが表示されているものの宙に浮いて動かせず…という状態でした(Attempting to set a device feature value type that is not supported by VRInputInstance. This will result in an incomplete state というエラーメッセージがたまに出るようです)。 ALVRでも正常に動作する方法あったりしますでしょうか…?もし分かればで構いません。
shiena

2019/11/18 13:10

ALVR用の設定を追記しましたのでご確認ください
maku459

2019/11/19 04:48

追記ありがとうございます。Virtual Reality SDKsでOpenVRを先頭に追加してALVRで実行したところ最初に実行したときだけ正常にコントローラーが取れたのですがなぜかそれ以降実行しても同様のエラーでコントローラーが動かせない状態です… Oculus Linkについてもありがとうございます。私のPCではGPUスペックが足りない&USB3.0端子がないため暫くはビルドでやるしかないかなあと思っております。
shiena

2019/11/19 10:45

UnityのConsoleでエラーメッセージを選択して下の方にStackTraceが出ている状態のスクリーンショットを追加できませんか?
maku459

2019/11/19 20:01

載せようと思ったのですが、今度はSteamVRがヘッドセットは認識するもののコントローラーが検出中のまま止まるようになってしまい…再インストールや再起動などいろいろ試したのですが復活せず。いろんな問題が重なっているようです。今夜もう一回試してみて、再現が無理そうであれば一旦質問を閉じようと思います。 ちなみに、USB3.0ではなくUSB2.0端子で接続してしまっているのも原因の1つだったりしますかね…?
shiena

2019/11/19 20:24

コントローラーを認識しないということですがALVRは一次開発元のものではなくフォークの方を使われていますよね?こっちを使わないとALVRがQuestアプリではなくGoアプリと認識されてしまうので挙動がおかしくなるかもしれません。それ以外だとコントローラーの電池切れくらいしか思い当たりませんね… https://github.com/JackD83/ALVR/releases あとUSB3.0か2.0なんですがwifiアダプタか何かでしょうか?USB2.0でもFPSが落ちたりするくらいでコントローラーを認識しない事はないと思います。
maku459

2019/11/20 20:51 編集

ALVR、一時開発元のものを利用しておりました…朝までかかってしまいましたがALVRを入れなおしたところとりあえずコントローラーを動かすことはできるようになり、頻繁に落ちていたALVRの動作が安定しました(落ちるのがデフォルトなのかと思ってました…)。Debug.Logでコントローラーの入力は取れているのですが、DebugUIのSceneに表示されているボタンは押せません。
shiena

2019/11/21 07:08

DebugUIのボタンはヒエラルキーの `UIHelpers/EventSystem/OVR Input Module` にある `Joy Pad Click Button` で設定するんですがALVRやVirtualDesktopなどSteamVR経由の場合はOne(右コントローラーのAボタン)が反応しないようです。ここにABXY以外のキー、たとえばSecondaryIndexTriggerを追加すると右コントローラーの人差し指トリガーでボタンを押すことができました。 ビルドしてOculus Questで実行したりOculus Linkの場合はAボタンでボタンを押すことができました。
maku459

2019/11/22 18:26 編集

お返事遅くなり申し訳ないです。SecondaryIndexTriggerに変更したところUnity2019でも2017でもUIのボタンを押すことができました。 長い間丁寧に教えていただき本当にありがとうございました、非常に助かりました!!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問