重要组件

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插件集成的更多相关文章

  1. HTC Vive开发笔记之SteamVR插件集成

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

  2. 开发unity DLL插件

    最近开发一款设备的SDK,想着要开发unity版本,怎么做呢?首先想到的就是在外部编写相关的驱动程序然后集成成几个dll作为unity的SDK使用了.So,我就开始了unity外部插件的研究之旅了. ...

  3. WCF技术剖析之七:如何实现WCF与EnterLib PIAB、Unity之间的集成

    原文:WCF技术剖析之七:如何实现WCF与EnterLib PIAB.Unity之间的集成 在这之前,我写过深入介绍MS EnterLib PIAB的文章(参阅<MS Enterprise Li ...

  4. Padavan老毛子固件:17CE插件集成

    Padavan老毛子固件:17CE插件集成 1.老毛子路由设置:系统管理-服务-启动SSH服务器     以下链接下载 "winscp" http://down.orsoon.co ...

  5. IDEA常用快捷键和常用插件集成,持续更新......

    用习惯了eclipse,不容易转过来,记一下! 快捷键 psvm: main 方法快捷键 sout :syso快捷键 CTRL+O: 重写父类方法 Ctrl+Alt+V :自动补全返回值 Ctrl+S ...

  6. mydate97时间插件集成jquery插件

    1.初始化JS: //把mydate97时间插件集成jquery插件 (function ($) { $.fn.mydatePicker = function (options) { return t ...

  7. (转)Unity Cinemachine插件,实现单目标和多目标之间切换

    Unity Cinemachine插件学习笔记,实现单目标和多目标之间切换*版本要求Unity2017.1及以上. 参考资料: [官方] Unity 2017.1正式版发布 Cinemachine插件 ...

  8. unity 常用插件 2

    Advanced PlayerPrefs Window 用来管理 PlayerPrefs 数据,超好用 JsonDotNet JSON 的序列化/反序列化插件.这个插件是支持 iOS, Android ...

  9. unity常用插件

    Unity3D常用插件,网址:http://jingyan.baidu.com/article/7f766daf4ef2844100e1d079.html ,想想自己也有小半年unity经验了,于是整 ...

随机推荐

  1. Ajax 入门之 GET 与 POST 的不同 (2)

    在之前的随笔中,本着怀旧的态度总结了一篇 兼容不同浏览器 建立XHR对象的方法: 在建立好XHR对象之后,客户端需要做的就是,将数据以某种方式传递到服务器,以获得相应的响应,在这里,  Ajax技术总 ...

  2. (4)activiti之uel表达式

    有了前面几章,我们肯定有一定的困惑,activiti如何与实际业务整合,比如一条采购单,如何跟一个流程实例互相关联起来? 这里就需要使用到activiti启动流程实例时设置一个流程实例的busines ...

  3. CREELINKS平台_处理器CeGpio资源使用说明(CeGpio的配置与使用)

    0x00 CREELINKS平台简介     CREELINKS(创e联)是由大信科技有限公司研发,集合软硬件.操作系统.数据云储存.开发工具于一体,用于物联网产品的设计.研发与生产的平台.    平 ...

  4. Qt 地址薄 (一) 界面设计

    实现一个简单的地址薄,功能包括:地址的添加.浏览.编辑.查找.输出文件等. 1  界面和元素 整个地址薄界面,可视为一个 AddressBook 类.其中的 Name.Address 以及两个编辑栏, ...

  5. 《汇编语言程序设计》——仿windows计算器

    <汇编语言程序设计> ——计算器程序设计 目录 一.     题目与目标 1.      题目 2.      学习目的 二.     分析与设计 1.      系统分析 2.      ...

  6. BZOJ 3412: [Usaco2009 Dec]Music Notes乐谱(离线处理)

    这道题貌似怎么写都可以吧= =,我先读入询问然后从小到大处理就行了= = PS:水水题真的好!无!聊!但是好!欢!乐! CODE: #include<cstdio>#include< ...

  7. 多源最短路径---Floyd-Warshall算法

    摘自啊哈算法-知识分享,代码自己有改动,使得输出更直观. 小哼准备去一些城市旅游.有些城市之间有公路,有些城市之间没有,如下图.为了节省经费以及方便计划旅程,小哼希望出发之前知道任意两个城市之间的最短 ...

  8. 做了个新的UWP类库 Sharp2D

    C#开发UWP的时候如果要实现高斯模糊效果的话,最好的选择似乎是微软的Win2D 但是Win2D太过庞大了,仅仅是庞大其实也没啥问题,毕竟net core就很庞大,但Win2d是一个Winmd组件 w ...

  9. Java代码块详解

    Java中代码块指的是用 {} 包围的代码集合,分为4种:普通代码块,静态代码块,同步代码块,构造代码块 普通代码块: 定义:在方法.循环.判断等语句中出现的代码块 修饰:只能用标签修饰 位置:普通代 ...

  10. 通过JS将BSAE64生成图片并下载

    HTML:<div style="display:block;margin:0 auto;width:638px;height:795px;"><div id=& ...