QXRService:高通SnapdragonXR OpenXR SDK v1.x 概略

前述:

QXRService博文:

QVRService:基于SnapdragonXR-SDK 4.0.6进行QVRService的开发

QXRService:高通SnapdragonXR OpenXR SDK v1.x 概略

QXRService:基于高通QXRService获取头显SLAM Pose和IMU Data​​​​​​

QXRService:基于高通QXRService获取SLAM Camera图像

正文:

上文提到,高通以前自主研发的非OpenXR SDK,也就是SnapdragonXR-SDK(SXR SDK)在4.0.6版本之后就不会再维护了,取而代之的是基于OpenXR标准的Snapdragon XR OpenXR SDK v1.x系列SDK(名字有点绕,得分清),从今年最初的正式版本1.0到现在已经出到了1.5版本:

原计划本文是想直接讲解基于Snapdragon XR OpenXR SDK v1.5的QXRservice开发的,但还是觉得有必要先详细了解下高通的这套SDK。

高通这套新版SDK,
面向内容层,基于OpenXR标准;
面向设备层,Runtime的实现封装了之前博客中提到的开源Runtime:Monado;
其中Runtime里面不仅封装了开源Monado,更是把高通中间层的核心QXRService包裹了进去。

下图即为高通关于新版SDK中间层整体架构:

新版SDK中,高通在多处将原来的QVRService名字变更为了QXRService,不难看出高通想通过这套基于OpenXR的SDK布局未来VR、AR、MR(统称XR)基础生态。

接下来看看这版SDK内部:

主要分了五个部分:
  1.Apps
  2.Compositor
  3.Controllers
  4.device_config
  5.OpenXRLoader
  6.Runtime

一个一个来看

1.APP

主要是一些Demo apk
这些apk都是基于 OpenXR/Vulkan 和 OpenGLES 写的native app
代码不开源,每个文件夹里只有Apk和用于安装的bat脚本

例:HelloXR:

2.Compositor

Compositor的作用在于PTW、ATW、ASW等渲染相关处理,在开源Runtime Monado中,Compositor这部分是使用了shader编码写在了monado代码中,但是高通对Monado做了很多扩展,将Compositor这部分独立出来,在Runtime中封装成了单独的so。

SDK的Compositor文件夹里只有两个头文件,可能是为了高通为了便于有些客户自己集成TW渲染相关的算法用。

3.Controllers

Controllers文件夹中有一个doc说明文档和两个snapdragon-openxr-input-plugin.aar插件,分别是debug和release版本插件。

 

这个snapdragon-openxr-input-plugin.aar插件,是高通封装的"外部设备"接入Runtime的Interface的aar报,手柄,手势、手环等外设的接入都需要用到这个插件。

只有加载这个input-plugin插件接入高通Runtime,实现相关Interface,外设生成的Pose、Event等才能通过Runtime向上传递到OpenXR,再传递到内容端。

4.device_config

做过VR头显标定的人,应该都知道device_config的作用,它主要是保存头显各摄像头的畸变参数,定义的名称,规格尺寸;IMU的规格,详细参数;视觉截锥体的详细参数等配置文件。

device_config文件夹中除了有配置文件,还有push配置文件到设备对应路径下的脚本:

device_config子目录及其相关配置文件:

这些配置文件,包括 /vendor/etc/qvr 下的qvrservice_config.txt文件在头显标定,使用和功能程序开发过程中都会被使用到。

其中,值得一提的是 /vendor/etc/qvr/qvrservice_config.txt 文件,这个文件中保存了VR头显最基础的一些配置,一旦修改会影响整个头显,所以除了开发人员临时使用外,一般不会使用,而是trinity.txt 针对性的进行修改

5.OpenXRLoader

这个目录中存储的就是之前博客中提到过的,OpenXR层用于load Runtime层的OpenXR Loader,它的编译方式可以在OpenXR中进行修改,可以编成so,也可以编成aar包。

高通SDK中把它编成了一个aar。

6.Runtime

Runtime目录中初看只有一个Runtime Apk和一个bat脚本,但是得拆解出来详细看看。

将openxr_runtime_app-inputService-release.apk的apk后缀改为zip,然后解压就能看到如下:

assets,kotlin,res这些里面没有什么实质性的东东,不用细看,重点看lib目录,具体拆解如下:


其中用蓝色框标出来的三个库:
libqxrcamclient.so
libqxrcoreclient.so
libqxrsplitclient.so

这三个库,就是我们开发就是我们就是我们基于QXRService开发所需的库文件,尽管libqxrsplitclient.so 一般也用不上,不过还是带上。

另外值得注意的两点:
(1).以 libqvr、libqxr开头的库,就是这版SDK的Runtime中对QXRService的封装
(2).libqxrcamclient.so / libqxrcoreclient.so / libqxrsplitclient.so,对比老版4.0.6 SDK,这三个库的名字前缀都从 libqxr 改成了 libqxr,也正说明了开头高通希望通过新版SDK布局XR行业生态的长远计划。

结束语:如果在高通的平台上做XR产品,在高通正在持续发布的Snapdragon XR OpenXR SDK v1.x系列SDK中,QXRService的开发是自研算法接入到高通SDK最关键的部分。

目前,基于QXRService,已完成自研的类似于高通Qvrdatalogger工具的开发,其中可以顺利抓取到如下重要基础数据,以及其他所需数据:
(1).顶部和底部 Slam Camera 图像数据
    (时间戳,曝光时间,图像内存地址,FrameNumber等图像详细信息)
(2).IMU数据 (时间戳,陀螺仪数据,加速度计数据)
(3).高通SLAM输出的Pose数据 (时间戳,position,四元素)

在后续的博客中,会继续用两到三篇来讲解详细的开发过程。

  • 11
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值