Sahara's WebLog

日記のような、備忘録のような、うらみつらみのような、自慢のような…。

Unity + Oculus Rift – Gaze Pointer は首が疲れる。 –

Unity + Oculus Rift – File BrowserのAssetをVRで使う。-」で機能的にはほぼ完成したのだが、頭の向きで指示するGaze Pointerは手で対象を指示するのと比べるとけっこう疲れる。
操作中に選択対象のObject以外の他のものを目で追うことも不可能だ。
まあ、Gaze方式に不慣れなせいもあるのかもしれないが、現状では手に紐付けてもらった方が何かと都合がいい。
出来ればよくあるTuchの先から出るLaser Pointerの方式にしたいなあと思って色々調べた。
調べて色々試したが思うように実装出来ないでいた。

とりあえず、Laserの発射元であるコントローラーのTouchをVR内に表示させる設定でもやっておこう。

 Oculus>VR>Prefub>OVRControllerPrefub を
 OVRCameraRig>TrackingSpace>LeftHandAnchor と
 OVRCameraRig>TrackingSpace>RightHandAnchor へドロップする。

これだけで、左右のTouchが表示され、実際のTouchの位置に合わせて位置も向きも反映されるようになる。
Touchの表示完了。

肝心のLaserは下のサイトを参考にコントローラーから発射させることは出来るようになった。
http://rikoubou.hatenablog.com/entry/2018/06/04/193607
だが、Laserの照射先のObjectのButtonとかをクリックさせる処理のScriptが理解できない。

ここまで来て思いついたことがある。
OVRGazePointerのRay TransformをCenterEyeAnchorに設定してあるから頭の向いた方向にGazePointerが表示される。
ならば、CenterEyeAnchorからLeftControllerAnchorに変えれば左のTouchの向いた先にGazePointerが出るんじゃないの?

これで、確かに視線の方向(画面中央)でなく左のTouchを向けたところ(画面右上)にGazPointerを出せるようになった。

さらに、同様にEventSystem>OVRInputModuleのRayTransformもCenterEyeAnchorからLeftControllerAnchorに変えて、無事対象を選択・クリック出来るようになった。
他にもEventSystemを持っているObjectがあればそこでも同様に変更する。
私の場合で言えばSimpleFileBrowserCanvasの下にもEventSystemがあった。
Hierarchy直下のEventSystemとSimpleFileBrowserCanvas>EventSystemの2つでOVRInputModuleのRayTransformをCenterEyeAnchorからLeftControllerAnchorに変えた。

Laserは実装できていないが、首の疲れは解消された。

分かりにくいかもしれないが、上の動画でスクロールバーは上下しているのに映像は上下しない。
動かしているのは左手で、頭は動いてないからだ。
これがもし設定を変更する前のGazePointerなら映像自体が上下する。

Unity + Oculus Rift – TouchからGaze Pointerまで線を引けばLaser気分。 –」へ続く。

このエントリーをはてなブックマークに追加

Posted under: Unity, VR


コメントを残す

メールアドレスが公開されることはありません。

Time limit is exhausted. Please reload CAPTCHA.