上文提到,高通以前自主研发的非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,四元素)
在后续的博客中,会继续用两到三篇来讲解详细的开发过程。
一、前言效果图:VuforiaEngine为HoloLens提供一项重要功能:支持连接AR体验与环境中的具体图像和物体。你可以使用此功能在工业企业的机器表层覆盖引导式分步说明,或向实体产品或游戏添加数字功能和体验。VuforiaEngine提供了丰富的功能和目标,使AR开发过程更灵活。我们最新的一项功能是VuforiaModelTargets,它是具有商业用途和工业用途的一项关键功能。通过模型目标,应用程序可识别机器、汽车或玩具等物理对象,并基于CAD或数字3D模型跟踪它们。在工业用途方面,此功能可在工厂内部或外部现场向装配工人和服务技术人员提供AR作业说明和程序指南。为手机和平板电脑构建的现
我目前购买了一台QualcommGimbalBeacon设备。但是,当我在Gimbal的开发者网站上添加我的设备时,它显示固件和电池电量未知。我不知道我的设备是否已经添加,我也不知道如何通过我的iOS应用检测我的云台信标。任何帮助都会很棒。提前致谢。 最佳答案 如果您的Gimbal开发者帐户下列出的信标显示固件和电池电量的未知值,这意味着您的手机未与信标通信。我怀疑这与使用GimbalSDK配置正在构建的应用程序的方式有关,或者示例应用程序未设置为与您的Gimbal开发者帐户一起使用。一旦一切配置正确,当您的手机靠近Gimbal信标
1.流程 USB插入接收广播授权->建立adb连接服务->执行adb命令2.adb相关属性ro.secure=0开启root权限ro.adb.secure=11开启adbRSA指纹认证,0关闭ro.debuggable=11开启adbdebug,0关闭3.修改源码位置 build/core/main.mk部分代码如下图所示4、/PA1032/frameworks/base/packages/SystemUI/src/com/android/systemui/usb5其他:需要注意更换电脑需要将默认.android目录adbkey.pub/adbkey文件替换到misc目录adb_keys文
UnityVuforia播放视频全过程(从Unity的安装到打包)一、安装Unity(1)点击安装地址下载UnityHub下载好之后点击安装。(2)从UnityHub进去安装Unity(要先注册登陆账号)安装完后是这样的二、新建项目项目创建完成打开如下:目标平台为安卓平台,选择菜单file—>buildsetting三、项目制作(1)在Unity内导入vuforiaenginewindow—>packagemanager(2)前往Vuforia注册登录账号点击Vuforia前往官网注册登陆之后:创建应用(3)上传识别图(4)下载到Unity(5)将下载好的文件放置进入Unity(手动拖就好)(
1、很多人看到这个日志第一感觉可能觉得哪里没有合理释放,于是带着这个思路去进行百度探索2、一开始我去寻找 ImageReader.OnImageAvailableListener这个问题varafterBitmap:Bitmap?=null/**监听拍照的图片*/privatevalimageAvailableListener=ImageReader.OnImageAvailableListener{reader->try{//ThreadPoolManager.getInstance().execute{//获取捕获的照片数据valimage=reader.acquireNextImage
By:fulinuxE-mail:fulinux@sina.comBlog:https://blog.csdn.net/fulinus喜欢的盆友欢迎点赞和订阅!你的喜欢就是我写作的动力!目录问题概述audiolog打印问题初步分析通话的API接口audiohal的调用流程音频xml文件音频校准参数acdb文件:ion设备问题audio驱动log分析adsp内部介绍音频路由节点分析modem侧给adsp顺序发送的命令码
目录高频与低频区分:高通滤波器:1.傅里叶变换:低通滤波器:总结:高频与低频区分: 在了解图像滤波器之前,先谈一下如何区分图像的高频信息和低频信息,所谓高频就是该像素点与周围像素差异较大,常见于一副图像的边缘细节和噪声等;而低频就是该像素点与周围像素差异变化不大,一般体现为图像的平坦区;高通滤波器: 高通滤波器指的是允许高于某一阈值的频率信息通过,过滤掉低于这一阈值的频率信息,从而大大衰减低频率的一种滤波器。在图像处理中,过滤频率信息采用的是傅里叶变换,把图像从空域转为频域进行处理。1.傅里叶变换:傅里叶变换公式: 图像高H,宽W。F(u,v)表示频域图像
文章目录一、Camera硬件简介二、内核驱动移植2.1、确定设备树2.2、增加camera节点2.3、配置相关GPIO沉淀、分享、成长,让自己和他人都能有所收获!??本篇将介绍qcm6490摄像头驱动开发。一、Camera硬件简介摄像头连接器一般会包含Mipi信号、mclk、供电、reset和PDN等引脚。通过查阅qcm6490数据手册可以得知,该芯片有4组CCI(cameracontrolinterface)接口,用于控制对应的camera和相关的
UnityARVuforia(高通)3D物体识别(ObjectTarget)引擎版本须知Unity2020.3.5f1c1VuforiaEngine9.8插件导入及更新3D物体数据扫描Unity场景设置参考链接引擎版本须知Unity2020.3.5f1c1UnityAndroid的ProjectSettings–>Player–>MinimumAPILevel:Android6.0(APILevel23)TargetAPILevel:Android11.0(APILevel30)该设置是经过测试之后,插件需求的相应设置。VuforiaEngine9.8项目开发时,VuforiaEngine已经
文章目录一、音频流数据传输通道创建1.1、流程描述1.2、流程图解二、音频数据传输2.1、流程描述2.2、流程图解沉淀、分享、成长,让自己和他人都能有所收获!??本篇章主要图解AudioTrack音频流数据传输。一、音频流数据传输通道创建1.1、流程描述AudioTrack在set函数中通过IAudioFlinger(binder机制)调用AudioFlinger的createTrack接口进行设备选择(设备选择详细流程参考AudioTrack创建流程、输出设备选择),音频数据共享内存创建;在PlayBackThread中创建Track,Track继承TrackBase,在TrackBase中