因为一些原因,要求上周的博客缺了一篇,于是在这周补上。好了,让我们开始吧。
HTC VIVE 开发中最重要的基石是steamVR,只有充分理解steamVR,才能在开发中得心应手,创造最佳的虚拟现实体验。
知名游戏公司Valve将OpenVR和Steam平台结合在一起开发了SteamVR,这是一个非常有远见的战略,未来的VR内容平台必然是炙手可热的。让我们看一下SteamVR是如何结合HTC Vive工作的。
首先,HTC Vive提供了两个基站,我们将他们分别架设在一个空间的两端互为犄角,从而建立起一个定位空间。我们将这个空间称为Light House,因为在这个空间中布满了我们看不到的激光。SteamVR会根据激光数据精确地定位头盔和两个手柄的位置,让玩家更精确地在游戏中进行交互,从而得到更棒的VR体验。
然后,Valve为了让Unity的开发者更好地开发出VR游戏,在SteamVR的基础上为Unity开发出了SteamVR Plugin。可以在Unity的Asset Store里找到它。下载后就可以看到
在Scripts文件夹里,我们可以找到SteamVR各脚本的功能
SteamVR/Scripts/下脚本各功能的实现
1、SteamVR.cs 单例管理类,管理SteamVR程序的运行和终止。 2、SteamVR_Camera.cs
给场景添加一个最基本可运行的SteamVR组。 3、SteamVR_CameraFlip.cs 使用Shader将屏幕图像反转得到最终图像。
4、SteamVR_CameraMask.cs 将头盔中看不到的屏幕像素遮盖。 5、SteamVR_Controller.cs
管理类,管理所有设备的输入控制 6、SteamVR_ControllerManager.cs 管理类,管理场景中的设备活动
7、SteamVR_Ears.cs 控制Audio Listener的方向 8、SteamVR_ExternalCamera.cs
用于渲染外部摄像机 9、SteamVR_Fade.cs 屏幕渐变功能 10、SteamVR_Frustum.cs 生成用于渲染的面片
11、SteamVR_GameView.cs 处理除眼图像之外的渲染 12、SteamVR_IK.cs 手柄IK的控制
13、SteamVR_LoadLevel.cs 用于场景之间的平滑切换 14、SteamVR_Menu.cs 给出一个范例菜单
15、SteamVR_Overlay.cs 提供和控制2D图像的绘制 16、SteamVR_PlayArea.cs 对移动空间的设置
17、SteamVR_Render.cs 控制眼图像的渲染 18、SteamVR_RenderModel.cs 渲染手柄模型
19、SteamVR_Skybox.cs 设置天空盒 20、SteamVR_SphericalProjection.cs
应该是应用畸变投影矩阵 21、SteamVR_Stats.cs 通过GUI Text显示头盔状态 22、SteamVR_Status.cs
由事件控制的渐变效果的基类 23、SteamVR_StatusText.cs 继承22的文字渐变
24、SteamVR_TestController.cs 测试手柄每个按钮的输入 25、SteamVR_TrackedCamera.cs
提供记录相机的位置的功能 26、SteamVR_TrackedObject.cs 使场景中的物体和控制器的Pose保持一致
27、SteamVR_UpdatePose.cs 当使用OpenVR接口时用此更新Pose 28、SteamVR_Utils.cs
一些公共方法和数据结构 SteamVR/Extras/脚本下功能的实现
详细脚本解析: