HTCvive官方开发插件介绍

2023-11-11

相信各位小伙伴们在使用SteamVR Unity Plugin的过程中应该都遇到过这样的问题:获取设备很麻烦,设备在重启后indexID会改变从而导致设置好的左右手设备出现交错;无法与UGUI的事件系统连接导致无法使用UGUI等等很多问题。(见图1) 
        官方推出Vive Input Utility Unity Plugin,解决了以上的一些问题,为大家的开发提供了很好的便利。大家可以在Unity AssetStore中下载到,https://www.assetstore.unity3d.com/cn/#!/content/64219。 
本插件的联络邮箱为 vivesoftware@htc.com,如果有问题可以通过这个邮箱反馈。 

我们会推出Vive Input Utility使用教程系列, 
第一篇:Vive Input Utility的使用指南 https://www.htcvive.com/cn/forum/chat.php?mod=viewthread&tid=1708&extra=page%3D1 
第二篇:Vive Input Utility API详解 https://www.htcvive.com/cn/forum/chat.php?mod=viewthread&tid=1720&extra=page%3D1 
第三篇:Vive Input Utility手把手教程https://www.htcvive.com/cn/forum/chat.php?mod=viewthread&tid=1728&extra=page%3D1 

一、简介: 
        Vive Input Utility是一个基于SteamVR插件的开发工具。能让开发者更方便的控制Vive设备。我们同时也开发了在3D环境下能运用的鼠标指针方案,并适配Unity Event System。通过使用这个工具,开发者可以省下很多用来管理Vive设备的冗余代码。 

二、目的: 
        Unity SteamVR的插件给开发者提供了一个C#的接口来和Vive设备交互。但在获得控制器输入状态或者设备姿态会形成很多冗余代码: 
                不论控制器是否被连接,你都必须不断从SteamVR_ControllerManager获取正确的设备索引; 
                定位SteamVR_ControllerManager也需要花很多功夫; 
        所以,我们的主要目标就是给开发者提供便利的接口并减少冗余工作。 

三、主要特点: 
        使用静态函数获取设备输入:按键输出、手柄位置; 
        使用ViveRaycaster component实现3D鼠标指针,并适配Unity Event System; 

四、静态接口: 
        获取按钮事件: 
                原本要通过SteamVR脚本来找到设备; 
               (见图2) 
                静态类Vive Input提供了一个更简洁的API; 
               (见图3) 
        监听按钮事件: 
                ViveInput同样提供回调类型监听器; 
               (见图4) 
        获得追踪pose: 
                静态类VivePose提供了获得设备pose的API; 
               (见图5) 

五、辅助组件: 
        Vive Pose Tracker 
                类似于SteamVR_TrackedObject,但目标设备使用ViveRole.DeviceRole替代了device index 
               (见图6) 
        Pose Modifier 
                这是一个pose tracker的追踪效果脚本 
                实现抽象类PoseTracker.BasePoseModifier可以编写自定义的追踪效果。 
                有无Pose Modifier对比(见图7) 
                有无Pose Modifier视频效果 
                https://vimeo.com/171724218 
                https://vimeo.com/171724270 
        Vive射线器及射线方法: 
                 Vive Raycaster是一个发送vive按钮事件的射线事件脚本。 
                 通过结合Vive Pose Tracker和Vive Raycaster,你的控制器可以像一个3D鼠标一样使用。 
                 Vive Raycaster必须和Raycast方法一起使用。(见图8) 
                 比如,你可以像这样布置来和UGUI菜单交互。(见图9) 
                更多的例子(见图10):https://vimeo.com/169824408                               https://vimeo.com/169824438 
        事件系统处理器: 
                你必须布置一个事件系统处理器去获取由事件射线器发出的事件: 
                在对象上增加事件处理器组件(从IEventSystemHandler派生出来) 
                在对象或者子对象上增加可被射线触发的组件(如Collider/Collider2D/Graphic) 
                (见图11) 

今天的教程就到这边结束了,下一篇会给大家带来Vive Input Utility API接口的介绍。请大家关注。大家有什么问题可以在楼下讨论。 


本帖最后由 Shengjie Zhang 于 2016-8-30 10:27 编辑 


本帖最后由 Shengjie Zhang 于 2016-8-31 10:20 编辑 


  本帖最后由 Shengjie Zhang 于 2016-9-1 10:59 编辑 
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

HTCvive官方开发插件介绍 的相关文章

  • 【国赛清单】2023全国大学生电赛综合测试【总结】

    综合测评简介 1 综合测评是全国大学生电子设计竞赛评审工作中非常重要的一个环节 是 一次竞赛二级评审 工作中全国专家组评审工作的一部分 2 测试对象为赛区推荐上报全国评奖的优秀参赛队全体队员 以队为单位在各赛区以全封闭方式进行 测试现场必须

随机推荐

  • git上传文件到远程分支

    1 进入文件目录 kernel 执行make distclean 清除配置文件 2 查看所在分支 git branch a 3 查看远程分支 git branch r 3 添加文件到分支 git add git commit m XXXX
  • C++ 数据类型

    C 数据类型 使用编程语言进行编程时 需要用到各种变量来存储各种信息 变量保留的是它所存储的值的内存位置 这意味着 当您创建一个变量时 就会在内存中保留一些空间 您可能需要存储各种数据类型 比如字符型 宽字符型 整型 浮点型 双浮点型 布尔
  • Nginx配置白名单访问

    一 背景 在项目运行的时候 需要设置特定的访问权限 以拒绝其他可能存在的恶意访问 二 配置 2 1 关键字 允许访问关键字 allow 屏蔽访问关键字 deny 2 2 作用域 作用域如下 http 所有网站屏蔽IP server 单独网站
  • 字符串汇总

    一 字符串表达式计算 如 1 2 2 3 package TcpIO import java util Deque import java util LinkedList public class StringCalculate stati
  • 解决问题——无法连接到更新服务器。我们将稍后再试,你也可以立即进行检查。如果问题仍然存在,请确保你已连接到Internet

    安装AE跳出安装失败 错误 另一个安装程序当前正在运行 如需安装此产品 您必须将其关闭 请将其关闭 或者等待其他安装jieshu 错误代码 81 2 针对以上问题决定对Win10进行系统的更新 打开设置 更新与安全 进行更新 但是我的电脑更
  • 网段192.168.1.0/24是什么意思?

    192 168 1 0 24表示网段是192 168 1 0 子网掩码是24位 子网掩码为 255 255 255 0 用二进制表示为 11111111 11111111 11111111 00000000 这里为什么是24呢 就是因为子网
  • 公司计算机程序员英语作文,IT行业程序员英文简历模板范文

    英文简历的目的是帮助IT行业求职者获得面试机会 那你知道英文简历该怎么写吗 下面是学习啦小编为大家带来的程序员英文简历范文 相信对你会有帮助的 程序员英文简历范文 一 27 Hawkins Road Clarksboro New Jerse
  • Matlab 显示追踪点云 PLY格式

    用的matlab 可以用来显示文件夹下的所有ply点云 path strcat E WorkDatas argoverse tracking train1 dcdcd8b3 0ba1 3218 b2ea 7bb965aad3f0 lidar
  • 浅谈定时器及定时器在Vue项目中的使用

    对于一位前端工程师来说 说到定时器 想必都不陌生 无论是刚开始码农生活的新人还是多年工作经验的大牛 setTimeout setInterval 在项目中不可避免的都会使用 作为一个前端小菜鸟 在项目中的监控大屏的列表中需要用到setInt
  • 基于STM32CubeMX+FreeRTOS的Proteus仿真LCD1602

    LCD1602液晶显示器是广泛使用的一种字符型液晶显示模块 它是由字符型液晶显示屏 LCD 控制驱动主电路HD44780及其扩展驱动电路HD44100 以及少量电阻 电容元件和结构件等装配在PCB板上而组成 一 LCD1602技术参数 显示
  • docker 无法访问web

    出于安全考虑 Linux系统默认是禁止数据包转发的 所谓转发即当主机拥有多于一块的网卡时 其中一块收到数据包 根据数据包的目的ip地址将数据包发往本机另一块网卡 该网卡根据路由表继续发送数据包 这通常是路由器所要实现的功能 要让Linux系
  • PaddleDetection使用教程

    详细的使用教程可以参考官方文档 一 安装说明 在安装PaddleDetection之前要先安装依赖项PaddlePaddle 你可以将其看作一个内核 有了它才可以安装PaddleDetection 首先 我们可以新建一个虚拟环境 命名为pa
  • python每日一题(leetcode/atcoder/nowcoder)

    背景 用leetcode每日一题 正好练一练python的一些写法吧 2021年2月28日 896 单调队列 判断数组是单增的或者是单减的 学习到一个sorted的用法 还有倒序的切片 class Solution def isMonoto
  • 微信小程序java+ssm+uniapp个人理财消费收支系统

    利用Java语言 SSM框架和mysql数据库等知识点 结合相关设计模式 以及软件工程的相关知识 设计一个ssm微信小程序的个人消费系统 来进行记录用户的信息 以及小程序信息的增删改查的功能 根据实现需求 小程序需完成这些基本功能 1 系统
  • C++ 多态(一) : 多态的构成条件、final、override、协变、析构函数的重写、抽象类

    文章目录 1 多态的定义和实现 多态的浅层理解 多态的构成条件 2 虚函数 虚函数的重写规则 虚函数重写条件的两个例外 1 协变 返回值不同 2 析构函数的重写 函数名不同 3 C 11 override 和 final override
  • JQ开发中遇到的问题(一)

    目录 目录 1 收藏与取消收藏切换 2 使用layui插件下拉选择渲染问题 1 收藏与取消收藏切换 说明 从接口中获取收藏状态 单击切换状态 如下图所示 开始状态 点击后状态 代码实现 1 全局定义一个变量 记录状态 var collect
  • wps 云文档的服务器地址,在WPS云文档保存、管理文件

    云文档上传和获取服务端调用 目录 1 获取APP剩余空间 获取APP剩余空间 接口说明 获取APP剩余空间 请求说明 参数说明参数参数类型是否必须说明access tokenstringrequiredaccess token appids
  • 相关系数和p值的含义

    相关系数就是两个变量之间的相关程度 1 lt 0负相关 r gt 0正相关 r2越接近1表示越相关 P值即概率 反映某一事件发生的可能性大小 统计学根据显著性检验方法所得到的P 值 一般以P lt 0 05 为显著 P lt 0 01 为非
  • [Unity] Unity 3D 中的旋转

    Unity 3D 中的旋转 一 Unity 3D 中 Rotation 在Unity中 旋转通常可以用一个三维向量 x y z 表示 实际上这是欧拉角 三个分量分别是绕x轴 y轴和z轴的旋转角度 要对一个GameObject进行旋转 可以直
  • HTCvive官方开发插件介绍

    相信各位小伙伴们在使用SteamVR Unity Plugin的过程中应该都遇到过这样的问题 获取设备很麻烦 设备在重启后indexID会改变从而导致设置好的左右手设备出现交错 无法与UGUI的事件系统连接导致无法使用UGUI等等很多问题