Hololens环境搭建

2024-02-07 21:32
文章标签 搭建 环境 hololens

本文主要是介绍Hololens环境搭建,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

环境

win 10
vs 2022 community
unity 2020.3.25f1c1
MRTK 2.7.3

(Unity2019.4+MRTK2.6 或者 Unity2020.3+MRTK2.7是最佳搭配,不建议混合搭配)

下载地址

VS:https://visualstudio.microsoft.com/zh-hans/vs/
unity:https://unity3d.com/get-unity/download/archive
MRTK:https://github.com/Microsoft/MixedRealityToolkit-Unity/releases
.NET 5:https://dotnet.microsoft.com/download/dotnet/5.0
MRTF:https://www.microsoft.com/en-us/download/details.aspx?id=102778
请添加图片描述

搭建

参考:HoloLens2之路-Unity2020.3+MRTK2.7配置
官方文档:
选择 Unity 版本和 XR 插件;建议安装 Unity 2020.3 LTS 以及用于混合现实开发的 最新混合现实 OpenXR 插件
设置 XR 配置;混合现实 OpenXR 插件完全支持 AR Foundation 4.0,提供 ARPlaneManager 和 ARRaycastManager 实现。 这样,你可以编写一次代码,该代码适用HoloLens 2 ARCore/ARKit 手机和平板电脑。
欢迎使用混合现实功能工具;(MRFT)

编辑器操作

按键功能
WSADQE控制视角的前后左右上下
鼠标右键控制视角
鼠标右键+滚轮视角的左右旋转
左shift键、空格键,同时按下鼠标左键显示左、右手,点击抓握
空格/左Shift+滚轮左/右手的前后移动
T/Y键永久显示左/右手 再次按下取消
Ctrl+Shift移动鼠标旋转手部关节

打包

在这里插入图片描述

  • 用vs打开.sln文件,选择release, ARM64,远程计算机(属性页-调试 填写HoloLens ip地址),调试(F5)

  • usb调试,用vs打开.sln文件,选择release, ARM64,连接USB线,调试(F5)

  • MRTK打包APPX,Unity–Mixed Reality Toolkit–Utilities–Build Window–Appx Build openions,选择Release、ARM64、solution\auto increment–build appx。打开浏览器打开Hololens的IP地址,选择apps–install app–app package–选择文件打开文件夹,选择xxxxxx.appx / appxbundle文件,将APPX安装到真机上。

ip地址查看方式:设置/网络和Internet/WLAN/适配器属性/IPv4地址(设备为联网状态)
PIN码查看方式:设置/更新和安全/面向开发人员/配对(先开启使用开发人员功能与设备发现)

二、配置文件

HoloLens2之路-配置文件(一)
HoloLens2之路-配置文件(二)
HoloLens2之路-配置文件(三)
HoloLens2之路-配置文件(四)

配置文件本质是可编程对象,用于存储全局数据,配置文件需要预先定义,应用程序启动时会根据配置文件定义的功能注册相关服务、准备相应资源。

在这里插入图片描述

  • MRTK提供了若干默认配置文件(均位于Assets/MRTK/SDK/Profiles文件夹中 ),这些默认配置文件是针对通用场景设计,并没有针对特定应用优化。
  • 为确保默认的配置文件有效,MRTK锁定了默认配置文件的修改,新建配置文件通常是在Inspector窗口中点击某配置文件后的Clone按钮创建,新建配置文件后就可以进行针对性的配置,主配置文件与子配置文件遵循同样的规则。
    在这里插入图片描述

2.1 Camera Profile

定义了渲染相机参数,相机系统配置文件由主配置文件管理,在主配置文件面板中,选择左侧列表框中的“Camera”,选择对应的配置

在这里插入图片描述

相机系统配置
Near Clip(近平面)近裁减平面定义了虚拟元素渲染的最近距离,单位是米,为更好的用户体验,建议该参数设置在0.1左右
Far Clip(远平面)远裁减平面定义了虚拟元素被渲染的最远距离,单位是米,超过最远距离的虚拟元素将不再被渲染,建议该值设置在50左右以提高深度缓冲区的精度
Clear Flags(清除标志)定义帧刷新的背景填充方式,HoloLens应用设置为Color
Background Color(背景颜色)定义帧刷新的背景色,HoloLens应用设置为黑色(Black)
Quality Setting(质量设置)质量设置用于设定图像渲染质量,为提高性能,HoloLens应用建议设置为“Very Low”

2.2 Input Profile

在这里插入图片描述

输入数据提供者控制器
输入模拟服务(Input Simulation Service)Simulated Hand
鼠标设备管理器(Mouse Device Manager)Mouse
OpenVR设备管理器(OpenVR Device Manager)Generic OpenVR, Vive Wand, Vive Knuckles, Oculus Touch, Oculus Remote, Windows Mixed Reality OpenVR
Unity操纵杆管理器(Unity Joystick Manager)Generic Joystick
Unity触控设备管理器(Unity Touch Device Manager)Unity Touch Controller
Windows听写输入提供者(Windows Dictation Input Provider)
WMR设备管理器(Windows Mixed Reality Device Manager)WMR Articulated Hand, WMR Controller, WMR GGV Hand
Windows语音输入提供者(Windows Speech Input Provider)

2.2.1 Pointer configuration

在MR应用运行过程中,当新控制器被检测到时,其对应的指针自动创建,指针可以通过输入配置文件下的指针配置文件进行配置,在HoloLens2设备应用开发时,默认使用MixedRealityPointerProfile配置文件在这里插入图片描述

指针配置
Gaze cursor prefab(默认凝视光标)默认凝视光标预制体
Pointing Extent(射线距离)确定包括凝视在内的所有指针射线最远距离,单位米
Pointing Raycast Layer Masks(碰撞掩码)确定指针可以交互的对象
Pointer Mediator(指针协调器)协调多个指针,确保在同一时间只有一个指针处于激活状态
Debug Draw Pointing Rays(调试射线)一个调试辅助程序,用于显示指针投射的射线
Debug Draw Pointing Rays Colors(调试射线颜色)调试时射线显示的颜色

2.2.2 Input actions settings

设计输入动作的目的就是将处理逻辑与数据源解耦,从而更灵活、更方便扩展和维护。在这里插入图片描述
在MRTK中创建输入动作,需要指定动作名称和输入数据类型(Axis Constraint,轴约束)在这里插入图片描述

数据类型名描述
None(无)无具体类型
Raw(原始数据)来自输入的原始数据 (仅用于代理)
Digital(开关值 0/1)开关输入,如游戏手柄或鼠标按键
SingleAxis(单轴)SingleAxis(单轴)单轴模拟输入,如游戏手柄中的模拟触发器
DualAxis(双轴)双轴模拟输入,如摇杆
ThreeDofPosition(3DOF位移)只具有平移的3自由度控制器产生的姿态
ThreeDofRotation(3DOF旋转)只具有旋转的3自由度控制器产生的姿态
SixDof(6DOF)SixDof(6DOF)具有平移和旋转6个自由度控制器产生的的3D姿态

输入动作规则是将某一个特定输入动作依据其值映射为几个输入动作的规则,利用制定的规则可以将一个输入动作转换成几个不同的输入动作,如可以根据双轴的输入动作“TURN”输入值将其分解成四个输入动作。分解成四个输入动作

2.2.3 (Controller mapping configuration)

控制器映射配置: 输入动作创建好之后还需要将其映射到特定控制器,控制器映射配置里列出了所有MRTK支持的控制器,选择所需要的控制器,将动作绑定到控制器对应的输入。(保证数据类型一致)
实现将输入动作与实际的底层(任意)硬件控制器建立关联。
在这里插入图片描述

支持以下控制器
鼠标(Mouse,包括3D空间的鼠标)
触摸屏(Touch Screen)
Xbox控制器(Xbox controllers)
WMR控制器(Windows Mixed Reality controllers)
HoloLens手势(HoloLens Gestures)
HTC Vive控制器(HTC Vive wand controllers)
Oculus触摸控制器(Oculus Touch controllers)
Oculus物理控制器(Oculus Remote controller)
通用OpenVR设备(Generic OpenVR devices,仅对高级用户)

2.2.4Gestures configuration

手势配置:手势操作由设备HPU检测识别和处理。

手势释义
none
select
hold
navigation
manipulation

MRTK会将这些识别结果映射到默认的输入动作上。
在这里插入图片描述

Speech commands

语音命令对预定义文字语音识别功能,利用语音命令控制对象行为。
Start Behavior(启动行为):

- Auto Start:关键词识别器(Keyword Recognizer)会在应用启动时自动启动
- Manual Start:通过脚本的方式启动关键词识别器

Recognition Confidence Level(识别可信级别)

- High
- Medium
- Low
- Rejected

定义语音命令关键词,然后将其关联到某一个输入动作上
在这里插入图片描述

三、Spatial Awareness Profile

空间感知系统配置:提供了对场景几何网格重建的相关属性
在这里插入图片描述

属性
Startup Behaviour启动方式
Update Interval更新周期
Physics Settings物理仿真表现
Level of Detail Settings网络LOD
Display Settings外观表现

可以配置空间感知功能启动方式(Startup Behaviour)、更新周期(Update Interval)、物理仿真表现(Physics Settings)、网络LOD(Level of Detail Settings)、外观表现(Display Settings)等

四、Diagnostics Profile

在这里插入图片描述

属性
Show Diagnostics诊断工具显示状态
Window Anchor显示位置
Frame Sample Rate帧采样率

五、Extensions Profile

允许开发者自己创建服务,扩展服务必须在配置文件中配置才能在应用程序运行时被MRTK管理使用。

MRTK采用: 服务定位器模式(Service Locator Pattern) 管理定位服务, 服务定位器模式结合工厂模式(Factory pattern)和/或依赖注入模式(Dependency Injection pattern)创建服务的实例

扩展服务与MRTK提供的系统服务一样,也能够接收处理所有Unity事件消息,无继承Monobehaviour类或者使用单例模式所带来的性能消耗, 并且允许无场景对象的C#脚本在前台或者后台执行(如生成系统、应用逻辑等)。在扩展服务配置文件里可以注册和配置自定义服务。
在这里插入图片描述

六、Editor Profile

辅助开发者检查对应功能是否开启、是否起作用。

服务检视器选择Unity Hierarchy窗口中的对象时将显示其所使用的服务,提供该服务相关文档链接、编辑器可视化控制、服务状态的详细信息。
渲染深度缓冲区在HoloLens2设备中共享使用深度缓冲区可以提高全息图像的稳定性,在开启渲染深度缓冲区功能后,将在当前场景的主相机视角下渲染深度缓冲区中的深度值,方便开发人员了解深度缓冲区是否功能正常

七、 Boundary Profile 边界配置文件

八、Teleport Profile 传送配置文件

九、Scene System Profile 场景管理配置文件

十、

配置文件定义了应用程序所有功能特性及部分技术细节,决定了应用的类型和外观表现,精细正确的配置文件设定可以在满足应用需求的同时更加有效的利用硬件资源,提高应用性能。
如果需要在运行时根据硬件设备能力动态的替换配置文件以启用/禁用某些功能,我们可以在MRTK初始化之前完成相应配置文件的替换,如下代码清单所示,需要注意的是,替换配置文件的脚本必须拥有更高的执行优先级,这样才能保证在MRTK初始之前完成替换。

//方法一
using Microsoft.MixedReality.Toolkit;
using UnityEditor;
using UnityEngine;
public class ProfileSwapper : MonoBehaviour
{void Start(){// 加载配置文件,MixedRealityToolkitConfigurationProfile可以换成任何需要替换的配置文件var profile = AssetDatabase.LoadAssetAtPath<MixedRealityToolkitConfigurationProfile>("Assets/MixedRealityToolkit.Generated/CustomProfiles/RuntimeSwapProfile.asset");MixedRealityToolkit.Instance.ActiveProfile = profile;}
}

在MRTK完成初始化之后通过替换配置文件以改变某些特性的行为方式,这需要依据具体配置文件及其配置管理的功能决定,有些配置文件可以在运行时动态切换,而有些配置文件则不能进行动态切换,应当先充分了解希望切换的配置文件详细信息。
在MRTK2.7及以后,MRTK提供了一个新方法SetProfileBeforeInitialization(),利用该方法可以确保在MRTK初始化之前替换原配置文件,当然,与前文一样,前提是这个脚本有更高的优先执行权,代码如下所示。


```csharp
//方法二
using Microsoft.MixedReality.Toolkit;
using UnityEngine;
public class PreInitProfileSwapper : MonoBehaviour
{[SerializeField]private MixedRealityToolkitConfigurationProfile profileToUse = null;private void Awake(){//profileToUse为需要替换运行的配置文件MixedRealityToolkit.SetProfileBeforeInitialization(profileToUse);}
}

除了使用上面的动态切换配置文件的方法,MRTK2.7还引入了热切换,可以在运行时动态切换配置文件。

//方法三
using Microsoft.MixedReality.Toolkit;
using UnityEngine;
public class PreInitProfileSwapper : MonoBehaviour
{[SerializeField]private MixedRealityToolkitConfigurationProfile profileToUse = null;private void swapperProfile(){//profileToUse为需要替换运行的配置文件MixedRealityToolkit.Instance.ActiveProfile = profileToUse;}
}

使用热切换时,当前配置文件卸载发现在当前服务的最后一个LateUpdate() 方法执行完之后,新的配置文件加载发生在当前服务的所有Update() 方法执行之前。由于是热切换,MR应用在这个过程中会受到影响,会出现卡顿甚至假死,但UI元素会保持不变,另外,拥有更高优先级的脚本可能在这个切换过程中访问配置文件,如果此是新的配置文件尚未设置完成会导致异常发生。

常见的很多配置文件都可以在开发时完成配置,但在实际开发中,也可能需要在运行时根据运行条件动态的修改某些配置项的参数,由于MRTK配置文件簇良好的树型结构,我们可以非常容易获取到所需要的子配置文件或者某个配置项,典型的示例代码如下。

//需要引入Microsoft.MixedReality.Toolkit命名空间
void GetProfile()
{var mainProfile = MixedRealityToolkit.Instance.ActiveProfile;var inputProfile = mainProfile.InputSystemProfile;var pointerProfile = inputProfile.PointerProfile;//获取配置属性参数float pointingExtent = pointerProfile.PointingExtent;//设置配置属性参数inputProfile.HandTrackingProfile.HandMeshVisualizationModes = Microsoft.MixedReality.Toolkit.Utilities.SupportedApplicationModes.Player;
}

通过MixedRealityToolkit.Instance.ActiveProfile属性我们可以获取到当前MR应用主配置文件,这是个单例实例,在MR应用运行时只有一份实例,然后就可以根据配置文件的树型结构获取到希望获取的子配置文件或者配置属性。需要注意的是,一些配置文件参数不可以在运行时修改,而另一些则可以,这与具体的配置文件相关。

针对HoloLens2设备,MRTK提供了默认的DefaultHoloLens2ConfigurationProfile配置文件及其所属子配置文件簇,该配置文件簇确保了所用配置通用可靠,在进行项目配置时,建议以该配置文件簇为基础进行针对性的优化,更快速和安全。

配置文件

这篇关于Hololens环境搭建的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/688991

相关文章

本地搭建DeepSeek-R1、WebUI的完整过程及访问

《本地搭建DeepSeek-R1、WebUI的完整过程及访问》:本文主要介绍本地搭建DeepSeek-R1、WebUI的完整过程及访问的相关资料,DeepSeek-R1是一个开源的人工智能平台,主... 目录背景       搭建准备基础概念搭建过程访问对话测试总结背景       最近几年,人工智能技术

在Mysql环境下对数据进行增删改查的操作方法

《在Mysql环境下对数据进行增删改查的操作方法》本文介绍了在MySQL环境下对数据进行增删改查的基本操作,包括插入数据、修改数据、删除数据、数据查询(基本查询、连接查询、聚合函数查询、子查询)等,并... 目录一、插入数据:二、修改数据:三、删除数据:1、delete from 表名;2、truncate

5分钟获取deepseek api并搭建简易问答应用

《5分钟获取deepseekapi并搭建简易问答应用》本文主要介绍了5分钟获取deepseekapi并搭建简易问答应用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需... 目录1、获取api2、获取base_url和chat_model3、配置模型参数方法一:终端中临时将加

VScode连接远程Linux服务器环境配置图文教程

《VScode连接远程Linux服务器环境配置图文教程》:本文主要介绍如何安装和配置VSCode,包括安装步骤、环境配置(如汉化包、远程SSH连接)、语言包安装(如C/C++插件)等,文中给出了详... 目录一、安装vscode二、环境配置1.中文汉化包2.安装remote-ssh,用于远程连接2.1安装2

Java中的Opencv简介与开发环境部署方法

《Java中的Opencv简介与开发环境部署方法》OpenCV是一个开源的计算机视觉和图像处理库,提供了丰富的图像处理算法和工具,它支持多种图像处理和计算机视觉算法,可以用于物体识别与跟踪、图像分割与... 目录1.Opencv简介Opencv的应用2.Java使用OpenCV进行图像操作opencv安装j

mysql-8.0.30压缩包版安装和配置MySQL环境过程

《mysql-8.0.30压缩包版安装和配置MySQL环境过程》该文章介绍了如何在Windows系统中下载、安装和配置MySQL数据库,包括下载地址、解压文件、创建和配置my.ini文件、设置环境变量... 目录压缩包安装配置下载配置环境变量下载和初始化总结压缩包安装配置下载下载地址:https://d

将Python应用部署到生产环境的小技巧分享

《将Python应用部署到生产环境的小技巧分享》文章主要讲述了在将Python应用程序部署到生产环境之前,需要进行的准备工作和最佳实践,包括心态调整、代码审查、测试覆盖率提升、配置文件优化、日志记录完... 目录部署前夜:从开发到生产的心理准备与检查清单环境搭建:打造稳固的应用运行平台自动化流水线:让部署像

gradle安装和环境配置全过程

《gradle安装和环境配置全过程》本文介绍了如何安装和配置Gradle环境,包括下载Gradle、配置环境变量、测试Gradle以及在IntelliJIDEA中配置Gradle... 目录gradle安装和环境配置1 下载GRADLE2 环境变量配置3 测试gradle4 设置gradle初始化文件5 i

Mycat搭建分库分表方式

《Mycat搭建分库分表方式》文章介绍了如何使用分库分表架构来解决单表数据量过大带来的性能和存储容量限制的问题,通过在一对主从复制节点上配置数据源,并使用分片算法将数据分配到不同的数据库表中,可以有效... 目录分库分表解决的问题分库分表架构添加数据验证结果 总结分库分表解决的问题单表数据量过大带来的性能

Java汇编源码如何查看环境搭建

《Java汇编源码如何查看环境搭建》:本文主要介绍如何在IntelliJIDEA开发环境中搭建字节码和汇编环境,以便更好地进行代码调优和JVM学习,首先,介绍了如何配置IntelliJIDEA以方... 目录一、简介二、在IDEA开发环境中搭建汇编环境2.1 在IDEA中搭建字节码查看环境2.1.1 搭建步