云服务器内容精选

  • 定位失败,定位结果显示“FewPnPInliers”或“ErrorMeanReprojectionErrTooLarge” 原因一:可能是发起定位时使用的图片纹理特征不够明显。 解决方案:在移动端,对着纹理丰富的区域单击“手动请求Vps”重新发起定位。 原因二:可能是平面识别未初始化完成。 解决方案: 查看camera的position和rotation数值。 如果position数值为0,且rotation值不更新,说明平面识别未初始化完成。 对着平面左右平移提升初始化速度,等待初始化完成。 单击“手动请求Vps”重新发起定位。 原因三:移动端不支持V2平面接口。 解决方案: 查看日志确认当前移动端的arVersion版本,如果不是V2版本,则需更换移动端。 父主题: 常见问题
  • 调用前须知 调用API前,您需提前了解如下内容: WebARSDK封装类名为“hwar”,所有API均直接通过类“hwar”来调用,无需实例化。 下文API中的GPS坐标系为WGS84坐标系。 utmCode指UTM(Universal Transverse Mercator Grid System,通用横墨卡托格网系统)投影带号。 图像流约束为宽:高=480:640,您需根据实际情况自行适配设备屏幕尺寸。 参数类型使用了TypeScript语言的声明规范。 父主题: API列表
  • 快速开始 使用微信 开发者工具 创建小程序工程,导入SDK。 本文档使用的微信开发者工具版本为Nightly 1.06.2411282。 使用微信号登录微信开发者工具。 新建微信小程序工程。 单击“新建项目”,进入“创建小程序”页面。 图1 创建小程序 在“项目名称”文本框中填写项目名称。 “目录”选择项目存放的路径。 “AppID”选择“测试号”。 “后端服务”选择“不使用云服务”。 “开发模式”选择“小程序”。 “模板选择”选“不使用模板”。 单击“创建”,完成小程序工程创建。创建完成后,工程目录如图2。 图2 目录名称 新建文件并导入SDK。 在工具的资源管理器,单击右键,选择“新建文件”,新建文件“app.json”,并在app.json中配置页面(pages),代码如下: { "pages": [ "pages/index/index" ]} 单击右键,选择“新建文件”,新建文件“app.js”。 按Ctrl+S组合键,保存并编译,工具会自动生成pages文件夹及文件夹下的文件。 下载并解压CyberverseXRLightSDK软件包。 打开工程目录,将解压后得到的build文件夹复制到pages同级目录。 图3 导入SDK后目录 调用SDK,获取版本号。 在“index.js”文件的第一行导入XRClient。 import { XRClient } from "../../build/XRClient"; 在“index.js”文件的onLoad方法里打印SDK版本号。 onLoad(options) { console.log(XRClient.getVersion()) }, 真机调试,验证结果。 自动调试前,确保移动端设备的微信在前台运行,且与开发者工具登录的是同一个账号。 在微信开发者工具中,单击“真机调试”。 根据移动端设备情况选择“启动 Android 端自动真机调试”或 “启动 iOS 端自动真机调试”。 XRLightSDK是基于XRFrame方案的AR应用,不支持PC端调试。 单击“编译并自动调试”,弹出“真机调试”窗口。 图4 真机调试 在“Console”页签下,查看输出的内容,如果打印了SDK版本号信息,说明引入SDK成功。 图5 查看SDK版本信息 父主题: XRLightSDK使用手册
  • 总体开发思路 使用WebARSDK开发移动端应用的工作流程如图1所示。 图1 工作流程 准备工作。 下载WebARSDK、收集AK/SK信息、开通关联服务。 创建H5移动端工程。 使用原生或者流行框架(如Vue、React)创建H5移动端工程。 引入WebARSDK文件。 下载、解压WebARSDK包,并将下载WebARSDK包放入工程目录,通过外部引入脚本的方式引入WebARSDK文件。 验证租户身份信息。 通过hwar.setAKSK方法将AK/SK传入SDK,验证租户身份信息。 开启AR会话。 获取图像及传感器数据,初始化SLAM,准备相关环境。 实现AR导航和渲染3D内容。 依靠视觉定位,获取当前设备位置,以及请求导航路径,实现空间位置追踪导航;开发者基于SDK输出的图像数据、相机矩阵、路径信息,实现3D数字内容渲染。 父主题: WebARSDK使用手册
  • 坐标系转换 SDK提供了UTM坐标与渲染引擎(如Three.js、LayaAir)坐标之间的转换方法。 // UTM坐标转成渲染坐标let vecInit = hwar.utm2Render([utm.x, utm.y, utm.z]);// 渲染坐标转成UTM坐标let renderPosUtm = hwar.render2Utm([render.x, render.y, render.z]);
  • 无法进行视觉定位原因排查 如果您无法进行视觉定位,建议您排查以下问题: 检查是否竖屏正向手持设备。 侦听事件“LANDSCAPE_BY_ROLL”检查当前屏幕是否竖屏。 侦听事件“ORIENTATION_NORMAL”检查屏幕正向状态。 验证视觉定位效果时,您需竖屏正向手持设备扫描周边环境。 检查定位区域是否在地图服务范围内。 按“F12”打开DevTools,在“Network”页签中查看“vps”的状态码。如果状态码为“400”,请在“Response”页签中查看“error_msg”内容,如显示“access denied, out of your service zone”,则表示位置不在您的地图服务范围。
  • WebARSDK简介 WebARSDK是一款轻量化JS-SDK,支持租户通过SDK快速集成和使用KooMap AR地图运行服务,开放能力的内存增加不大于3MB,运行时不依赖于Native App,可通过主流Web浏览器平台、主流终端设备的App内嵌WebView,实现WebAR体验。 WebARSDK提供的API,可以将用户、空间及数字内容连接在一起 ,达到厘米级的定位能力和1度以内的定姿能力,实现随时随地高精度的空间计算。在AR地图覆盖区域,用户可进行3D实景步行导引,无需担心GPS信号弱的环境。
  • 调试选项 loglevel:UPDATE|INFO|WARNING|ASSERT|EXCEPTION|ERROR|NONE 日志级别左边包含右边的日志信息,即UPDATE级别会打印所有日志信息,使用该字段会打印HTDebug的日志,并写日志到此文件的上一级文件目录。NONE表示不保存log。 debugger_ctrl_switch:ON|OFF 是否在日志中显示调试面板,只对HTAppUIType中mNativeAppIds包含的应用包名有效。 fixed_location_switch:ON|OFF 是否使用自定义的固定位置。 longitude 经度,填写固定位置经纬的值,只在“fixed_location_switch”为“ON”时有效。 latitude 纬度,填写固定位置纬度的值,只在“fixed_location_switch”为“ON”时有效。
  • 开发概述 HTSDK是接入KooMap AR地图运行服务的端侧SDK,助力于快速构建真实和虚拟融合世界。HTFoundation是适配HTSDK的示例代码,供用户在Unity3D中开发业务。 HTFoundation示例实现了真实世界构建、世界位姿定位和跟踪、虚实世界呈现。基于HTFoundation示例,用户可构建虚拟世界,包括虚拟对象设计、行为设计实现和业务逻辑开发。 图1 工作原理 父主题: HTSDK使用手册
  • 环境要求 已安装配置NodeJS环境。 已安装代码编辑器,如Visual Studio Code。 已安装Web服务器,如http-server、VSCode插件live-server、Tomcat等。 Windows系统电脑已安装Chrome浏览器或基于Chromium内核的浏览器(例如Edge);Mac系统电脑已安装Safari浏览器。 移动设备已配置后置摄像头、陀螺仪、加速度传感器、GPS芯片等器件。 移动设备已安装支持WebRTC浏览器,如Chrome、Safari、华为浏览器等。
  • 接口列表 表1 视觉定位接口列表 接口 描述 参数名 参数类型 参数说明 返回值 init 初始化视觉定位模块。 config { access: string, secret: string, beforeLocateDelta: number, afterLocateDelta: number, autoRequest: boolean, workerPath: string, url: string } 初始化配置参数。 access:认证用的AK。 secret:认证用的SK。 beforeLocateDelta:首次定位成功前每隔几秒触发一次自动请求。 afterLocateDelta:定位成功后每隔几秒触发一次自动请求。 autoRequest:是否开启Vps自动请求。 workerPath:Vps模块用到的worker文件路径。 url:触发定位请求时使用的 域名 。 void requestVps 触发定位请求。 - - - void updatePerFrame 更新相机位姿。 - - - void getCameraOffset 获取相机偏移量。 - - - number[3] getUTMPosition 获取UTM(UNIVERSAL TRANSVERSE MERCARTOR GRID SYSTEM,通用横墨卡托格网系统)坐标。 - - - number[3] destroyVps 销毁视觉定位实例。 - - - void mockVps 模拟定位。 position Vector3 位置,使用UTM坐标系。 void rotation Vector3 朝向,以弧度制表示的欧拉角。
  • 接口调用示例 请求导航路径 const utmCode = "51N"; const from: number[] = [0, 0, 0]; const to: number[] = [100, 0, 0];const policy: number = 0; XRClient.requestNavi(utmCode, from, to, policy, this.RequestNaviCallBack);//返回从出发地到目的地的路径 获取SDK版本号 XRClient.getVersion();
  • 接口列表 表1 其他接口列表 接口 描述 参数名 参数类型 参数说明 返回值 requestNavi 请求导航路径。 utmCode string 当前utm区域。 void from number[3] 导航出发点utm坐标。 to number[3] 导航目的地utm坐标。 policy number 路线选择策略。 1:最短距离 2:电梯优先 3:扶梯优先 -2:不坐电梯 -3:不走扶梯 callback Function 回调函数,附带导航路径点信息。 getVersion 获取SDK版本号。 - - - string
  • 接口调用示例 侦听事件 用于侦听事件,并触发侦听函数。 XRClient.addEvent(GlobalBus.VPS_RESULT, this.onVpsResult,this); 定义侦听函数。 onVpsResult(evt) { XRClient.log("onVpsResult status" + evt.data.status); XRClient.log("onVpsResult info" + evt.data.info); if (evt.data.status) { XRClient.log("VPS success"); wx.showToast({ title: 'success', icon: 'success', duration: 2000 }) } else { XRClient.log("VPS failure"); wx.showToast({ title: 'failure', icon: 'none', duration: 2000 }) } }, 移除侦听事件 用于移除事件,移除后侦听函数不再触发。 XRClient.removeEvent(GlobalBus.VPS_RESULT, this.onVpsResult); 派发事件 用于派发事件,配合侦听事件使用,接收到此处派发的事件,并做相应处理。 XRClient.dispatchEvent('user_define', { status: false, info: 'test' } );
  • SDK内部事件 表2 SDK内部事件列表 事件名称 描述 携带数据 数据类型 数据说明 事件说明 VPS_RESULT Vps定位结果事件。 status boolean 定位是否成功。 Vps定位结果返回时触发该事件。 info string 具体定位结果信息。 VPS_TRACKING Vps跟踪状态事件。 status boolean 状态是否为跟踪中。 Vps跟踪状态变化时触发。 SCENE_INSTANCE scene实例事件。 info object scene实例。 初始化视觉定位模块时,派发scene实例事件。