Unity SteamVR插件集成
重要组件
SteamVR_Camera
VR摄像机,主要功能是将Unity摄像机的画面进行变化,形成Vive中的成像画面
使用方法:
l 在任一个摄像机上增加脚本
l 点击Expand按钮


完成以上操作后,原本的摄像机会变成如下结构

l Origin:位置
l Head:头部
l Eye:眼睛
l Ears:耳朵
至此,游戏中Vive中可以看到游戏画面,360度旋转查看游戏世界,在游戏世界中移动等




SteamVR_ControllerManager和SteamVR_TrackedObject
控制器,主要用于设置和检测Vive控制器。
Vive控制器由菜单键(ApplicationMenu),触摸板(Touchpad),系统键/电源键(System),扳机键(Trigger),侧柄键(Grip),组成

1 Menu button(菜单键)
2 Trackpad(触摸板)
3 System button(系统键/电源键)
4 Status light
5 Micro-USB port
6 Tracking sensor
7 Trigger(扳机键)
8 Grip button(侧柄键)
使用方法
在Origin物体上添加2个子物体代表Vive的2个手柄,增加SteamVR_TrackedObject,Index设置为None
在Origin物体上添加SteamVR_ControllerManager,设置左右手柄
至此就完成了手柄的集成。



获取手柄状态
通过代码
var device = SteamVR_Controller.Input(uint);
device.GetTouchDown(SteamVR_Controller.ButtonMask)
就可以获取到某个按键的状态
或者使用
var system = OpenVR.System;
system.GetControllerState(uint, ref VRControllerState_t))
获取当前所有的按键状态
手柄震动
public void TriggerHapticPulse(ushort durationMicroSec = 500, EVRButtonId buttonId = EVRButtonId.k_EButton_SteamVR_Touchpad)
{
var system = OpenVR.System;
if (system != null)
{
var axisId = (uint)buttonId - (uint)EVRButtonId.k_EButton_Axis0;
system.TriggerHapticPulse(ControllerIndex, axisId, (char)durationMicroSec);
}
}
或者
var device = SteamVR_Controller.Input(uint);
device. TriggerHapticPulse();
SteamVR_RenderModel
该组件用于渲染手柄的模型,并且跟踪手柄的位置
使用方法
在左右手柄的物体下创建一个子物体,子物体上添加SteamVR_RenderModel脚本,Shader可以根据需求设置,比如设置为Standard

至此,游戏中可以看到手柄模型和手柄位置同步
SteamVR_PlayArea
用于显示游玩区域。
使用方法,在Origin物体上添加该脚本即可

可以看到游戏场景中多了一个显示区域

注意事项
制作UI的时候需要使用世界坐标,通过不同相机的Depth复合,目前还不支持(2016/5/23)
Unity5.4已经支持多相机复合(2016/8/21)
注意ControlIndex的值,默认情况下都会自动设置,如果手动设置错误将导致错误的表现
Unity SteamVR插件集成的更多相关文章
- HTC Vive开发笔记之SteamVR插件集成
重要组件 SteamVR_Camera VR摄像机,主要功能是将Unity摄像机的画面进行变化,形成Vive中的成像画面 使用方法: l 在任一个摄像机上增加脚本 l 点击Expand按钮 完成以上操 ...
- 开发unity DLL插件
最近开发一款设备的SDK,想着要开发unity版本,怎么做呢?首先想到的就是在外部编写相关的驱动程序然后集成成几个dll作为unity的SDK使用了.So,我就开始了unity外部插件的研究之旅了. ...
- WCF技术剖析之七:如何实现WCF与EnterLib PIAB、Unity之间的集成
原文:WCF技术剖析之七:如何实现WCF与EnterLib PIAB.Unity之间的集成 在这之前,我写过深入介绍MS EnterLib PIAB的文章(参阅<MS Enterprise Li ...
- Padavan老毛子固件:17CE插件集成
Padavan老毛子固件:17CE插件集成 1.老毛子路由设置:系统管理-服务-启动SSH服务器 以下链接下载 "winscp" http://down.orsoon.co ...
- IDEA常用快捷键和常用插件集成,持续更新......
用习惯了eclipse,不容易转过来,记一下! 快捷键 psvm: main 方法快捷键 sout :syso快捷键 CTRL+O: 重写父类方法 Ctrl+Alt+V :自动补全返回值 Ctrl+S ...
- mydate97时间插件集成jquery插件
1.初始化JS: //把mydate97时间插件集成jquery插件 (function ($) { $.fn.mydatePicker = function (options) { return t ...
- (转)Unity Cinemachine插件,实现单目标和多目标之间切换
Unity Cinemachine插件学习笔记,实现单目标和多目标之间切换*版本要求Unity2017.1及以上. 参考资料: [官方] Unity 2017.1正式版发布 Cinemachine插件 ...
- unity 常用插件 2
Advanced PlayerPrefs Window 用来管理 PlayerPrefs 数据,超好用 JsonDotNet JSON 的序列化/反序列化插件.这个插件是支持 iOS, Android ...
- unity常用插件
Unity3D常用插件,网址:http://jingyan.baidu.com/article/7f766daf4ef2844100e1d079.html ,想想自己也有小半年unity经验了,于是整 ...
随机推荐
- Ioc容器BeanPostProcessor-Spring 源码系列(3)
Ioc容器BeanPostProcessor-Spring 源码系列(3) 目录: Ioc容器beanDefinition-Spring 源码(1) Ioc容器依赖注入-Spring 源码(2) Io ...
- Python求解进制问题(阿里巴巴2015笔试题)
问题描述:用十进制计算30的阶乘,然后把结果转换成三进制表示,那么该进制表示的结果末尾会有多少个连续0?解析:作为笔试题的话,要想按照题意先把阶乘结果计算出来再转换成三进制最后再数0的个数,时间肯定来 ...
- atan()与atan2()
Atan2 函数介绍 atan2原型:extern float atan2(float y, float x);用法:#include <math.h>功能:求y/x(弧度表示)的反正切值 ...
- 复制vmware中的centos后无法上网问题
复制vmware中的centos后无法上网问题 查看IP命令 ip addr 网卡信息 eth1: mtu 1500 qdisc pfifo_fast state UP qlen 1000 使用的是e ...
- 纯css实现京东导航菜单
纯CSS代码实现导航菜单,推荐在chrome预览! 预览请点击这里:mygithub <!doctype html> <html lang="en"> &l ...
- storm 1.0版本滑动窗口的实现及原理
滑动窗口在监控和统计应用的场景比较广泛,比如每隔一段时间(10s)统计最近30s的请求量或者异常次数,根据请求或者异常次数采取相应措施.在storm1.0版本之前,没有提供关于滑动窗口的实现,需要开发 ...
- Struts2之访问路径
上一篇已经和大家分享了关于Struts2命名空间和Action的三种创建方式,本篇我们接着命名空间的内容,来一起探讨一下关于Struts2的访问路径问题,何为访问路径,就是指当我们在浏览器输入地址,点 ...
- 细谈position属性:static、fixed、relative与absolute
学习WEB有些时日了,对DOM中的定位概念有些模糊,特地花了一个下午的时间搜资料.整理写下这篇随笔. 首先,我们要清楚一个概念:文档流. 简单的讲,就是窗体自上而下分成一行一行,并在每行中按照从左到右 ...
- opensessioninviewFilter导致org.hibernate.NonUniqueObjectException
起因: 公司业务需求,增加了一个新的数据源,增加之后,起初一切正常,但是发现后台管理系统所有Ajax请求获取信息没有问题,但是涉及到保存操作就抛出异常. 异常: org.hibernate.NonUn ...
- 关于pthread_create未定义的引用的奇葩解决
1本来在代码里包含了pthread.h 第一次编译:gcc -o create create.c 提示错误 未定义的引用 2后来知道linux标准库没有pthread.h 要链接之-lpthrea ...