目录
实验设备及运行环境
- Hololens 2
- Windows 10
- VS 2019
- Unity 2018.3.14f1
实施步骤
官方教程
https://github.com/microsoft/MixedReality-SpectatorView/tree/v1.1.0
下面根据官方教程和自己的实际经验来说明:
一、获取官方的第三视角工程
git clone https://github.com/your_github_name/你刚才新建的repository的名字.git
5. 在cmd中将路径切换到新建的本地文件夹下
6. 将MixedReality-SpectatorView
代码基作为项目的子模块。在cmd中输入
https://github.com/microsoft/MixedReality-SpectatorView.git sv
- 步骤6中的子模块的名字叫sv。仙子在cmd中将目录更改为sv文件夹下。
- 选择
MixedReality-SpectatorView
工程项目分支,这里我们选择1.1.0
i. git fetch origin release/1.1.0
ii. git checkout release/1.1.0
iii. git branch
二、本地环境设置
- 新建一个Unity工程(比如UnitySpectator),将这个工程和刚才下载好的sv文件夹放在同级目录下。
- 在您的 PC 上以管理员身份运行cmd,并输入’Your_sv_file_location/tools/Scripts/SetupRepository.bat’(或者直接手动双击打开bat文件)
- 关闭所有Unity工程
- 现在,将cmd的路径切换至包含sv和Unity工程(比如UnitySpectator)的文件夹下
-
在cmd中输入
sv\tools\Scripts\AddDependencies.bat -AssetPath "UnitySpectator\Assets" -SVPath "sv"
总之,这里都是相对路径,大家可以根据自己情况来。 -
现在,当您在 Unity 中重新打开项目时,第三视角相关文件夹应该出现在项目的 Assets 文件夹中。
三、Unity工程依赖的第三视角dll生成
1. 确保您拥有构建和使用 Spectator View 所需的所有软件和硬件。
2. 将空间对齐所需的依赖项添加到 Unity 项目中。
这一步坑比较多,上链接
我们选择的是基于QR Code的检测方式。这一步,我需要花点版面来填一下坑。
根据上图及相关链接:
- 下载
QR APIs
库 ,链接 - 构建
SpectatorView.WinRTExtensions.dll
的 x86 Release 版本,并将关联的 dll 包含在您的 Unity 项目中。链接
这一步的目的是为了让SpectatorView.Native.sln
工程能够运行成功,并生成下面几个dll
- 下载
DeckLink
相关软件和SDK,下载链接
注意:下载10.9.11版本的。 - 软件傻瓜式安装,SDK压缩包可以解压至任何位置。
- 打开下面这个sv里面的
dependencies.props
文件,换一下 DeckLink的头文件
- 下载
Elgato Capture Card
相关库。具体方法为:新建一个文件夹,将cmd的路径切换至这个文件夹下;输入:
git clone https://github.com/elgatosf/gamecapture
然后再打开上面的dependencies.props
文件,改一下Elgato的路径
7. 安装Opencv,简直是巨坑,如果没卡在这里真的是太幸福了。
- 安装Vcpkg
- 创建一个Vcpkg文件夹
- 使用管理员模式打开cmd,路径切换Vcpkg文件夹下
- 在cmd中输入
git clone https://github.com/Microsoft/vcpkg
- cd vcpkg
- .\bootstrap-vcpkg.bat
- .\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
- 使用管理者模式打开cmd,将路径切换为
Your_path\vcpkg\buildtrees\tiff\src\vX.X.X-xxxxxxxxx.clean\
文件夹下 - 在cmd中,我们启动一个空的 git 存储库,将文件的当前版本添加到其中并提交它:
git init .
git add .
git commit -m “temp”
注意:前两条注意 点 前面的空格。我是加了空格,不知道不加行不行。
- 手动进入
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
保存文件并关闭它。
- 回到我们的cmd命令行,我们希望得到上次提交和更改文件之间的差异,并将其作为差异文件输出。这是我们的补丁文件。为此,我们在cmd中继续输入:
git diff --ignore-space-at-eol --output Fix_UWP_Tiff.patch
-
现在我们的 vX.XX-xxxxxxxxx.clean 文件夹中应该有一个 Fix_UWP_Tiff.patch 文件。将此文件移动到
Your path\vcpkg\ports\tiff\
-
我们打开同一文件夹中的“portfile.cmake”,在Fix_UWP_Tiff.patch第12行的“FindCMath.patch”之后添加,保存。
-
在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
-
打开https://www.ipaddress.com查一下raw.githubusercontent.com的ipv4地址
-
使用管理员权限打开C:/Windows/System32/中的hosts文件。我的路径是:
-
添加一行
199.232.68.133 raw.githubusercontent.com
注意:199.232.68.133
是我查到的地址,大家最好再确认一下。 -
保存并关闭。重新在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
就好了
- 打开
YourPath\sv\tools\Scripts
文件夹,使用管理员模式运行CopyPluginsToUnity.bat
。
- 查看
Unity工程路径\Assets
里面就有相应的符号链接文件了。
四、安卓端的部署(师弟帮忙总结的)
- 下载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
- Android依赖设置完以后,开始配置第三视角
-1)在build settings中的player settings中设置如下
(QRCODESTRACKER_BINARY_AVAILABLE)
-2) 在 Spe ctatorView 中 Edit settings 中配置如下
-3 )在 SpectatorView 中 Edit global performance parameter 中配置如下
- Hololens 端部署
-1) update all asset caches
-2 )在预制体中点击 Hololens
-
-3) build
- Android 端部署
未完待续~