VRPN 介绍及使用
VRPN 简介
Virtual-Reality Peripheral Network ( VRPN )由一系列的类库组成,它也提供一系列的服务在虚拟现实系统中实现应用程序与外围物理设备( tracker 等)之间的网络透明接口。
VRPN 提供:
- 通过易用和可扩展的接口访问各种 VR 外围设备。
- 设备的网络透明接口。
- 来往设备之间的消息的时间标记。
- 处于不同机器中的客户端与服务器进行时钟同步。
- 同一时间可与设备建立多个链接。
- 与失效远程服务器重新自动建立链接。
- 对交互会话进行存储和重放。
V RPN 的目标不是提供一套全面的 VR API , VRPN 专注于为尽量多的设备提供统一的接口,实现网络透明访问设备的低延迟和可靠性。
设备类型和分层
不难想象 VRPN 不是为一套设备提供驱动程序,而是为一套功能提供接口。特定的设备属于一个或多个标准设备类型。每种设备类型指定一致的接口和语法通过设备实现这些功能。常用的设备列在下面。有新的设备类型提供就可以建立新的类型。
-
- Tracker 记录姿势(位置和方向)姿势的速度和,或者加速度。
- Button 记录按钮的按下与释放事件。
- Analog 记录一个或多个模拟值。
- Dial 记录增值旋转。
- ForceDevice 指定三维空间中的表面和受力范围。
映射一系列设备到一个标准设备,需要映射每个设备的不同功能到同一个接口。是提供一个简单的接口还是提供一个功能齐全的接口是个两难的决定。 VRPN 通过以下解决:
- 以功能区分设备。
- 映射设备到 VRPN 中的连接。
- 允许设备输出多种接口。
- 舍弃那些不被支持的消息类型。
- 应用程序层可以取得所有的消息。
实例解析:一个特定的设备可能实现不止一种的功能。一个该设备的 VRPN 驱动程序输出多种设备类型的接口。 SensAble™ Technologies Phantom™ haptic display 的服务器在相同的设备下输出 Tracker, Button, 和 ForceDevice 三个接口 . 客户端处理 Phantom™ ,好像是三个设备各自提供各自的功能。虽然在 Phantom™ 系统中 Tracker, Button 和 ForceDevice 设备在逻辑上时分开的,但是为了更有效的通信,在内部它们是一起被映射到相同的网络连接。