HTC VIVE开发专业教程(三)

视界君-阿琳 2016-10-17 17:13:07

本文是HTC VIVE开发专业教程(三)部分,介绍了[CameraRig]预制体、[SteamVR]预制体、[Status]预制体的内容。

 

在这一节,我介绍的主要内容有:

  • [CameraRig]预制体
  • [SteamVR]预制体
  • [Status]预制体

在SteamVR插件的Prefabs文件夹下面有三个预制体,CameraRig是相机预制体,使用时直接将这个预制相机作为主相机拖入场景中,我们就能以第一人称看到VR头盔里面的内容。Status是通过overlay显示一些状态信息的预制体。SteamVR是渲染核心预制体,不需要手动添加,会自动创建。下面我就来详细讲解这三个预制体。

[Camerarig]


我们可以看到,在Camerarig下面有一个左右手柄的Controller和一个头部的Camera 

HTC VIVE开发专业教程(三)

HTC VIVE开发专业教程(三)

 

在手柄Controller和头部的Camera上都有一个Steam VR_Tracked Object脚本,这是用来跟踪设备位置的脚本。

HTC VIVE开发专业教程(三)

我们在前面分析SteamVR渲染脚本SteamVR_Render时提到过在渲染循环里面有不断获取设备位置,并发送通知的逻辑,SteamVR_Utils.Event.Send(“new_poses”, poses),可以看到在Steam VR_Tracked脚本里面有注册这个监听,所以这个脚本可以不断的获取设备位置,同时更新在显示画面中的位置。我们在来看看OnNewPoses这个方法。

HTC VIVE开发专业教程(三)

OnNewPoses的方法就是设置设备的transform,使得设备的实际空间中的位置与在头显画面中看到的位置一致。 
Camera上面还有一些脚本,SteamVR_Camera.cs和SteamVR_CameraFlip.cs这两个脚本作用都是对相机渲染出来的图像进行一定的处理变换。SteamVR_GameView.cs是用来显示运行VR时pc上面的伴随窗口的。这里面的代码都不是太复杂,就不一一介绍了。

 

[SteamVR]


HTC VIVE开发专业教程(三)

在SteamVR这个预制体只有Stean VR_Render这一个脚本,这个脚本在之前已经介绍了。这个预制体是必须在项目中添加的,即使不手动添加也会自动添加。 
Pause Game When Dashboard Is Visible参数控制是否在显示控制面板时暂停游戏(在游戏过程中按系统键就会弹出控制面板),实际做法是将Unity的Time.timeScale设为0,相当于时间暂停了。 
Lock Physical Update Rate To Render Frequency参数锁定物理更新频率为(头显)渲染帧率。这个会根据头显的渲染帧率来计算Unity的更新频率。 
External Camera为外部相机,它的作用是制作那种将玩家的现实场景与虚拟的游戏场景融合的视频。 
Tracking Space为跟踪空间的类型,可以设为坐姿和站姿,坐姿和站姿的区别是视角的高度。

 

[status]

HTC VIVE开发专业教程(三)


status预制体的用处并不是很大,它的下面有6个组件,我来分别说一说这6个组件的作用

Calibration:这个组件用在Vive进行房间设置时进行相应的提示 

HTC VIVE开发专业教程(三)

_Stats:这个是显示统计信息的一个组件(目前仅显示帧率和丢帧数)。它上面还有一个Camera,通过它将GUIText渲染到overlay的纹理上,通过overlay将文字信息显示出来。它的显示效果如下图 

HTC VIVE开发专业教程(三)

TrackingLost:这个是失去头显定位后给的文字提示

TrackingRestored:这个是恢复头显定位后的提示信息

SteamInitFailure:这个是Steam初始化失败后的文字提示

Overlay:这个控件的作用是是一个2D的UI界面叠加到场景上面显示出来

 

 

99VR视界二维码
热门推荐
Hot Recommended
在线客服