VR Gamepad手柄
现在大部分VR搭配gamepad手柄,用户通过手持手柄可以与虚拟场景进行交互。
就如headset头盔一样,gamepad手柄也有3-DoF和6-DoF的两种类型:
- 3-DoF如daydream controller,只支持方向追踪,于是google推荐采用laser激光笔进行交互。
- 6-DoF如Oculus touch,可以进行方向和位置追踪,因此可以很好的模拟手臂的动作。
相比headset传感器输入产生的交互,gamepad还多了各种输入元件,如按钮、touchpad触控板或thumbstick手摇杆等。
于是,根据手柄输入硬件又可将gamepad事件分为三类:
- A. 传感器事件:由传感器对手柄进行物理追踪,如激光笔交互;
- B. 按钮事件:通过点击按钮产生的交互行为;
- C. 控制单元事件:由thumbstick, touchpad输入产生,如swipe滑动来翻页等。
Gamepad APIGamepad API是一个HTML5接口,让开发者可以通过js访问游戏手柄,使用Gamepad API的第一步是获取gamepad实例。

一个典型的gamepad一般都会有button按钮和axes control控制单元,而VR gamepad则是在前两者的基础上,加上对传感器的支持。
| 属性 | 说明 |
|---|---|
| id | string类型,包含手柄的标识信息。 |
| connected | bool类型,反映手柄是否处于连接状态 |
| buttons | 返回GampadButton对象数组,即手柄上的所有可用按钮 |
| axes | 返回double类型数组,数组元素为手柄控制元件上各轴向数值 |
| pose | 返回一个GamepadPose对象,包含手柄的方向和位置信息 |
获取headset实例需要调用navigator.getVRDisplays()方法,同样,获取一个手柄的实例,则是调用navigator.getGamepads()方法,它返回一个gamepads数组。
一旦有手柄连接上,gamepads数组将产生有效的gamepad对象,否则,只能是null。
function getGamepad(id)
const gamepads = navigator

本文是关于WebVR中Gamepad手柄开发的教程,介绍了3-DoF和6-DoF手柄的区别,以及如何利用Gamepad API进行交互。内容包括传感器事件、按钮事件和控制单元事件的处理,重点讲解了gamepad.buttons、gamepad.axes和gamepad.pose等关键属性,用于实现VR场景中的按钮点击、摇杆滑动和位置追踪等交互功能。
最低0.47元/天 解锁文章
3353

被折叠的 条评论
为什么被折叠?



