Unity公式のXR Interaction Toolkit!!2019.3から使えます。
ドキュメント。
読んでないので間違っているところとか無駄なところがあると思います。
環境はUnity2019.3+OculusLink
サンプル
AR,VR両方のプロジェクトが一つのリポジトリに入っている。
今回はVRだけ触ります。
Locomotion
テレポート移動。
まさか斜めや垂直の壁にテレポートできるなんて!こんなの初めて!
WorldIntaractionDemo
UIも移動も物をつかむも全部入ってた。
でも、移動がうまくできない。
トリガー引いて1秒後ぐらいに移動する。
サンプルのプレハブ
プレハブに入ってるのはこんな感じ。
テレポートのエフェクト
何物でもないコントローラー
あとラマのモデルがいた。
サンプルなしで使う
サンプルプロジェクト以外で使う流れ
2019.3のPackagemanagerのPreviewから
XR Interaction Toolkitをインストール
入ったらヒエラルキー右クリック>XRの中に素材が入っている。
最初は~Rigってついてるやつを配置する。どっちでもいい
勝手にMainCameraが消えてXR Interaction Managerになってびっくりした。
構造
XRRig
カメラやコントローラーが入っている。
RoomScaleとStationalyの切り替えができた。
RoomScaleだとMainCameraの値が直接変わる。
たぶんHMD側で取得した床からの高さ?
StationalyだとCameraOffsetにXRRigのCamera Y Offsetで設定した値が入る。
MainCameraは0を起点に頭が動いた分が動く
コントローラー
XR ControllerのControllerNodeで右と左を設定
XR Ray Interactorでストレートと曲線のポインターを切り替えられる。
色も変えられる。
(サンプルでは)[RightHand Controller]Modelの下にオブジェクトを置くとコントローラーの位置にそのオブジェクトがついてくる。
UICanvas
uGUIをクリックできるようにするにはCanvasにTracked Devoce Graphic Raycasterをつける。
VRTKだと、Canvasの後ろにあるCanvasがあとからアクティブになった場合、Inputが後ろのキャンバスに反応してしまうという問題が起こってたけど、これではならなかった。
常に手前のCanvasが反応する。やったー!
Teleport
1、TeleportAreaとTeleportAnchorがあるのでどっちかを地面につける
これを例えばPlaneにつけたらポインターが反応する。移動はまだできない。
ちなみにLayerで反応するオブジェクトを分けたり、エフェクト出したりするのはIntaractableEvent。
エフェクトのアクティブ、非アクティブ変えている。
2.XRRigにTeleportationProvider、LocomotionSystemなどを付ける。
これで動く。
ちなみにコントローラーのSelectUsageがデフォルトで生成されるものだとGripになっていた。この場合、Gripを押さないと移動してくれない。
Triggerに変えた。
移動したい床にスクリプト付けないとテレポートできないのかな?
Colliderには全部テレポートできるとうれしいのだが
SnapTurnProviderはスティックで向きを変えるやつ。
ものを持つ
XRGrabInteractableを付ける
これを付けたら勝手にRigidBodyもつく
これで決定を押したらビュンってコントローラーのほうに飛んでくる。
最後に
VRTKやOculusIntegrationと似ているところもあって分かりやすい
でもVRTKと比べるとまだ機能少ないのかな
私が見つけてないだけかもしれないけど、スティック押し倒しでの移動とかなかった。向きは変わった。
各プラットフォームのコントローラーモデル素材はなさそう
VRTKには入っていたんだよね?よくわかってないけど。
VRTKってすごいんだなって思いました。