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

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

  • 实现第三视角官方给出的三种解决方案
    • 官方文档
    • 原理说明
    • 设备及工具准备
    • 准备依赖文件
    • 准备OpenCV DLL文件
    • 应用到项目中

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

出于对HoloLens实时演示效果要求较高的目的,可以尝试使用以下方法。如果没有太高的要求,可以尝试HoloLens提供的web工具或者桌面工具投屏。
【HoloLens第三视角】ArUco Marker Detection结合iOS设备实现Hololens第三人称视角_第1张图片

实现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库,利用图片识别和无线传输的方式将场景物体的位置信息进行同步。

设备及工具准备

需要注意 Visual Studio2019已经不再支持发布UWP包,HoloLens1开发者需要保证停留在VS2017环境。

在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或最新版本,因为后续需要用到。
【HoloLens第三视角】ArUco Marker Detection结合iOS设备实现Hololens第三人称视角_第2张图片

2.克隆工程到本地之后,需要将分支切换到 release/1.0.0,打开MixedReality-SpectatorView\tools\Scripts使用管理员权限运行SetupRepository.bat,该程序会自动clone MixedReality-SpectatorView所需的依赖文件,文件保存在MixedReality-SpectatorView\external文件夹下。
【HoloLens第三视角】ArUco Marker Detection结合iOS设备实现Hololens第三人称视角_第3张图片【HoloLens第三视角】ArUco Marker Detection结合iOS设备实现Hololens第三人称视角_第4张图片
运行SetupRepository.bat图片来自官方
【HoloLens第三视角】ArUco Marker Detection结合iOS设备实现Hololens第三人称视角_第5张图片

准备OpenCV DLL文件

如果大佬不想进行这个步骤的话,在这里附上云盘链接(链接: https://pan.baidu.com/s/1HUDyAIDvbHcooRycTwgcwQ 提取码: viwm)。要是想亲自体验下完整操作请继续往下看。
1.准备OpenCV环境,此步骤将微软vcpkg克隆到本地文件夹。
【HoloLens第三视角】ArUco Marker Detection结合iOS设备实现Hololens第三人称视角_第6张图片这里的截图包含了后续操作的结果,初始的文件没有这么多。

2.使用命令行窗口进入vcpkg文件夹,右键用管理员模式运行bootstrap-vcpkg.bat或者使用命令行。【HoloLens第三视角】ArUco Marker Detection结合iOS设备实现Hololens第三人称视角_第7张图片
3.待上述步骤执行完毕,使用命令行窗口,进入vcpkg文件夹,执行integrate install
这里如果下载一直失败,先检查一下git版本是不是在2.21.0或以上,如果git满足条件,要多尝试几次。
【HoloLens第三视角】ArUco Marker Detection结合iOS设备实现Hololens第三人称视角_第8张图片
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文件

【HoloLens第三视角】ArUco Marker Detection结合iOS设备实现Hololens第三人称视角_第9张图片
依次修改这里生成x64、x86和ARM的解决方案在这里插入图片描述
7.应用生成好的dll文件。打开MixedReality-SpectatorView\tools\Scripts文件夹,使用管理员模式运行CopyPluginsToUnity.bat。这个过程很快,出现的警告也不用管。
【HoloLens第三视角】ArUco Marker Detection结合iOS设备实现Hololens第三人称视角_第10张图片【HoloLens第三视角】ArUco Marker Detection结合iOS设备实现Hololens第三人称视角_第11张图片
这步执行完成后可以在MixedReality-SpectatorView\src\SpectatorView.Unity\Assets\SpectatorView.Native\Plugins文件夹里看到生成的dll文件噢。
【HoloLens第三视角】ArUco Marker Detection结合iOS设备实现Hololens第三人称视角_第12张图片

应用到项目中

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

【HoloLens第三视角】ArUco Marker Detection结合iOS设备实现Hololens第三人称视角_第23张图片
还要修改一下Setting的设置,取消Enable Mobile Recording Service的勾选,不然会出现让人蛋疼的错误。。。 【HoloLens第三视角】ArUco Marker Detection结合iOS设备实现Hololens第三人称视角_第24张图片

运行一下,没有报错记得保存一下。
【HoloLens第三视角】ArUco Marker Detection结合iOS设备实现Hololens第三人称视角_第25张图片3.在PC上测试。把HoloLens的项目再次打开,运行后再运行iOS的项目,在输入框中输入本机IPV4地址,点击Connect!,就能看到物体同步了噢。

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

附上Demo效果。
GitHub:
HoloLensDemo
iOSDemo
如需发布,发布前记得修改下配置
【HoloLens第三视角】ArUco Marker Detection结合iOS设备实现Hololens第三人称视角_第27张图片

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

---------------------------------------------------------------完结-------------------------------------------------------------------

你可能感兴趣的:(Hololens,Unity)