LoginSignup
12
12

More than 5 years have passed since last update.

OculusGoのデバック環境をmac上で動かす。

Last updated at Posted at 2018-05-21

前回は玉転がしゲームをOculusGoに対応しました。
https://qiita.com/m0a/items/98cdc1e03cf067769578

その後、もくもく会でUnityアプリを作りました。

作ったゲームの動画はこちら

上記を作ってみてわかったことがあります。
デバックが辛い
Editor上でPlayしようとしても視点操作等が効ききません。
実機で動作確認すると変更するたびに数分待たされます。

そこでゲームパッドでOculsuGoのコントローラとヘッドトラッキングの代替を行うことにします。
アナログパッドに二軸コントローラが2つあればそれぞれをヘッドトラッキング、コントローラーのモーショントラッキングに代替できそうです。

準備

macだと使えるゲームパッドに限りがあるようです。PCだと問題ないと思いますが。
先ずはLOGICOOL ゲームパッド F310を入手します。秋葉原のヨドバシ2Fで、山ほど置いてあったので
入手性は容易なようです。

下記手順に従います。これでこのコントローラーがUnityで使えるようになります。
http://heyassy.hateblo.jp/entry/2017/10/08/113757

Xbox_360_Controllers.png

目標は上記のような感じにヘッドトラッキングとコントローラーのトラッキングに対応させます。

Unity上での作業

TLDR

以下にサンプルを含めたコードが置いてあります。そのまま動くと思います。
https://github.com/m0a/OculusGoOnMac

内容

変更したコードは
OVRCameraRig.csOVRTrackedRemote.cs のみです。
もし既存の環境に入れるのであれば上記2ファイルを置き換える感じで行けると思います。

OVRCameraRig.cs

ヘッドトラッキングとコントローラーのトラッキングをEditor利用時はダミーコードが動くように調整しています。
プラットフォーム依存コンパイルの機能を使い、実機には影響しないようにしています。

尚、以下のコード個所を修正することで挙動を変えることができます。

OVRCameraRig.cs
  // 頭の回転に合わせてコントローラも回転したい場合
  dummyRightHandOrientation = dummyHead.orientation * RotXY(rotArmHorizonal * 10, rotArmVertical * 10);
  // 頭の回転に影響しないようにしたい場合
  //dummyRightHandOrientation = RotXY(rotArmHorizonal * 10, rotArmVertical * 10);

OVRTrackedRemote.cs

本来は実機コントローラーの接続状態を見て配下のコントローラーメッシュの有効化無効化を行う機能ですが、
Editor利用時は強制的にOculusGoコントローラー(右手)が有効化するように修正しています。
プラットフォーム依存コンパイルの機能を使い、実機には影響しないようにしています。

まとめ

こんなかんじで動けば成功です。

問題点としてはUnityの作法がわからないのでコード共有方法がこれでいいのかってことです。
もっといい方法があればご教授下さい。

12
12
1

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
12
12