Oculus_凝视在UI进行操作

经过在网上百度,找到了点资料,由此记录一下,并且感谢原作者的分享,有侵权请联系!

Oculus研究第一天

1.实现UI凝视

前期配置

  1. 导入Oculus插件包OculusSampleFramework.unitypackage

  2. 若使用Unity 5.1或更新的版本,确保在Edit -> Project Settings -> Player : Other Setting -> Rendering设置里勾选Virtual Reality Supported

实现过程(可以点击space或者buttonone用来确认)

  • 替换相机

    1. 删除场景中的Camera
    2. 添加OVR/Prefabs/OVRCameraRig预置体到场景中作为相机
    3. 将相机调整到合适的位置
  • 更改输入模块

    1. 选择Hierarchy中的EventSystem对象
    2. 移除用于处理常规鼠标输入的StandaloneInputModule组件
    3. 添加OVRInspector/Scripts/OVRInputModule脚本
    4. OVRCameraRig对象下的CentreEyeAnchor拖到OVRInputModuleRayTransform属性上,使射线始终从双眼中间位置发出
    5. OVRInputModule中的JoyPadClickButtonGazeClickKey分别用于设置Touch手柄和键盘上操作UI的按键
  • 添加凝视指针

    1. 添加OVRInspector/Resources/Prefabs/GazePointerRing预置体到场景中来指示当前凝视的位置
    2. 预置体上除了OVRGazePointer脚本还有一个与粒子特效有关的脚本,如不需要可以删除
    3. OVRCameraRig对象下的CentreEyeAnchor拖放到OVRGazePointer脚本的RayTransform属性上,使指针跟随射线
  • 设置Canvas

    1. 将需要凝视操作的Canvas的Render Mode属性设置为World Space
    2. 将Canvas中的EventCamera设置为OVRCameraRig下的CenterEyeAnchor
    3. 移除Canvas绑定的用于监测鼠标与GUI元素交互的GraphicRaycaster组件
    4. 添加用于处理射线的OVRInspector/Scripts/OVRRaycaster脚本
    5. OVRRaycaster组件中,将Blocking Objects属性设为All,使凝视行为可以锁定场景中的其他可交互对象
  • 更改指针移动方式(从右手手柄发射射线) 
    若希望通过其他输入设备移动指针,则进行此步,以右手Touch控制器为例。

    1. 选择EventSystem对象,把OVRInputModuleRayTransform属性改为OVRCameraRig对象下的RightHandAnchor,使射线从右手的Touch控制器发出
    2. 选择GazePointerRing对象,将OVRGazePointer脚本的RayTransform属性改为OVRCameraRig对象下的RightHandAnchor,使指针跟随射线
  • 添加世界坐标下的鼠标 
    若需要为VR场景提供与凝视一起存在的鼠标操作UI的功能,则进行此步操作。

    1. OVRInspector/Resources/Prefabs/CanvasPointer预置体添加为Canvas对象的子对象
    2. 将Canvas对象的OVRRaycaster脚本中的Pointer属性设置为新添加的CanvasPointer对象
    3. 为Canvas对象添加OVRInspector/Scripts/OVRMousePointer脚本

你可能感兴趣的:(Oculus_凝视在UI进行操作)