HoloLens开发之远程视频AR标注功能开发

HoloLens2系统自带的软件中包含的官方开发的Dynamics 365 Remote Assist软件,想必大部分用户及开发者看过官方的宣传视频,通过移动端和HoloLens视频通话进行远程协作,其中一个比较大亮点就是远程空间标注,能够精准实现远程指导,但是Remote Assist尚未落地中国,国内的很多用户还无法直接使用。

下面我就围绕这个功能简单谈下如何开发远程程协助标注功能。该方案通过搭建音视频通讯,传输包含HoloLens空间矩阵信息的视频数据,经过HoloLens与Unity空间矩阵转换及2D标注到3D空间的转换实现远程空间标注。

Demo演示视频

HoloLens远程视频AR标注_哔哩哔哩_bilibili

一、音视频通讯方案

1. 基于原生的WebRTC进行开发

微软官方Github已经提供了一个MixedReality-WebRTC的工程,这个对于熟悉WebRTC的开发者可以尝试,是否可以采用市场上成熟的第三方音视频SDK呢?目前主流的音视频SDK主要适配的是PC、Web、Android、IOS,针对HoloLens设备的UWP平台几乎没有,短期内各大厂家可能还不会适配UWP,WebRTC的方案需要适配所需要的各个平台,开发难度较高、工作量较大、周期长、成本高。

MixedReality-WebRTC链接:https://github.com/microsoft/MixedReality-WebRTC

2. 使用Unity进行开发

Unity对HoloLens一直有很好的支持,使用微软官方发布的MRTK工具,能够快速完成原型的搭建,由于Unity较好的跨平台特性,可以轻松的将项目部署到HoloLens和移动设备上,下面我将使用MRTK和Unity音视频插件实现HoloLens远程协助功能,这是本案例所使用到的GitHub工程。

通过HoloLens API获取HoloLens的全息混合视频画面,在HoloCaptureManager上可以设置HoloLens的设备类型、分辨率、帧率、是否开启全息混合、全息画面的透明度、是否发送相机矩阵数据。

通过全息混合视频可以让专家端能够确认标注是正确的,标注有误时可以清除重新标注。但全息混合视频也存在一个小问题,眼睛通过HoloLens看到的虚实画面和获取的全息混合画面有微小的位置偏差,近距离时比较明显,这个问题有待官方更新底层接口。

GitHub MRTK链接:GitHub - microsoft/MixedRealityToolkit-Unity: Mixed Reality Toolkit (MRTK) provides a set of components and features to accelerate cross-platform MR app development in Unity.

本文相关的工程链接:https://github.com/ShanguUncle/UnityChatHololens

获取HoloLens混合视频

专家端对HoloLens混合视频画面进行标注

参考文档:Photo Video camera in Unity - Mixed Reality | Microsoft Docs

二、HoloLens空间标注的几个关键点

1. 获取HoloLens相机空间矩阵数据

通过TryGetCameraToWorldMatrixAPI获取VideoCaptureSample的相机矩阵和投射矩阵数据,这两个矩阵数据存储了HoloLens当前相机的方向和位置,再将HoloLens空间矩阵转换到Unity空间矩阵。

相机矩阵转换示意图

参考文档:Mixed Reality native objects in Unity - Mixed Reality | Microsoft Docs

2.二维标注到三维空间的位置转换

右图:HoloLens相机空间投射示意,左图:根据标注数据计算出的空间标注

HoloLens每一帧的视频数据都包含了空间矩阵数据,专家端在二维画面标注后确定了标注的形状(i)、中心点(X1,Y1)、长宽(L1、W1)数据,然后发送到HoloLens端,通过空间矩阵数据计算出标注时间点的相机位置C1以及视频画面的四个投射点(P1、P2、P3、P4),通过(X1,Y1)数据可以按比例计算出投射面标注点位置C2及长宽(L2、W2),通过Ray由标注时间点相机位置 C1C2发射线碰撞检测出空间中的实际的标注点位置C3,长宽尺寸可以通过C1、C2、C3和 (L2、W2)按距离比例计算出在空间中的尺寸(L3、W3),最终计算出的标注数据(C3、L3、W3)生成相应的标注实例(i),标注的方向可以朝向C1或者现在的相机位置。

射线检测需要开启HoloLens的空间感知(Spatial Awareness)功能,设置较高的扫描精度以提高碰撞精度,如果没有检测到碰撞点说明该点空间网格未扫描,可以设置个固定距离确定C3,比如1~2m,或者提示扫描该空间。

技术交流群:211031265

演示程序群文件下载!

需要源代码及视频教程请联系群主!

HoloLens2开发教程大全

  • 9
    点赞
  • 43
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
AR(增强现实)开发SDK(软件开发工具包)是一种软件开发工具,用于构建AR应用程序。不同的AR开发SDK可能具有不同的功能和特点,以下是一些常见的AR开发SDK功能区别: 1. 特征检测和跟踪:AR开发SDK可以提供用于检测和跟踪图像、物体、面部、地面等特征的工具,从而能够在AR应用程序中实现真实感和交互性。 2. 渲染和效果:AR开发SDK通常提供高质量的3D渲染和视觉效果,可以增强用户体验,并帮助开发人员创建逼真的虚拟场景。 3. 平台支持:不同的AR开发SDK可能支持不同的操作系统和硬件平台,如iOS、Android、Windows和各种移动设备、平板电脑和智能眼镜。 4. 相机控制:AR开发SDK可以提供相机控制和配置选项,以支持各种不同的相机设置,从而实现最佳的AR体验。 5. 模型库和AR云服务:一些AR开发SDK提供集成的3D模型库和AR云服务,可以帮助开发人员快速构建AR应用程序,并提供更丰富的AR体验。 6. 跨平台支持:一些AR开发SDK支持跨平台开发,使开发人员能够使用单一代码库为多个平台构建AR应用程序。 7. 手势和输入:AR开发SDK可以提供手势和输入检测工具,以支持用户与AR应用程序的交互。 8. 数据分析和监控:一些AR开发SDK提供数据分析和监控功能,帮助开发人员了解用户使用情况、性能和错误,以便改进和优化AR应用程序。 总之,AR开发SDK的功能开发人员的需求而异。选择合适的AR开发SDK取决于开发人员的技术能力、目标平台和预算等因素。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

山谷大叔

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值