Mixed Reality Toolkit-Unity开发系列—Sharing模块

Win10+Hololens2+Unity环境配置 文章目录Hololens2+Unity环境配置引言基础环境环境配置Microsoft Mixed Reality Toolkit(MRTK) 下载将MRKT导入到Unity中切换Unity的平台添加 MRTK 到新场景中~~MRTK-Unity 包下载~~ Hololens2+Unity环境配置 引言 心心念念好久的Hololens 2终于到手了,抱着他感觉就像是抱着未来生活的幼雏,小心翼翼,又兴奋难耐。 先开始配置下环境,看下里面的demo。 基础环境 设备型号: Hololens 2 操作系统:Win 阅读详情

今天要为大家带来的内容是我们在HoloLens开发时,经常使用到的一个开发神器-微软原生开发包Mixed Reality Toolkit-Unity(简称“MRTK”):这是一组脚本和组件集成的开源开发工具包,旨在加速针对用Unity开发Windows的混合现实应用程序。

整个工具包分为九大模块: Sharing,Input,Spatial Mapping,Spatial Sound,UX Controls,Utilities,Spatial Understanding,Build,Boundary,他们各自在MR开发中担任不同的功能。目前最新支持的Unity版本为2017.2.1。

Sharing 模块上手实践


本文,我们首先手把手教大家使用Unity制作一个小Demo,帮助大家深入了解MRTK工具包中的Sharing模块。

MixedRealityToolkit.Sharing库允许应用程序跨越多个设备,并启用全息协作。Sharing使用户可以使用多个设备执行任务,允许在每个设备上运行的应用程序通信并保持无缝实时同步。

首先,我们先从GitHub下载对应的工具包(下载链接见文末附录1)。

GitHub对应工具包

下载成功后,我们打开项目,可以看到这时Unity上方Configuration工具栏加载出Mixed Reality Toolkit选项,这其中包含对发布到UWP时的一些参数设置,其中最重要的就是对所发布设备的功能勾选:

配置Other Setting中的Capabilities

这时,还是通过刚才MRTK选项的下拉菜单中点击Launch Sharing Service运行共享服务,将会在您的机器上创建一个新的服务器实例。如下图:

启动服务器

共享会话服务器是一个64位的Win32应用程序,可以在命令提示符下运行或作为Windows服务运行。使用MixedRealityToolkit.Sharing客户端的应用程序可以连接到该服务以发现彼此,共同加入共享Session,并且便于VoIP通信和空间锚定位共享。

此时,检查服务器是否成功打开,若成功打开则会在控制台打印如下图:

服务器开启

需要注意的是:

1.仔细检查您场景中需要连接服务器的地址是否与控制台中显示地址相匹配

2.确保所需要的协同设备都连接到相同的无线局域网

3.确保所有防火墙设置都正确,保证连接不会受限。

接着,就可以把Demo部署到相应设备上来观察了:本文以一个样本场景来剖析协同原理,在Unity中打开SharingTest场景,我们借助两台HoloLens来展示对应的效果。分别部署到两台设备之后,运行程序可以看到控制台打印如图下:

设备成功连接服务器

连接之后,我们可以看到设备加入到网络的构建过程,房间的客户端之间共享的消息内容,如何在客户端之间共享空间锚以及在加入房间的用户头上绘制立方体。动手操作后,我们可以大致了解在MR世界中协同工作的原理。设备在连接后,程序会检测是否有与客户端相匹配的空间锚,如果有则下载并同步位置,如果没有则上传空间锚到服务端,并对其他后加入的设备重复此步骤。最后的Demo效果图如下:

在PC端的Demo展示

Sharing模块的工作机制


接下来,让我们从代码层面来解读一下Sharing模块的工作机制,还是以这个场景为例。在RemoteHeadManager.cs脚本中,在Start回调函数里,第一行代码是将消息处理函数绑定到委托上,这个我们在后边展开来讲。此外则是对服务器进行访问连接,将客户端加入和离开房间的方法绑定到一个负责管理应用程序核心网络层的单例脚本SharingStage.cs中。

建立服务器连接并跟踪客户端行为

SharingStage类具有以下职责:

1.服务器配置(地址,端口和客户端角色)

2.建立和管理服务器连接

3.创建并初始化同步数据模型(SyncRoot)

4.创建跟踪服务器上所有会话的ServerSessionsTracker

5.创建跟踪当前会话中的用户的SessionUsersTracker

经过函数内部一系列的逻辑处理之后,服务器会创建和跟踪服务器上的各种会话,当发现连接时,通过SharingStage.cs脚本创建实例,并将与之相关的事件公开出来。此外,还会跟踪当前会话和其中用户的行为,并且也会将所触发的事件暴露。在本例中,所有的事件都会被打印出来,您可以在MR设备中进行查看Log从而获得信息。

完成以上步骤,我们就已经搭好一条与服务器的沟通渠道了。此时,只需要包装一个通用的消息格式,即可进行协同!

在Game视图中,可以看到如果加入一台设备,场景中就会生成一个方块来代表它,并且同步空间位置以及它的旋转角度,做法就是将HoloLens的变换信息实时的通过网络传输来改变方块的transform,我们回到代码中来看一看。

包装消息的函数体

消息包装好之后,就通过广播的形式发送给在房间的各设备。还记得之前提到的绑定消息处理函数吗?当收到消息之后,对应ID的设备将会解析消息,并将它交给之后的函数体处理。

更新方块的 transform

这个函数将会在接收到消息时调用,实时的更新方块的transform。这样,一套简单的协同环境就已经构建好了,接下来,您可以填充更多的逻辑让它变得更有趣。

本篇MRTK-Sharing模块就介绍到这儿,更多细节,请点击文末阅读原文,参考微软官方文档。之后,我们也会持续为大家介绍MRTK其他模块,敬请期待!

附录:

[1] GitHub工具包下载链接:

https://github.com/Microsoft/MixedRealityToolkit

Unity 2018.4 + HoloLens 2 部署避坑:3个关键配置与1个常见部署错误解决 本文详细解析了Unity 2018.4与HoloLens 2部署过程中的3个关键配置陷阱和1个常见部署错误,包括Windows SDK版本选择、MRTK导入顺序及设备休眠问题。通过实战经验分享,帮助开发者高效完成环境配置,避免常见错误,提升混合现实开发效率。 阅读详情

相关推荐

Microsoft.MixedReality.Toolkit.Unity.Foundation.2.3.0.unitypackage

Microsoft.MixedReality.Toolkit.Unity.Foundation.2.3.0

HoloLens2场景理解,识别平面信息

HoloLens2场景理解,识别平面信息

shaowei的专栏 2311

Microsoft.MixedReality.Toolkit.Unity.Foundation.2.6.1.unitypackage

MRTK基础开发工具包 Microsoft.MixedReality.Toolkit.Unity.Foundation.2.6.1

MixedRealityToolkit-Unity:MR应用必用神器

洪流学堂,让你快人几步。你好,我是你的技术探路者郑洪智,你可以叫我大智。 本篇文章首发于我的公众号:洪流学堂MRTK-Unity是一个由Microsoft驱动的开源项目,提供了多种组件和功能,用于加速Unity中的跨平台MR应用程序开发。以下是其一些功能:提供跨平台输入系统和用于空间交互和UI组件。启用快速原型通过在编辑器中的模拟,让你马上看到变化。作为可扩展框架运行,为开发人员提供了交换核心组件...

unityofficial的博客 143

Microsoft Mixed Reality Toolkit v2.4.0 .zip

目前最新的Microsoft Mixed Reality Toolkit v2.4.0 微软HoloLens2 Unity开发必备包,在GitHub上特别慢,用迅雷下载了很久,为方便广HoloLens2开发的友友们,特意共享出来,谢谢支持。

国央企创新负责人如何通过平台实现科研成果的快速识别与转化?.docx

科易网基于AI模型+行业大数据,在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,推出科技创新领域的AI+工具与数智化解决方案,推动科技创新与产业创新智能化发展。

HoloLens开发环境安装部署(基于Unity2018.4/VS2017/MRTK)

HoloLens开发环境安装部署一、下载安装准备二、Unity项目工程配置三、Unity项目工程发布部署到Hololens中进行调试1 Hololens准备2 Unity项目工程发布3 部署到Hololens 一、下载安装准备 参考链接:Mixed Reality Toolkit Windows SDK 18362+ 下载安装Windows 10 SDK,版本为10.0.18362.0及以上,...

JiangCoolguy的博客 5128

python监听海康威视报警服务器

因为我使用海康威视摄像头是自带热成像的所以事件报警会上报两张图片,一张是RGB图像、另一张是热成像图像,因此使用。拿到的就是第一张RGB图像。可以点击测试,会显示。

qq_57018478的博客 1157

Mixed Reality Toolkit-Unity 开发系列—Input 模块

在《Mixed Reality Toolkit-Unity 开发系列—Sharing 模块》中,我们首次开讲 HoloLens 开发神器-微软原生开发包 Mixed Reality Toolkit-Unity(简称“MRTK”),并介绍了 Sharing 模块的相关功能及原理。MixedRealityToolkit 是一个开源的开发工具,它能够帮助开发者快速的构建 Microsoft HoloLe...

Abel02的博客 1450

ORB-SLAM3单目+IMU实战:从数据加载到位姿优化的完整流程解析

本文详细解析了ORB-SLAM3单目+IMU模式的完整实战流程。从EuRoC等数据集的数据格式准备、系统启动与数据流入口,到帧构建、IMU预积分、视觉-惯性联合初始化,再到基于运动模型的跟踪、局部地图优化及多线程协同,提供了从环境配置到代码解读的全面指南,并分享了参数调优与性能分析的实用调试经验。

weixin_29085151的博客 296

TCP报文 Flood攻击原理与防御方式

TCP交互过程中包含SYN、SYN-ACK、ACK、FIN和RST报文,这几类报文也可能会被攻击者利用,海量的攻击报文会导致被攻击目标系统资源耗尽、网络拥塞,无法正常提供服务。接下来我们介绍几种常见的Flood攻击的原理和防御方式。

qq_32044265的博客 4219

【Hololens2-Unity开发】如何升级MRTK2.3.0到2.4.0

MRTK2.4下载地址 https://github.com/microsoft/MixedRealityToolkit-Unity/releases/tag/v2.4.0 1.关闭unity,删除MRTK安装目录下的以下文件,连.meta文件一同删除 MixedRealityToolkit MixedRealityToolkit.Examples MixedRealityToolkit.Extensions MixedRealityToolkit.Providers MixedRealityToolkit

v2morrow的博客 703

案例分析|一篇文章带你看懂养鸡场智慧管理系统

养鸡场智慧管理系统是为了满足现代化养鸡业对精细化管理的需求而设计的一款专业软件。随着科技的发展和农业产业的升级,传统的手工记录和管理方式已无法满足高效、准确和实时的数据跟踪需求。本软件旨在通过集成各种功能模块,帮助养鸡场主实现从鸡苗孵化、饲养管理、饲料控制到销售结算等全链条的智能化操作。该系统的核心目标是提升养鸡场的运营效率和盈利能力,通过自动化数据处理,减少人工误差,节省时间和精力。例如,孵化报表和记录模块可以帮助管理者实时监控孵化过程,及时调整策略;

muyu2980的专栏 930

Unity运行高版本项目,报错Library\PackageCache\的一种解决方法

今天直接复制粘贴一个版本只高了一点的项目, 报错:Library\PackageCache… 我一看名字叫Cache,应该是缓存;我写的代码我清楚,里面没有用到这几个包的样子。 于是来到这个目录下,直接删掉Library\PackageCache\com.unity.collab-proxy文件夹。 就解决了 。 ...

YuQiao0303的博客 7万+

2022(一等奖)B360基于Arcpy与SVM的滑坡易发性评价

此外,在ArcGIS平台下,“易发性图预测(多进程)”工具的运行时间为2h 48m 3s,“易发性图预测(单进程)”工具的运行时间为5h 19m 27s,运行时间缩短了近2h 31m 24s,运行效率提高了47.39%。在ArcGIS Pro平台下,“易发性图预测(多进程)”工具的运行时间为20m 12s,“易发性图预测(单进程)”工具的运行时间为1h 26m 47s,将运行时间缩短了近1h 6m 35s,运行效率提高了76.72%。滑坡的发生受各种影响因素的影响,目前,影响因素的选择没有一个统一的标准。

2301_77310370的博客 1467

CRC_16---ModBus 计算方法及代码实现

1、 CRC寄存器初始值为 0xFFFF;即16个字节全为1; 2、 CRC-16 / ModBus的多项式0xA001H (1010 0000 0000 0001B) ; ‘H’表示16进制数,‘B’表示二进制数。 计算步骤为: (1).预置 16 位寄存器为十六进制 0xFFFF(即全为 1) ,称此寄存器为 CRC 寄存器; (2).把第一个 8 位数据与 16 位 CRC 寄存器的低位相异或,把结果放于 CRC 寄存器; (3).检测相异或后的CRC寄存器的最低位,若最低位为1,CRC寄存器

1万+

Library\PackageCache\com.unity.xr.openxr@1.4.2\Runtime的问题

Library\PackageCache\com.unity.xr.openxr@1.4.2\Runtime\Features\Interactions\HTCViveControllerProfile.cs(41,39): error CS0246: The type or namespace name 'XRControllerWithRumble' could not be found的类似错误

m0_47609462的博客 2224

livox雷达斜装修改

指的是,使用外部的陀螺仪的话,雷达到外部陀螺仪的转换,而mid360的陀螺仪是内置在360里面的,且方向和点云方向是一致的,所以不能通过修改此处去改变陀螺仪方向。同时livox_ros_driver2中的MID360_config.json里面的。这里面的外参,只能改变点云相对陀螺仪的位姿,而不能将陀螺仪映射到你期望的倾斜角度。fast_lio中的mid360.yaml中的外参。

z1872385的博客 2709

【Unity】Library/PackageCache/com.unity.xxx@xxx not found、Library删除不会重新生成问题

关掉Unity,打开工程根目录将Library、Obj、Temp文件夹删除,没找到说明已经被删了。重新打开Unity等待自动生成。

两水先木示的博客 3829

数据处理和分析之数据聚类:层次聚类(Hierarchical Clustering):单链接层次聚类方法

单链接层次聚类(Single-Linkage Hierarchical Clustering)是凝聚型层次聚类的一种,它基于数据点之间的最小距离来定义聚类间的相似性。在单链接层次聚类中,两个聚类之间的距离定义为这两个聚类中任意两个数据点之间的最短距离。这种聚类方法倾向于形成链状或线性的聚类,因为聚类的边界是由最远的数据点决定的,而不是聚类的平均或中心位置。单链接层次聚类通过计算簇间最近点的距离来决定簇的合并,这种方法简单直观,但可能导致簇的形状不规则,尤其是在数据点分布不均匀的情况下。

2401_87715305的博客 1443

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

MixedRealityToolkit-Unity使用笔记

1.软硬件支持 通过win+r 在输入框中输入winver查看 If you are not running the Windows 10 Fall Creators update(10.0.16299.91以上), then you will need to Update your version of Windows. 更新地址:点击这里 有个简单的测试应用地址:点击这里 详细...

天命难违 6715

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

MixedRealitytoolkit使用总结

官方教程https://github.com/Microsoft/MixedRealityToolkit-Unity/blob/master/GettingStarted.md 下载MixedRealitytoolkit-Unity-master:下载地址https://github.com/Microsoft/MixedRealityToolkit-Unity(下载点是MixedReality...

GGlance的博客 3278

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

混合现实工具包(MixedReality.Toolkit.Unity)教程

混合现实工具包(MixedReality.Toolkit.Unity)教程 1. 项目介绍 混合现实工具包(MixedReality.Toolkit.Unity)是一个由微软驱动的开源项目,旨在加速跨平台混合现实应用开发。它提供了一套组件和功能,如交叉平台输入系统、空间交互和UI的基础构建块,支持在Unity中进行快速原型设计。这个项目的目标是简化开发者在HoloLens、Windows Mixe...

gitblog_01098的博客 855

cli-anything-freecad:基于 FreeCAD 的参数化建模 258 命令无头 CLI 接入指南

cli-anything-freecad 是 CLI-Anything 仓库中针对 FreeCAD 参数化 3D CAD 建模器实现的完整 Agent CLI 驱动(harness)。它把 FreeCAD 的 Part、Sketcher、PartDesign、Assembly、Mesh、TechDraw、Draft、FEM、CAM 等全工作台能力封装成 17 组共 258 条命令,通过无头模式驱动

gitblog_00063的博客 581
上一篇: 程序员吃的是青春饭?
下一篇: 进击的WebRTC:我们为什么需要它?
codinghello
博客等级 码龄25年 47粉丝 33原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值