环境
- Windows 10 教育版 18363.1379
- Unity 2019.4.20f1c1
- VS2019 16.8.6
- WIN SDK 10.0.18362.0
- Hololens2 内部预览版本 10.0.20301.1000
创建项目
切换平台
在菜单栏 File -> Build Settings
中切换为 UWP 平台
创建新场景
使用 Ctrl + N
,Ctrl + S
创建新场景并保存为 StreamingScene
。
构建Hololens2研究模式动态链接库
-
找一个位置 Clone HoloLens2-Unity-ResearchModeStreamer 仓库。
-
在 VS2019 中打开
HL2RmStreamUnityPlugin
解决方案。 -
选择
Release, ARM64
生成解决方案 -
在
HL2RmStreamUnityPlugin/ARM64/Release/HL2RmStreamUnityPlugin
下可以找到HL2RmStreamUnityPlugin.dll
。如下图:
Unity中调用动态链接库
-
在 Unity 编辑器中,创建
Assets/Plugins/WSAPlayer/ARM64
文件夹 -
拷贝上一步生成的
HL2RmStreamUnityPlugin.dll
到刚创建的文件夹中 -
创建
Assets/Scripts
文件夹,然后在文件夹中创建StartStreamer
C# 脚本 -
双击在 VS2019 中打开脚本文件,然后编辑如下:
using System.Runtime.InteropServices; using UnityEngine; public class StartStreamer : MonoBehaviour { #if ENABLE_WINMD_SUPPORT [DllImport("HL2RmStreamUnityPlugin", EntryPoint = "StartStreaming", CallingConvention = CallingConvention.StdCall)] public static extern void StartStreaming(); #endif // Start is called before the first frame update void Start() { #if ENABLE_WINMD_SUPPORT StartStreaming(); #endif } // Update is called once per frame void Update() { } }
保存,返回 Unity 编辑器
-
可以把脚本挂在到
Main Camera
上: -
在菜单栏打开
Edit -> Project Settings
。在Player -> Publishing Settings
确保以下权限被勾上:- InternetClient
- InternetClientServer
- PrivateNetworkClientServer
- WebCam
- SpatialPerception
-
Ctrl + S
保存项目。打开菜单栏File -> Build Settings
,添加场景,然后构建。
部署到Hololens2
-
找到生成的文件夹,在文本编辑器中打开
UnityHL2RmStreamer\Package.appxmanifest
文件,并按照如下配置,以确保研究模式被允许:- 添加
xmlns:rescap="http://schemas.microsoft.com/appx/manifest/foundation/windows10/restrictedcapabilities"
到Package
- 添加 rescap 到 Ignorable Namespaces:
IgnorableNamespaces="... rescap"
- 添加
<rescap:Capability Name="perceptionSensorsExperimental" />
到Capabilities
- 保存然后关闭
Package.appxmanifest
- 添加
-
在 VS2019 中打开
UnityHL2RmStreamer.sln
解决方案,用Release, ARM64
生成解决方案,然后部署到 Hololens2 设备上。
Python客户端接收Hololens2视频帧
Python 脚本可在此处获得:hololens2_simpleclient.py
注意把脚本中的 Host 改成自己 Hololens2 设备的 IP 地址
运行结果
后期我会尝试把研究模式的加速度计、陀螺仪和磁力计流整合进 Unity 项目~
致谢
- HoloLens2-Unity-ResearchModeStreamer
- Implementation of the IMU inside the StreamRecorder App #67
- HoloLens2ForCV
如果这篇文章对您有帮助,欢迎给我的 github项目 点一个⭐ ο(=•ω<=)ρ⌒☆