HTC Vive开发笔记之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 = , 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物体上添加该脚本即可

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

注意事项
注意ControlIndex的值,默认情况下都会自动设置,如果手动设置错误将导致错误的表现
HTC Vive开发笔记之SteamVR插件集成的更多相关文章
- HTC Vive开发笔记之手柄控制
怎么安装设备,配置环境我就不说了,自行百度,教程很多也很简单.接下来说下Vive手柄的控制. 手柄是HTC Vive的重要交互手段,我们通过第一个图片应该对其有一个直观的了解了,总共是九个按钮: 第一 ...
- HTC Vive开发笔记之UI Guideline
本文转自HTC官方论坛,原址https://www.htcvive.com/cn/forum/chat.php?mod=viewthread&tid=1641&extra=page=1 ...
- HTC Vive开发笔记之手柄震动
手柄震动的代码SteamVR_Controller脚本的最上面的注释里面就有说明,其实也很简单 // Example usage: //这个栗子是左手柄震动 右手震动只需把Leftmost换成Righ ...
- unity3D HTC VIVE开发-物体高亮功能实现
在VR开发时,有时需要用到物体高亮的功能.这里使用Highlighting System v3.0.1.unitypackage插件实现. Highlighting System v3.0.1的介绍访 ...
- Unity SteamVR插件集成
重要组件 SteamVR_Camera VR摄像机,主要功能是将Unity摄像机的画面进行变化,形成Vive中的成像画面 使用方法: l 在任一个摄像机上增加脚本 l 点击Expand按钮 完成以上操 ...
- HTC vive开发:关于手柄按键
一.关于左右手柄的对应关系 两个手柄和SteamVR_TrackedObject.EIndex是对应的,一个是EIndex.Device2,另一个是EIndex.Device3(有编号的那个) 在场景 ...
- [开发笔记]-flowplayer视频播放插件
最近项目中需要添加播放视频的功能,视频文件是flv格式的.在网上找了一些jQuery视频播放插件,还是觉得“flowplayer”要好一些.特将使用方法记录一下. flowplayer也有html5版 ...
- prestashop二次开发 笔记(支付插件)
//主函数 public function __construct() { $this->name = 'CilPay'; //模块名称 $this->display ...
- osgMulitiplerendertargets sample 中fbo使用【HTC VIVE开发中应用】
osgmultiplerendertargets.cpp ...................................... // now create the camera to do t ...
随机推荐
- 电脑自动访问g.ceipmsn.com
电脑老师每隔1分3秒自动访问 g.ceipmsn.com这个域名 经过排查发现是TeamViewer8在作怪,好像是一直在激活引起的 关闭TeamViewer程序就好了.
- 使用Settings.settings存储用户的个性化配置
1.在vs中设计要存储的字段,如:zbl,注意范围选择用户 读取: var aa = Properties.Settings.Default.zbl; 写入: Properties.Settings. ...
- cookie 路径问题
Path – 路径.指定与cookie关联的WEB页.值可以是一个目录,或者是一个路径.如果http://www.zdnet.com/devhead /index.html 建立了一个cookie,那 ...
- MFC学习笔记(一)向模态对话框传递数据
声明构造函数为2个参数,具有默认参数的参数须放在后面. CDialogDimmer::CDialogDimmer(CString name,CWnd* pParent /*=NULL*/) : CDi ...
- css2----实现三角形和带角框
<!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8&quo ...
- 关于HTTP的几种
301.404.200.304等HTTP状态,代表什么意思? 如果某项请求发送到您的服务器要求显示您网站上的某个网页(例如,用户通过浏览器访问您的网页或 Googlebot 抓取网页时),服务器将会返 ...
- Notification NotificationManager RemoteViews PendingIntent
Notification和NotificationManager :可以用来实现可视化的消息通知等,比如:下载进度显示,消息显示,广播的内容等 RemoteViews :用于创建自定义的Notific ...
- php大力力 [037节] Iconfont-阿里巴巴矢量图标库
Iconfont-阿里巴巴矢量图标库 从此不求人:自主研发一套PHP前端开发框架 Iconfont-中国第一个最大且功能最全的矢量图标库,提供矢量图标下载.在线存储.格式转换等功能.阿里巴巴体验团队倾 ...
- angular 国际化
今天mentor说让我看看angular国际化的问题,我看了看,发现这个帖子很有价值,但是手头上还有好几个issue没有解决,所以就先考皮在这将连接,解决完这几个bug我再去细细研究这个问题, htt ...
- 从最小角回归(LARS)中学到的一个小知识(很短)
[转载请注明出处]http://www.cnblogs.com/mashiqi (居然有朋友说内容不接地气,那么我就再加一段嘛,请喜欢读笑话的同学直接看第二段)假设这里有一组向量$\left\{ x_ ...