Table of Contents

发布到 WebGL

Kmax XR Core 包含 WebGL 平台的追踪通信与显示控制实现。浏览器中的立体显示仍依赖 Kmax 设备及其追踪服务,普通浏览器不会因此获得硬件追踪能力。

构建与部署

  1. 按照快速开始配置场景中的 XRRig、输入模块和画布。
  2. 将 Unity 项目切换到 WebGL 平台并构建。
  3. 通过 Web 服务器提供构建产物,并在目标设备上打开页面。
  4. 确认设备追踪服务连接成功后,再请求进入立体模式。

WebGL 默认使用单目显示。应用需要根据自己的交互流程请求切换,例如在用户进入或退出全屏时切换。

切换显示与追踪

SDK 的 WebGL 通信初始化会创建名为 WebMessageReceiver 的对象。页面通过 unityInstance.SendMessage 调用其 SetXRMode 方法:

  • 参数 1:请求开启追踪与立体显示。
  • 参数 0:请求关闭追踪并恢复单目显示。

以下代码放在获取 unityInstance 后的作用域内,例如 createUnityInstance(...).then((unityInstance) => { ... }) 的回调中。事件触发时,场景中的接收对象和设备服务连接也必须已经就绪。

document.addEventListener("fullscreenchange", () => {
    const xrEnabled = document.fullscreenElement !== null;
    unityInstance.SendMessage(
        "WebMessageReceiver",
        "SetXRMode",
        xrEnabled ? 1 : 0
    );
});

WebGL 页面集成位置示意

如果页面还包含视频等其他全屏元素,应改为判断应用自己的全屏容器,避免误触发。建议将修改维护在项目的 WebGL 模板中,避免下次构建覆盖手动编辑的 index.html

连接与兼容性

当前实现默认连接本机(localhost)的 WebSocket 追踪服务。请求过早或连接未建立时会产生错误,需检查浏览器 Console 和设备服务状态。

旧版接入说明给出的环境基线为 Unity 2020 或更高版本、科骏相机 3.8.0 或更高版本。这属于历史设备接入要求,不代表所有后续浏览器、Unity 和服务版本组合均已验证。本文档以 SDK 2.7.2 为基准,发布前应在实际目标环境测试。

页面的安全策略和部署协议也可能影响本地 WebSocket 连接;发生连接失败时,应结合浏览器错误信息检查,不能仅通过切换全屏判断集成成功。