HTCVive课件
⼀一、HTCVive介绍
1.0 HTCVive介绍
HTC Vive是即将到来的虚拟现实头戴式显⽰示器,由宏达国际电⼦子(HTC)和维尔福公司
(Valve Corporation)共同开发,发布于2016年4⽉月5⽇日。 它也是维尔福公司的SteamVR项⺫⽬目的⼀一
部分。这款头戴式显⽰示器的设计利⽤用“房间规模”的技术,通过传感器把⼀一个房间变成三维空间,在虚
拟世界中允许⽤用户⾃自然地导航,能四处⾛走动,并使⽤用运动跟踪的⼿手持控制器来⽣生动地操纵物体的能
⼒力,有精密的互动,交流,和沉浸式环境的体验。
1.1HTCVive构成
HTCVive由头戴显⽰示器、LightHouse(定位器)、Vive控制⼿手柄、串流盒等构成
1.1.0头戴显⽰示器
头戴式设备是您进⼊入虚拟现实环境的窗⼝口。头戴式设备具有可被定位器追踪的感应器。
HTC Vive”具有90赫兹的刷新速率。该设备使⽤用两个屏幕,每眼⼀一个屏幕,每个屏幕具有
1080×1200分辨率。
两个显⽰示透镜使⽤用菲尼尔透镜技术。
1.1.1vive控制⼿手柄
⽤用来提供输⼊入。上⾯面有扳机建(Trigger)、系统按键(SystemButton)、菜单键
(ApplicationMenuButton)、触控板(TouchPad)、把⼿手键(Grip)等键构成,⾥里⾯面装有陀螺仪,
红外接收器,发射器。如下图。
1.1.2 LightHouse(基站)
⽤用来接收⼿手柄和头戴显⽰示设备的位置,并且发送⼿手柄的位置到头戴显⽰示设备。如上图。
以上便是主要的HTCVive,构成部分。
1.2开发HTCVive其他硬件最低配置
GPU: NVIDIA GeForce GTX 970 / AMD Radeon R9 290 同等或更⾼高的版本
CPU: Intel i5-4590 / AMD FX-8350 同等或更⾼高的版本
RAM: 4GB+
Video Output: HDMI 1.4 或 DisplayPort 1.2 或更加新的
USB Port: 1x USB 2.0 或更⾼高版本
操作系统: Windows 7 SP1 或更加新的[8]
⼆二、Vive和unity
2.1SteamVRPlugin
在Unity中开发Vive相关游戏需要⽤用到SteamVR插件,该插件为免费插件,下载地址:http://
u3d.as/cjo.Tip:注意插件需要Unity版本当前使⽤用插件版本为V1.1.1,需要Unity版本为V5.4.0以上版
本。
2.1.0环境配置
在开发Vive相关游戏时需要在Steam中安装SteamVR⼯工具。具体操作步骤如下:
1.在Steamcommunity.com中下载Steam软件。
2.下载安装完成之后在Steam菜单栏中选择库>⼯工具在⼯工具栏中选择SteamVR,右键,安装游
戏,当游戏下载完成之后,即可使⽤用。最终运⾏行效果如下:
⾏行场景⽂文件。
2.1.1 插件导⼊入
通过商店下载插件之后将插件导⼊入到Unity中, 会弹出SteamVRSetting点击同意全部。
在Project视同中通过类型搜索常⻅见⽂文件(t:Scene),显⽰示出当前项⺫⽬目中所有的场景⽂文件,选择运
2.1.2场景搭建
1.新建场景
2.删除MainCamera
3.在Assets>SteamVR>Prefabs下拖动[CameraRig]预设物到场景中。
4.点击运⾏行,即可在场景视图中看到⼿手柄,并且跟随真实⼿手柄运动。
2.2⼿手柄参数(如下图)
1. 菜单按钮 (ApplicationMenu)
2. 触控板 (TouchPad)
3. 系统按钮 (System)
4. 状态指⽰示灯
5 .Micro-USB 端⼝口
6. 追踪感应器
7. 扳机 (Trigger)
8. ⼿手柄按钮(Grip)
2.2.⼿手柄按键获取
⼿手柄中每个按键获取⽅方式有两种,GetTouch和GetPress.具体每个按键可以获取三种状态
1.GetTouch(GetPress):获取按键按下时的装填
2.GetTouchDown(GetPressDown):当按键被按下的瞬间
3.GetTouchUp(GetPressUp):当松开按键的瞬间时。
2.2.0具体获取⼿手柄扳机按键脚本
将该脚本挂在[CameraRig]中Controller(left)和Controller(right)任何⼀一个上即可。
具体脚本如下:
1.获取SteamVR_TrackedObject,组件
2.获取⼿手柄输⼊入
3.通过SteamVR_Controller.ButtonMask获取Trigger按键。
4.通过TriggerHapticPulse();获取震动效果
2.3插件中重要类
SteamVR插件中⼀一些类说明
名称
SteamVR_ControllerManager
SteamVR_TrackedObject
SteamVR_Controller
功能
管理场景中⼿手柄
处理⼿手柄的位置更新
处理⼿手柄的各种事件
备注
2.4Vive中⼿手柄模型的替换。
找到需要替换模型的HandModel,[CameraRig]>Controller (left)Or Controller (right),移除
Model上⾯面的组件SteamVR_RenderModel。拖拽枪模型为
ControlLeft 或者Right的⼦子物体.通过代码具体实现⽅方式如下
具体代码如下:
2.5Vive中瞬移效果。
在实现瞬移效果时使⽤用的是插件插件的名称为:Vive-Teleporter。具体是插件使⽤用如下:
1.新建unity⼯工程
2.导⼊入Vive-Teleporter插件
3.新建场景如下图:
4.场景建⽴立好之后选择场景物体,勾选NavigationStatic.
5.在window下打开Navigation,点击Back,对当前场景进⾏行烘焙。
6.配置Vive NavMesh:从添加Vive Nav Mesh对象开始,可以在Assets⽂文件夹中的Vive-
Teleporter/Prefabs/Navmesh.prefab路径下找到⼀一个预配置的Vive NavMesh。可以将这个对象放在
场景层级⾯面板的任何地⽅方和场景中的任何位置。
接下来需要在Unity中烘焙⼀一个导航⺴⽹网格("Navmesh")。这个可以在Navigation窗⼝口中完成(Window >
Navigation)。
这⾥里有⼏几点需要考虑:
系统⾃自动剔除斜坡导航⺴⽹网格三⾓角形。这意味着任何没有直接⾯面向上的部分的导航⺴⽹网格都会被传送系
统忽略。这个在VR中是合理的,因为玩家不能⾛走上斜坡!
必须在所以可传送表⾯面使⽤用物理碰撞器。抛物线的点(⻅见下边第⼆二步)使⽤用物理射线来确定玩家指
向。因此所有可传送表⾯面必须有碰撞器(包括像墙这种不可传送的表⾯面并且要阻⽌止指⽰示)。
为不可传送区域分配不同的导航区域也是个不错的主意。这个对于优化(因此当玩家选择传送位置
时系统不需要渲染巨⼤大的预览⺴⽹网格)和游戏平衡(这样玩家就不会传送到地图以外了)很有帮助。
烘焙完导航⺴⽹网格之后(使⽤用Navigation窗⼝口底部的“Bake”按钮),回到之前创建的Vive Nav Mesh 对
象。如果决定专⽤用的导航区域(⻅见上⽅方),可以通过Area Mask属性选择那些区域是可传送的。然后
点击检视⾯面板中的“Update Navmesh Data”按钮,就会看到导航⺴⽹网格显⽰示在场景视图中。
7.配置ParabolicPointer: