HoloLens2 设备的 MR项目开发技术实验

本文介绍了如何使用微软的混合现实技术在Unity中开发,包括配置开发环境(Unity2020.3.3+、VS2022、Windows10SDK),创建工程,以及使用MRTK组件实现交互式立方体、跟随UI面板和自动吸附功能。还详细说明了部署到HoloLens2的过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

关于微软对混合现实技术的介绍===
官方文档:https://learn.microsoft.com/zh-cn/windows/mixed-reality/

开发环境配置===
官方参考文档:https://learn.microsoft.com/zh-cn/windows/mixed-reality/develop/install-the-tools

1.使用unity 2020.3.3以上版本
2.使用VS2022
3.Windows 10 系统
4.Windows 10 SDK 10.0.18362.0 或更高版本(可以在安装VS的时候勾选)
5.Mixed Reality Feature Tool(MRTK unity可用的插件)

创建工程===
官方参考文档:https://learn.microsoft.com/zh-cn/training/modules/learn-mrtk-tutorials/1-1-introduction

组件使用实例===
官方参考文档:https://learn.microsoft.com/zh-cn/windows/mixed-reality/mrtk-unity/mrtk2/?view=mrtkunity-2022-05

1.做一个可以触摸的 Cube

使用组件:
BoxCollider
Interactable (MRTK 可交互组件)
NearInteractionTouchable (MRTK 近距离互动触碰事件检测器)

组装过程:
1.创建一个 Cube
2.添加 BoxCollider
3.添加 Interactable
3.添加 NearInteractionTouchable
4.通过任意脚本向 Interactable 组件添加 触摸事件的接收器,并给接收器注册触摸事件的处理函数,参考代码:
transform.GetComponent()
.AddReceiver()
.OnTouchStart
.AddListener(() =>
{
Debug.Log(“物体被触摸了”);
});

效果描述:启动程序后,使用手部触摸cube,NearInteractionTouchable 会发送被触摸的消息到最近的 Interactable 组件(向上遍历),直到有一个 Interactable 组件表示受理了这条信息(体现为 eventData.use() ),然后 console 上输出一行 “物体被触摸了”的提示信息;

拓展信息:
-当碰撞体大小发生改变的时候,需要到 NearInteractionTouchable 组件上 点击一下 “Fix xxx”,NearInteractionTouchable 组件会自动适配新的碰撞体范围;
-Interactable 组件可以赋予 GameObject 数种互动效果,除了点击外,Interactable 的其他互动效果都需要手动注册一个事件接收器,基本过程都和触摸的大同小异;

2.做一个可以自动跟随的UI面板

使用组件:
Follow (MRTK 求解器的一种)
SolverHandler (MRTK 处理求解器数据的组件)

组装过程:
1.创建一个空GameObject
2.添加 Follow
3.添加 SolverHandler
4.添加 Canvas,Canvas 的 RenderMode 设置为 WorldSpace
5.在 Canvas 下使用UGUI相关的组件拼成一个常见的UI面板

效果描述:启动程序后,会有一个UI面板出现在你的视野范围内,并且会跟随你视野和人物的移动。

拓展信息:
-UI面板会始终与你的人物保持一定距离,可以通过修改 Follow 组件的 “Distance”相关参数来调整这一效果。
-UI面板会始终会在你的视野范围内,可以通过修改 Follow 组件的 “Direction”相关参数来调整这一效果。
-Follow 求解器计算的跟随目标可以通过 修改 SolverHandler 组件的 “TrackedTargetType”来调整,默认选项是 Head (跟随设备穿戴者头部的位置和视野方向)。
-除了 Follow 求解器,MRTK还提供了很多其他功能的求解器,原理基本相似。
-SolverHandler 还可以设置的UI跟随面板添加位置和旋转偏移量,可以根据实际情况做些调整。

3.做一个可以自动吸附到某个位置Cubu

使用组件:
BoxCollider
Rigidbody
ObjectManipulator(MRTK 对象操纵器)
ConstraintManager(MRTK 约束管理器,添加ObjectManipulator时会自动绑定这个组件)
NearInteractionGrabbable(MRTK 近距离互动抓取事件检测器)
Dockable(MRTK 可停靠脚本)
DockPosition(MRTK 停靠坐标脚本)

组装过程:
1.创建一个空GameObject做为停靠点,同时添加以下组件
Rigidbody
BoxCollider
DockPosition

2.创建一个Cube,同时添加以下组件
BoxCollider
ObjectManipulator
ConstraintManager(这个是自动添加得)
NearInteractionGrabbable
Dockable

3.空GameObject的 BoxCollider 调整为合适的大小(因为自动吸附的物体会自动适应这个碰撞盒的大小)

效果描述:启动程序后,因为 Cube 上的 ObjectManipulator 组件,使得你可以使用手或者手部射线对 Cube进行移动,缩放,旋转等基本变换操作,你可以将Cube移动到停靠点,当你解除对Cube的控制时,Cube会自动吸附到停靠点,并按照停靠点的变换值调整自身的旋转和缩放。

拓展信息:
-这是一个实验性质的功能
-每个停靠点只能停靠一个物体,也因此可以用另外一个同样配置的Cube将停靠点的Cube“挤” 出来

项目部署到HoloLens2===
官方参考文档:https://learn.microsoft.com/zh-cn/windows/mixed-reality/develop/advanced-concepts/using-visual-studio?tabs=hl2

1.在BuildSettings里面,将目标平台切换为 UWP(微软通用平台)
2.将Architectru属性设置为 ARM64
3.将Build configuration属性设置为 Release
4.点击build,等待编译
5.编译期间进行下列准备:
-启动你的HoloLens2设备,并进行登录
-确保你的HoloLens2设备和你开发用的PC机器在同一个局域网,并记录HoloLens2的局域网IP地址
-确保你的HoloLens2设备开启了开发人员模式

6.在build完毕后,找到build出来的文件夹,在文件夹里面找到.sln结尾的文件,使用vs打开(我这里用的是VS2022),然后做下列操作:
-解决方案内有3个项目,确保设置 (Universal Windows)这个方案为启动项
-找到 调试 菜单栏,点击打开菜单 找到最后一项 (你工程名字) 调试属性,打开后在配置属性里面找到 调试 这一项,然后调试属性的详情界面找到“计算机名”这一项,在这里输入你的 HoloLens2 设备的局域网IP地址。
-将发布配置设置为Release
-将发布平台设置为ARM64
-将发布方式选为“远程计算机”

7.点击 “远程计算机” 进行编译和发布,在进行第一次编译发布时,VS会要求你输入
HoloLens2设备的配对码,你需要到HoloLens2设备的开发人员选项中点击“配对”按钮生成配对码,然后将这个配对码输入到VS后,等VS完成发布即可完成所有部署操作。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值