高级触觉反馈,Oculus详解Touch控制器的“缓冲触觉”功能
文章相关引用及参考:roadtovr
Oculus最新的“Buffered Haptics(缓冲触觉)”的功能可允许开发者更细致地控制触觉反馈
(映维网 2017年08月14日)Oculus已经为他们的开发者知识库添加了新的文档,详细介绍了Oculus SDK的“Buffered Haptics(缓冲触觉)”功能,这是一种为Touch控制器编程更高级触觉反馈的方式。
Oculus Touch通过线性致动器提供触觉反馈,而这种触觉技术已经越来越多地取代主机手柄中常见的简单“隆隆声”反馈。与以往旋转大量的马达相比,线性致动器可以更快速的运动,从而实现更广泛的触觉效果,更快速的响应时间,以及更好的控制。Oculus最新的“Buffered Haptics(缓冲触觉)”的功能可允许开发者更细致地控制触觉反馈。
SDK支持两种触觉反馈,缓冲和非缓冲。Oculus建议不要同时使用两种方法,以避免不可预测的触觉反馈行为。
非缓冲触觉更容易理解和控制,能够以特定频率(160Hz或320Hz)和振幅(0至255)简单地切换振动。Oculus写道,非缓冲触觉“用于没有严格延迟要求的简单效果,因为控制器需要33ms的时间来响应修改触觉设置的API调用。”
缓冲触觉不仅响应速度更快(10ms),而且允许更广泛和更复杂的触觉效果,“例如围绕波形或切线函数形成振动幅度模式,平移控制器之间的振动,生成一系列的低频载波等等”。该功能允许开发者排列一串代表期望振幅的字节,然后以320Hz顺序播放,从而允许开发者每3.125ms就能精细调整0(最低)-255(最高)之间的振幅。
Oculus SDK提供了一组触觉样品应用,以及通过缓冲触觉实现的部分触觉效果示例:
- 在每个振动周期最后提供“嗡嗡声逐渐减低”的效果 ,实现平滑的波形震动
- 在左右控制器上进行振动平移,再次在平移循环结束时产生“嗡嗡声逐渐减低”效果
- 超低频嗡嗡声,基本上是在64Hz上的一系列振动
- 基于利用三角切线波函数的混沌公式的“混乱”低频振动
文档进一步介绍该功能的工作原理,其中包括在发送给控制器之前通过所需的触觉指令排列缓冲:
一个缓冲包含0-255数值的一系列字节,其中0代表着无振幅(无振幅),255代表着SDK可允许的最高振幅。在把代码填充缓冲内的数值后,你可以通过ovr_SubmitControllerVibration把缓冲发送到一个或两个Touch控制器。然后缓冲内的每个字节以320Hz的速率依次‘播放’。最大缓冲(即一次可以发送到控制器的最大字节数,以及控制器内部缓冲的最大大小)为256字节。 ‘播放’一个256字节缓冲所需的时间长度为0.8秒(以320Hz的速率播放256个字节)。因此,你可以完全控制振动效果的幅度,一直到3.125ms(相当于320Hz)的分辨率。然而,频率只能是320Hz或320Hz的部分整商,如320/2 = 160Hz,320/3 = 106.7Hz,320/4 = 80Hz,320/5 = 64Hz等等。你可以通过发送零填充的字节,点缀大于零的振幅值字节来实现这些较低的频率。下面是部分例子:
- 320Hz,全振幅[255,255,255,255,…]
- 160Hz,全振幅[255,0,055,0,255,0,255,0,0 …]
- 320Hz,半振幅[127,127,127,…,127,…]
- 160Hz,半振幅[127,0,127,0,127,0,…,127,0,…]
- 单个尖锐振动(320Hz)[0,0,255,255,255,0,0] [延迟x ms] [0,0,255,255,255,0,0]
- 单个平钝振动(160Hz)[0,255,0,255,0,255,0] [延迟x ms] [0,255,0,255,0,255,0]
一般来说,使用320Hz谐振模式来实现更轻,更尖锐的动作,而160Hz则可以用于更重,更平钝的动作。
Oculus还指出,开发者可以“根据输入流(例如控制器移动或位置)改变振动效果”,并在把信息传递到缓冲之前预混合多个输入流。根据玩家在虚拟世界中做的事情,这可能会实现一些有趣的动态触觉。