【HoloLens第三视角】ArUco Marker Detection结合iOS设备实现Hololens第三人称视角

实现第三视角官方给出的三种解决方案

出于对HoloLens实时演示效果要求较高的目的,可以尝试使用以下方法。如果没有太高的要求,可以尝试HoloLens提供的web工具或者桌面工具投屏。
三种解决方案适用性对比

实现HoloLens的第三人称视角,官方提供了3种方式,实际上是两种方式(一种是借助Android或iOS设备同步空间信息,另一种是另一台Hololens+相机,这种方式传说画面效果最好,但是成本最高调试也比较耗时。)三种解决方法(3种空间同步的方法)。Azure Spatial Anchors能够实现Hololens1代2代和PC、Android、iOS等设备空间信息互通,是最好的解决方案,Azure云服务也提供了免费使用时常,但是注册账号需要 VISA或万事达全币信用卡 ,注册账户时需要 扣掉1刀 确保信用卡可用,15个工作日内返还,硬核劝退。QR Code Detection 只适用于Hololens2和Android、iOS空间互通,手头没有2代做了也没太大意义,可以尝试在模拟器里跑。这里只能选择第三种ArUco Marker Detection方式。

官方文档

先贴上官方文档,方便有兴趣的朋友可以尝试其他两种方案或追随官方脚步~~
MixedReality-SpectatorView

原理说明

ArUco Marker Detection 使用OpenCV库,利用图片识别和无线传输的方式将场景物体的位置信息进行同步。

设备及工具准备

在iOS设备上实现第三视角使用设备及工具:
1.Mac一台
2.Windows PC一台 安装Unity2018.3.14或以上版本
3.HoloLens1一台
4.Iphone或Ipad一台
5.Xcode
6.Visual studio2017或以上 【特别注意】VS2017需要安装Windows 10 SDK (10.0.18362.0)
7.ARKit
8.苹果开发者账号
9.Wifi
10.原HoloLens工程

准备依赖文件

1.首先需要将微软官方在Github的案例克隆到本地,可以使用桌面版GitHub Desktop,或者PortableGit。建议使用PortableGit 2.21.0或最新版本,因为后续需要用到。
在这里插入图片描述

2.克隆工程到本地之后,需要将分支切换到 release/1.0.0,打开MixedReality-SpectatorView\tools\Scripts使用管理员权限运行SetupRepository.bat,该程序会自动clone MixedReality-SpectatorView所需的依赖文件,文件保存在MixedReality-SpectatorView\external文件夹下。
MixedReality-SpectatorView工具目录在这里插入图片描述
运行SetupRepository.bat图片来自官方
下载的依赖项

准备OpenCV DLL文件

如果大佬不想进行这个步骤的话,在这里附上资源链接。要是想亲自体验下完整操作请继续往下看。
1.准备OpenCV环境,此步骤将微软vcpkg克隆到本地文件夹。
在这里插入图片描述这里的截图包含了后续操作的结果,初始的文件没有这么多。

2.使用命令行窗口进入vcpkg文件夹,右键用管理员模式运行bootstrap-vcpkg.bat或者使用命令行。在这里插入图片描述
3.待上述步骤执行完毕,使用命令行窗口,进入vcpkg文件夹,执行integrate install
这里如果下载一直失败,先检查一下git版本是不是在2.21.0或以上,如果git满足条件,要多尝试几次。
在这里插入图片描述
4.待上述步骤执行完毕,依然使用命令行窗口,进入vcpkg文件夹,执行install protobuf:x86-windows
在这里插入图片描述
5.待上述步骤执行完毕,依然使用命令行窗口,进入vcpkg文件夹,执行install opencv[contrib]:x86-uwp --recurse,如果出现“…English language pack is unavailable.”错误,请检查是否安装VS2017的英文语言包。
在这里插入图片描述
6.准备生成dll文件。打开官方案例MixedReality-SpectatorView\src\SpectatorView.Native文件夹,使用VS2017打开SpectatorView.Native.sln文件

在这里插入图片描述
依次修改这里生成x64、x86和ARM的解决方案在这里插入图片描述
7.应用生成好的dll文件。打开MixedReality-SpectatorView\tools\Scripts文件夹,使用管理员模式运行CopyPluginsToUnity.bat。这个过程很快,出现的警告也不用管。
在这里插入图片描述在这里插入图片描述
这步执行完成后可以在MixedReality-SpectatorView\src\SpectatorView.Unity\Assets\SpectatorView.Native\Plugins文件夹里看到生成的dll文件噢。
在这里插入图片描述

应用到项目中

由于HoloLens的SDK和ARKit的SDK不能兼容噢,所以最好分成两个项目来做!!!!
1.配置HoloLens项目
可以先创建一个新的Hololens工程试水,在自己项目里使用的话记得创建备份噢~~
MixedReality-SpectatorView\src\SpectatorView.Unity\Assets里的文件全部复制到工程里(建议在Plugins里创建一个文件夹放在里面)。
在这里插入图片描述
像这样
在这里插入图片描述
然后搜索SpectatorView,把预制体拖到场景中。
在这里插入图片描述
然后配置需要同步的物体,我的Demo里放了一个box,制作成了预制体。如果场景物体都放在一个父物体下,只需要在父物体上挂上名为GameObjectHierarchyBroadcaster的脚本即可 在这里插入图片描述
如果场景物体分布比较散乱,可以在工具栏找到Spectator View\Edit Setting,然后在右边信息窗口勾选Automatically Broadcast All GameObjects选项。
在这里插入图片描述
最后,生成同步的资源配置文件。选择工具栏Spectator View\Update All Assets Caches,控制面板输出更新成功信息。
在这里插入图片描述在这里插入图片描述运行一下没有报错,保存一下,关闭Unity。
在这里插入图片描述
2.配置iOS项目。把刚刚关闭的项目复制一个重新命名(xxx_iOS),把ARKit导入项目的Plugins里。
在这里插入图片描述
用Unity打开项目,把HoloLens相关的场景物体、需要同步的物体全都删掉,把ARKit Camera预制体拖到场景中,开发平台切换到iOS。
在这里插入图片描述选择场景中的Spectator View物体,在右侧详情面板把Role修改成Spectator

在这里插入图片描述
还要修改一下Setting的设置,取消Enable Mobile Recording Service的勾选,不然会出现让人蛋疼的错误。。。 在这里插入图片描述

运行一下,没有报错记得保存一下。
在这里插入图片描述3.在PC上测试。把HoloLens的项目再次打开,运行后再运行iOS的项目,在输入框中输入本机IPV4地址,点击Connect!,就能看到物体同步了噢。

在这里插入图片描述

附上Demo效果。
Demo
如需发布,发布前记得修改下配置
在这里插入图片描述

然后就可以上真机测试了
真机测试需要两个设备连接同一个WiFi局域网,iOS设备在点击Connect后会出现一个码,这时候用HoloLens的相机对着码,扫码成功后,iOS上会同步到物体信息。

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 7
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值