出于对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库,利用图片识别和无线传输的方式将场景物体的位置信息进行同步。
需要注意 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或最新版本,因为后续需要用到。
2.克隆工程到本地之后,需要将分支切换到 release/1.0.0,打开MixedReality-SpectatorView\tools\Scripts使用管理员权限运行SetupRepository.bat,该程序会自动clone MixedReality-SpectatorView所需的依赖文件,文件保存在MixedReality-SpectatorView\external文件夹下。
运行SetupRepository.bat图片来自官方
如果大佬不想进行这个步骤的话,在这里附上云盘链接(链接: https://pan.baidu.com/s/1HUDyAIDvbHcooRycTwgcwQ 提取码: viwm)。要是想亲自体验下完整操作请继续往下看。
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效果。
GitHub:
HoloLensDemo
iOSDemo
如需发布,发布前记得修改下配置
然后就可以上真机测试了
真机测试需要两个设备连接同一个WiFi局域网,iOS设备在点击Connect后会出现一个码,这时候用HoloLens的相机对着码,扫码成功后HoloLens会有声音提示,iOS上也会同步到物体信息。
---------------------------------------------------------------完结-------------------------------------------------------------------