重要组件

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

  1. HTC Vive开发笔记之手柄控制

    怎么安装设备,配置环境我就不说了,自行百度,教程很多也很简单.接下来说下Vive手柄的控制. 手柄是HTC Vive的重要交互手段,我们通过第一个图片应该对其有一个直观的了解了,总共是九个按钮: 第一 ...

  2. HTC Vive开发笔记之UI Guideline

    本文转自HTC官方论坛,原址https://www.htcvive.com/cn/forum/chat.php?mod=viewthread&tid=1641&extra=page=1 ...

  3. HTC Vive开发笔记之手柄震动

    手柄震动的代码SteamVR_Controller脚本的最上面的注释里面就有说明,其实也很简单 // Example usage: //这个栗子是左手柄震动 右手震动只需把Leftmost换成Righ ...

  4. unity3D HTC VIVE开发-物体高亮功能实现

    在VR开发时,有时需要用到物体高亮的功能.这里使用Highlighting System v3.0.1.unitypackage插件实现. Highlighting System v3.0.1的介绍访 ...

  5. Unity SteamVR插件集成

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

  6. HTC vive开发:关于手柄按键

    一.关于左右手柄的对应关系 两个手柄和SteamVR_TrackedObject.EIndex是对应的,一个是EIndex.Device2,另一个是EIndex.Device3(有编号的那个) 在场景 ...

  7. [开发笔记]-flowplayer视频播放插件

    最近项目中需要添加播放视频的功能,视频文件是flv格式的.在网上找了一些jQuery视频播放插件,还是觉得“flowplayer”要好一些.特将使用方法记录一下. flowplayer也有html5版 ...

  8. prestashop二次开发 笔记(支付插件)

    //主函数 public function __construct() { $this->name = 'CilPay';    //模块名称         $this->display ...

  9. osgMulitiplerendertargets sample 中fbo使用【HTC VIVE开发中应用】

    osgmultiplerendertargets.cpp ...................................... // now create the camera to do t ...

随机推荐

  1. Halcon 10.0 Sample:完整性检查(圆形)

    * ball.hdev: Inspection of Ball Bonding * 球接合检查 Comment Time:// *核心思想:.白色区域用作自动ROI,黑色区域是目标 * .Openin ...

  2. Invoke-WebRequest Invoke-RestMethod 乱码研究

    powershell Invoke-WebRequest Invoke-RestMethod 乱码 encoding sharset CharacterSet Invoke-WebRequest和In ...

  3. HDU1004 BALLO0N

    Let the Balloon Rise Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others ...

  4. jQuery 菜单项切换

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  5. golang flag包简单例子

    package main import ( "flag" "fmt" ) var workers int; func main() { flag.IntVar( ...

  6. 多比(SVG/VML)图形控件多比(SVG/VML)图形拓扑图控件免费下载地址

    多比图形控件是一款基于Web(VML和SVG技术)的矢量图形控件, 类似于网页上的Visio控件拓扑图软件,是目前国内外最佳的基于web的工作流设计器.工作流流程监视器解决方案. 可广泛应用于包括:电 ...

  7. wndows程序设计之书籍知识与代码摘录-封装一个类似printf的messagebox

    //----------------------------------------- //本程序展示了如何实现MessageBoxPrintf函数 //本函数能像printf那样格式化输出 //摘录 ...

  8. logback配置错误邮件发送

    配置logback发送error级别日志到指定邮箱 需要导入jar包:janino.jar <property name="smtpHost" value="smt ...

  9. CI框架源码分析

    这几天,把ci源码又看了一遍,于是有了新的收获.明白了在application目录下core文件夹的作用,就是用来写ci核心文件的扩展的, 而且需要在配置文件中添加类前缀MY_. CI框架整体是但入口 ...

  10. java中set的交集、差集、并集的简单实现

    实现思路很简单,直接上代码: package test; import java.util.HashSet; import java.util.Set; public class Test { pub ...