HoloLens第三视角开发【保姆级教程】【踩坑记录】

实验设备及运行环境

  • Hololens 2
  • Windows 10
  • VS 2019
  • Unity 2018.3.14f1

实施步骤

官方教程

https://github.com/microsoft/MixedReality-SpectatorView/tree/v1.1.0

下面根据官方教程和自己的实际经验来说明:

一、获取官方的第三视角工程

  1. 下载Git
  2. 在自己的Github账号下新建一个repository,有关如何设置存储库的更多信息,请参见这里
  3. 使用管理员模式打开cmd
  4. 克隆自己的工程到本地文件夹(anywhere)

git clone https://github.com/your_github_name/你刚才新建的repository的名字.git

在这里插入图片描述
5. 在cmd中将路径切换到新建的本地文件夹下
6. 将MixedReality-SpectatorView代码基作为项目的子模块。在cmd中输入

https://github.com/microsoft/MixedReality-SpectatorView.git sv

  1. 步骤6中的子模块的名字叫sv。仙子在cmd中将目录更改为sv文件夹下。
  2. 选择MixedReality-SpectatorView工程项目分支,这里我们选择1.1.0

i. git fetch origin release/1.1.0
ii. git checkout release/1.1.0
iii. git branch

二、本地环境设置

  1. 新建一个Unity工程(比如UnitySpectator),将这个工程和刚才下载好的sv文件夹放在同级目录下。
  2. 在您的 PC 上以管理员身份运行cmd,并输入’Your_sv_file_location/tools/Scripts/SetupRepository.bat’(或者直接手动双击打开bat文件)
    在这里插入图片描述
  3. 关闭所有Unity工程
  4. 现在,将cmd的路径切换至包含sv和Unity工程(比如UnitySpectator)的文件夹下
    在这里插入图片描述

  1. 在cmd中输入
    sv\tools\Scripts\AddDependencies.bat -AssetPath "UnitySpectator\Assets" -SVPath "sv"
    总之,这里都是相对路径,大家可以根据自己情况来。

  2. 现在,当您在 Unity 中重新打开项目时,第三视角相关文件夹应该出现在项目的 Assets 文件夹中。

三、Unity工程依赖的第三视角dll生成

1. 确保您拥有构建和使用 Spectator View 所需的所有软件和硬件。
2. 将空间对齐所需的依赖项添加到 Unity 项目中。

这一步坑比较多,上链接
我们选择的是基于QR Code的检测方式。这一步,我需要花点版面来填一下坑。
在这里插入图片描述
根据上图及相关链接:

  • 下载QR APIs库 ,链接
  • 构建SpectatorView.WinRTExtensions.dll的 x86 Release 版本,并将关联的 dll 包含在您的 Unity 项目中。链接
    这一步的目的是为了让SpectatorView.Native.sln工程能够运行成功,并生成下面几个dll
    在这里插入图片描述
  1. 下载 DeckLink相关软件和SDK,下载链接
    注意:下载10.9.11版本的。
  2. 软件傻瓜式安装,SDK压缩包可以解压至任何位置。
  3. 打开下面这个sv里面的dependencies.props文件,换一下 DeckLink的头文件
    在这里插入图片描述
    在这里插入图片描述
  4. 下载Elgato Capture Card相关库。具体方法为:新建一个文件夹,将cmd的路径切换至这个文件夹下;输入:

git clone https://github.com/elgatosf/gamecapture

然后再打开上面的dependencies.props文件,改一下Elgato的路径
在这里插入图片描述
7. 安装Opencv,简直是巨坑,如果没卡在这里真的是太幸福了。

  • 安装Vcpkg
  1. 创建一个Vcpkg文件夹
  2. 使用管理员模式打开cmd,路径切换Vcpkg文件夹下
  3. 在cmd中输入git clone https://github.com/Microsoft/vcpkg
  4. cd vcpkg
  5. .\bootstrap-vcpkg.bat
  6. .\vcpkg integrate install
  • 安装OpenCV Contrib

cmd还是在Vcpkg文件夹下的路径,依次输入:

.\vcpkg install protobuf:x86-windows
.\vcpkg install opencv[contrib]:x86-uwp --recurse
.\vcpkg install opencv[contrib]:x64-windows --recurse

……………………………………………………分割线……………………………………………………………………

进行到第二步x86-uwp的时候报错(如果没报错就跳过 分割线中内容):
在这里插入图片描述
解决方案:

https://github.com/microsoft/MixedReality-SpectatorView/issues/464

  1. 使用管理者模式打开cmd,将路径切换为Your_path\vcpkg\buildtrees\tiff\src\vX.X.X-xxxxxxxxx.clean\文件夹下
  2. 在cmd中,我们启动一个空的 git 存储库,将文件的当前版本添加到其中并提交它:

git init .
git add .
git commit -m “temp”

注意:前两条注意 点 前面的空格。我是加了空格,不知道不加行不行。

  1. 手动进入Your path\vcpkg\buildtrees\tiff\src\vX.XX-xxxxxxxxx.clean\libtiff\ 文件夹并在文本编辑器中打开 tif_win32.c。

注意:cmd先别关。

在第 280 行删除这段代码:

fd = (thandle_t)CreateFileA(name, (m == O_RDONLY)?GENERIC_READ:(GENERIC_READ | GENERIC_WRITE), FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, dwMode, (m == O_RDONLY)?FILE_ATTRIBUTE_READONLY:FILE_ATTRIBUTE_NORMAL, NULL);

替换为:

	#if (_WIN32_WINNT >= _WIN32_WINNT_WIN8) 
		fd = (thandle_t)CreateFile2(name, (m == O_RDONLY)?GENERIC_READ:(GENERIC_READ | GENERIC_WRITE), FILE_SHARE_READ | FILE_SHARE_WRITE, dwMode, NULL); 
	#else 
		fd = (thandle_t)CreateFileA(name, (m == O_RDONLY)?GENERIC_READ:(GENERIC_READ|GENERIC_WRITE), FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, dwMode, (m == O_RDONLY)?FILE_ATTRIBUTE_READONLY:FILE_ATTRIBUTE_NORMAL, NULL); 
	#endif

在第 330行删除这段代码:

fd = (thandle_t)CreateFileW(name, (m == O_RDONLY)?GENERIC_READ:(GENERIC_READ|GENERIC_WRITE), FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, dwMode, (m == O_RDONLY)?FILE_ATTRIBUTE_READONLY:FILE_ATTRIBUTE_NORMAL, NULL);

替换为:

	#if (_WIN32_WINNT >= _WIN32_WINNT_WIN8) 
		fd = (thandle_t)CreateFile2(name, (m == O_RDONLY)?GENERIC_READ:(GENERIC_READ | GENERIC_WRITE), FILE_SHARE_READ | FILE_SHARE_WRITE, dwMode, NULL); 
	#else 
		fd = (thandle_t)CreateFileW(name, (m == O_RDONLY)?GENERIC_READ:(GENERIC_READ|GENERIC_WRITE), FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, dwMode, (m == O_RDONLY)?FILE_ATTRIBUTE_READONLY:FILE_ATTRIBUTE_NORMAL, NULL); 
	#endif

保存文件并关闭它。

  1. 回到我们的cmd命令行,我们希望得到上次提交和更改文件之间的差异,并将其作为差异文件输出。这是我们的补丁文件。为此,我们在cmd中继续输入:

git diff --ignore-space-at-eol --output Fix_UWP_Tiff.patch

  1. 现在我们的 vX.XX-xxxxxxxxx.clean 文件夹中应该有一个 Fix_UWP_Tiff.patch 文件。将此文件移动到Your path\vcpkg\ports\tiff\

  2. 我们打开同一文件夹中的“portfile.cmake”,在Fix_UWP_Tiff.patch第12行的“FindCMath.patch”之后添加,保存。
    在这里插入图片描述

  3. 在vcpkg文件夹路径中重新执行.\vcpkg install opencv[contrib]:x86-uwp --recurse

解决完这个问题后,tiff是没有问题了,但是又出现别的问题了。

报错:

error: building opencv4:x86-uwp failed with: BUILD_FAILED
在这里插入图片描述

往上翻,我的原因是无法访问raw.githubusercontent.com网站,导致无法下载相关Opencv的库

解决方案:

https://blog.csdn.net/u012782078/article/details/106109620?spm=1001.2101.3001.6650.2&utm_medium=distribute.pc_relevant.none-task-blog-2defaultCTRLISTdefault-2.no_search_link&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2defaultCTRLISTdefault-2.no_search_link

  1. 打开https://www.ipaddress.com查一下raw.githubusercontent.com的ipv4地址

  2. 使用管理员权限打开C:/Windows/System32/中的hosts文件。我的路径是:
    在这里插入图片描述

  3. 添加一行
    199.232.68.133 raw.githubusercontent.com
    注意:199.232.68.133是我查到的地址,大家最好再确认一下。

  4. 保存并关闭。重新在cmd中执行.\vcpkg install opencv[contrib]:x86-uwp --recurse

……………………………………………………分割线……………………………………………………………………

接分割线上面的第7步(安装Opencv)
8. 生成dll

  • 使用VS2019打开Your_path/sv/src/SpectatorView.Native/SpectatorView.Native.sln
    依次修改生成x64、x86和ARM的解决方案,生成顺序我是这样的,56颠倒的话总是报错
    在这里插入图片描述
    另外,在build工程1的时候,找不到_WCHAR_T_SIZE的定义而报错:
    在这里插入图片描述
    我自己在开头加了定义#define _WCHAR_T_SIZE 2就好了
  1. 打开YourPath\sv\tools\Scripts文件夹,使用管理员模式运行CopyPluginsToUnity.bat
    在这里插入图片描述
  2. 查看Unity工程路径\Assets里面就有相应的符号链接文件了。
    在这里插入图片描述

四、安卓端的部署(师弟帮忙总结的)

  1. 下载Android支持
    下载Android端部署的支持:Android SDK和NDK,在此之前需要先安装Java JDK,注意彼此之间对应的版本号,unity2018.3.14f1需要的sdk版本为 android-ndk-r16b,下载完后在unity编辑器的Preferences中添加对应的安装路径
    在这里插入图片描述
    -1)Java JDK下载
    下载地址:https://www.oracle.com/java/technologies/downloads/#java8
    我这里下载的是Java JDK17,能成功跑起
    在这里插入图片描述
    下载完后进行环境变量配置,参考文章
    https://blog.csdn.net/sinat_17073527/article/details/80294715
    -2)Android SDK下载
    参考文章如下,其中Android API要24及以上
    https://blog.csdn.net/peng_1993/article/details/91803721
    -3)Android NDK下载
    下载版本 android-ndk-r16b
    在这里插入图片描述
  2. Android依赖设置完以后,开始配置第三视角
    -1)在build settings中的player settings中设置如下
    (QRCODESTRACKER_BINARY_AVAILABLE)
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    -2) 在 Spe ctatorView 中 Edit settings 中配置如下
    在这里插入图片描述
    -3 )在 SpectatorView 中 Edit global performance parameter 中配置如下
    在这里插入图片描述
  3. Hololens 端部署
    -1) update all asset caches
    在这里插入图片描述
    -2 )在预制体中点击 Hololens
    在这里插入图片描述-
    -3) build
    在这里插入图片描述
  4. Android 端部署
    在这里插入图片描述

未完待续~

猜你喜欢

转载自blog.csdn.net/qq_41598072/article/details/125879209