支持中心/SDK 与 API 文档

安装与工作区转换

有两种变换可将设备定位在应用空间中。了解该 处理流程有助于您选择合适的变换。

坐标管道

设备空间-基础->挂载空间-挂载转换->工作区-工作区转换->应用空间

舞台功能介绍如何设置执着?
基础重新映射坐标轴(例如,Z轴向上 → Y轴向上)session.configure.basis — 参见 教程 08 (HTTP 远程配置)
施加变换设备的物理安装偏移量(臂的位置、旋转角度、刻度)configure.mount 或 configure.preset — 参见 教程 08 (HTTP 远程配置)
工作区转换摄像机/场景导航偏移commands.set_transform — 参见 教程 09 (WebSocket 每帧流式传输)是(置顶)

施加变换

安装配置描述了设备在物理上的位置——其臂偏移量、 方向和比例。该配置仅需设置一次(或当用户更改物理 布局时),运行时极少更新。

预设(出厂设置)

与其自己计算挂载点,不如选择一个已命名的预设:

预设源位置手臂朝向
defaults设备底座向前(手臂向前)
arm_front设备底座转发
arm_front_centered办公中心转发
led_front设备底座LED 侧向向前
led_front_centered办公中心LED 侧向向前
custom说明书 — 自行安装支架

预设可一次性设置坐标系、基底和工作空间原点。

直接设置挂载点

WebSocket 示例代码


{
  "inverse3": [{
    "device_id": "049D",
    "configure": {
      "mount": {
        "transform": {
          "position": { "x": 0.0, "y": 0.0, "z": 0.0 },
          "rotation": { "x": 0.0, "y": 0.0, "z": 0.0, "w": 1.0 },
          "scale":    { "x": 1.0, "y": 1.0, "z": 1.0 }
        }
      }
    }
  }]
}
            

超文本传输协定


curl -X POST "http://localhost:10001/inverse3/049D/config/mount?session=:0"      -H "Content-Type: application/json"      -d '{"transform":{"position":{"x":0,"y":0,"z":0},"rotation":{"w":1,"x":0,"y":0,"z":0},"scale":{"x":1,"y":1,"z":1}}}'
            
mount 和 preset 互斥

在同一条消息中同时发送这两者会导致含义模糊——服务会拒绝该消息。 请选择其中之一:一个命名 preset (该命令会自动为您挂载)或显式 mount 转换。

命令与快照的不对称性

当 发送 安装后,包裹 transform: { "mount": { "transform": { … } } }. 当 阅读 这是快照中的一个挂载点,它是平的: { "mount": { "position": …, "rotation": …, "scale": … } }. 这是设计使然——命令使用统一的 command_data 包装器;快照; 序列化 core::transform 直接。

工作区转换

工作区变换是在挂载操作之上应用的运行时偏移。 其典型用例是场景导航——在设备物理位置保持不变的情况下,对应用程序的视图进行平移、旋转或缩放。

挂载和工作区变换都是持久的——该服务会记住您发送的最后一个值。两者的区别在于用途和性能:

  • Mount 的设计理念是“设置一次,长期保持”——它描述了物理配置,并针对不频繁的更新进行了优化。
  • 工作空间变换的设计初衷是支持高频流式传输 (例如,在摄像机导航过程中每帧更新一次)——其内部处理流程已针对此更新频率进行了优化。

WebSocket 示例代码


{
  "inverse3": [{
    "device_id": "049D",
    "commands": {
      "set_transform": {
        "transform": {
          "position": { "x": 1.0, "y": 0.0, "z": 0.0 },
          "rotation": { "x": 0.0, "y": 0.0, "z": 0.0, "w": 1.0 },
          "scale":    { "x": 1.0, "y": 1.0, "z": 1.0 }
        }
      }
    }
  }]
}
            

超文本传输协定


curl -X POST "http://localhost:10001/inverse3/049D/state/transform?session=:0"      -H "Content-Type: application/json"      -d '{"transform":{"position":{"x":1,"y":0,"z":0},"rotation":{"w":1,"x":0,"y":0,"z":0},"scale":{"x":1,"y":1,"z":1}}}'
            

GET 返回当前的变换; DELETE 恢复为恒等式。

缩放会影响力输出——通常会按你期望的方式

缩放视图或工作区会改变设备渲染的力,因为缩放会影响 穿透深度 用于计算接触力。例如,一个 2x 缩放比例大致使穿透深度减半(相对于设备的移动距离,虚拟场景的尺寸是其两倍),因此产生的力大约为 一半 你当时会有什么感受 1x. 反之,一个 0.5x 比例大约使作用力增加一倍。这通常正是你期望的行为:缩小触觉场景的视图会自然导致接触力变弱(因为你“离得更远”),而放大视图则会使接触力变强。如果这不是你想要的效果——例如,你需要在用户缩放视图时保持刚度恒定——可以通过反比例调整力增益来进行补偿。

使用“导航”模块实现自动漂移

如果您需要持续移动(气泡导航、速率控制漂移), 请使用 导航模块 而不是手动 流式传输 set_transform 每次更新——它都会为您处理物理模拟、触觉反馈 以及工作区边界。