在本节,我们来熟悉VIVE Focus头显,手柄以及输入相关的一些设置。
一 首先来看下头显的设置,在上一节中配置好开发环境之后,我们选中层级列表中的WaveVR的游戏对象,并对其进行展开,在WaveVR下有一个名为head的子物体。head上有一个名为WaveVR_DevicePoseTracker的脚本。改脚本用于用于追踪头显的位置和旋转。以下来说明一下各个选项的作用:
1 Type:该为一个枚举选项,可选值有三个,分别为WVR_DeviceType_HMD(头显),WVR_DeviceType_Controller_Right(右手素手柄),WVR_DeviceType_Controller_Left(左手手柄)。VIVE Focus的用于追踪头显的位置和旋转可以采用这一个脚本。这里自然选择WVR_DeviceType_HMD;
2 InversePosition: 勾选将反转追踪的设备位置数据;
3 TrackPosition:勾选将追踪该设备的位置信息,VIVE Focus的头显是支持6DoF的,如你只需要开发3DoF的项目,也就是类似Cardboard不需要最终头显位置类型的项目,可以去除勾选该选项。默认为勾选。
4 EnableNeckModel:开启颈部模块(直译),该选项仅在TrackPosition勾选时才出现,并且只有在脚本 WaveVR_Render 的Origin值为 WVR_Pose Origin Model_Origin On Head_3 DoF 时才生效,作用为在使用头显时能有类似现实歪着头看的效果;
5 InverseRotation:勾选将反转追踪设备的旋转数据。
6 TrackRotation:勾选将追踪设备旋转信息,默认为勾选。
7 TrackTiming:选择何时更新设备pose--渲染之前更新或者每帧结束时更新
二 使用了ControllerLoader之后,在运行场景之后,手柄会自动加载,层级视图中会多出一系列游戏对象,其中有一个名为Generic_MC_R(Clone)的对象,该游戏对象上有两个脚本,一个名为WaveVR_PoseTrackerManager,另一个名为WaveVR_ControllerPoseTracker。后者及用于追踪手柄的旋转。
该脚本还决定了手柄的Type(左手还是右手),以及手柄是否跟随头显移动位置(Follow Head),因为VIVE Focus是3DoF的,是无法实时追踪手柄在现实空间的实际位置的,所以如果当在虚拟场景中如果进行瞬移或者头显进行了范围相对大的移动,就一定要让手柄跟随头显移动。否则将出现手柄距离过远的问题。
由于Generic_MC_R(Clone)是在运行时加载的,WaveVR_ControllerPoseTracker的设置就需要通过ControllerLoader设置后传递,在ControllerLoader游戏对象上的WaveVR_ControllerLoader脚本选择对应类型和根据需要勾选Follow Head即可,其他选项保持默认即可。
在设置好了头显和手柄后,需要重点注意的是输入模块的设置。
将InputModuleManager预制体拖入场景后,可看到其身上有挂载一个WaveVR_InputModuleManager的脚本。然而,在默认情况下,虽然该脚本的Enable Input Module选项是勾选的,但其下面Override System Setttings是没有勾选的,使得Custom Input Module以下的选项都不会显示。造成该脚本很容易被忽略掉。在不重写系统设置的情况下,所开发的工程中的交互效果只能在unity的编辑器模式下起作用,打包发布后不生效。原因就这里使用的是Unity内置的输入模块。若要在真机下仍能使用交互,就需要勾选Override System Setttings选项。并选用一个对应的输入方式。
Custom Input Module选择为Gaze的时候,采用的输入方式为凝视模式。该模式下与Cardboard类型VR项目并无二致,使用准心悬停计时进行交互。适合在不使用手柄的情况。选择该模式运行场景后,场景中会自动加载一个EventSystem,不过这个EventSystem与在初次创建UGUI元素是自动创建的那个有些区别,区别在于将Unity的标准输入模块替换了成了下图中红框的模块,这是凝视输入模块的功能脚本,没有这个脚本则无法实现凝视交互。其上面的设置也是由WaveVR_InputModuleManager在选择Gaze模式时传递过来的。
Custom Input Module选择为Controller的时候,输入模式切换为手柄控制模式。设置也会有所不同。在该模式下,有手柄发射的射线选择并通过手柄按键选择确认等进行交互,同时手柄也提供了更多的按键功能,如Touchpad,菜单键,扳机键等等。为开发提供了更多的扩展。在手柄控制模式下,也可以使用自动手柄模型等以应用特殊的游戏,如在射击游戏中可将原始的手柄模型替换成枪械的模型。在下图的Right controller和Left controller中可以填充自定义手柄即可实现。虽然VIVE Focus手柄是3DoF的,无法追踪实际位置,但是通过追踪旋转依旧能实现枪口随着手柄的旋转不同而朝向目标的功能,只是体验与VIVE的6DoF的有些不同而已。
(PHP开发、web前端、UI设计、VR开发专业培训机构--V客IT学院版权所有,转载请注明出处,谢谢合作!)