Hololens 学习-----1

2023-10-29

ww# 学习资料
基本操作:链接: https://learn.microsoft.com/zh-cn/hololens/hololens2-basic-usage
链接: https://learn.microsoft.com/zh-cn/windows/mixed-reality/mrtk-unity/mrtk2/features/ux-building-blocks/bounds-control?view=mrtkunity-2021-05

编辑器调试方法

默认情况下,MRTK 附带的配置文件中会启用输入模拟。 只需单击“播放”按钮即可运行输入模拟支持的场景。

按 W、A、S、D、Q、E 键可移动摄像头。
在按住鼠标右键的同时移动鼠标可以四处浏览。
按空格键(右手)或左 Shift 键(左手)以显示模拟的双手
按 T 或 Y 键以将模拟的双手保持在视野中
要旋转模拟的手部,请按住 Ctrl 键并移动鼠标

UX组件学习

1.边界框
可以在 BoundingBoxExamples 场景中找到边界框配置的示例。
如何使用 Unity 检查器添加和配置边界框
1)向对象添加盒碰撞体
2)将 BoundingBox 脚本分配给对象
在这里插入图片描述
Behavior:Activation
有几个用于激活边界框界面的选项。
启动时激活:在场景启动时,边界框变为可见。
接近时激活:当明确有手接近对象时,边界框变为可见。
指针激活:当边界框成为手射线指针的目标时,边界框变为可见。
指针和手动激活:当边界框成为手射线指针的目标时,明确有手接近对象时,边界框变为可见。
手动激活:边界框不会自动变为可见。 可以通过访问 boundingBox.Active 属性使用脚本手动激活它。
在这里插入图片描述
2.边界控制
BoundsControl 是先前在 BoundingBox 中发现的新操作行为组件。 边界控制在设置方面进行了大量改进和简化,并添加了新功能。 此组件是边界框的替换项,边界框将被弃用。
在这里插入图片描述
3.布局
布局工具
在这里插入图片描述
4.按钮
1)Button
脚本
Interactable.cs
PressableButton.cs
PhysicalPressEventRouter.cs
在这里插入图片描述

在这里插入图片描述
若要利用特定的表达手部输入状态信息,可以使用可按按钮事件 -Touch Begin、Touch End、Button Pressed、Button Released。 但不会引发这些事件来响应隔空敲击、手部射线或眼部输入。 为了同时支持近距交互和远距交互,建议使用可交互的 OnClick 事件。
在这里插入图片描述
2)Toggle

InteractableToggleCollection.cs
在这里插入图片描述
5.约束管理器
约束管理器的默认模式,即自动约束选择,将提供所有附加约束组件的列表,以及转到按钮和添加约束按钮。
如果将束管理器设置为手动模式,则仅处理约束列表中链接的约束并将其应用于转换。 显示的列表将仅显示用户选择的约束,以及转到按钮或用于删除或添加条目的选项。 首次启用手动模式时,约束管理器将使用所有可用组件填充列表,作为选择附加约束组件的起点。
在这里插入图片描述
约束选择:
手类型
指定约束是用于单手操作、双手操作还是同时用于这两种操作。 由于此属性是一个标志,因此可以同时选择这两个选项。

单手:如果选择,约束将在单手操作期间使用。
双手操作:如果选择,约束将在双手操作期间使用。
邻近类型
指定约束是用于近操作、远操作还是同时用于这两种操作。 由于此属性是一个标志,因此可以同时选择这两个选项。

近:如果选择,约束将在近操作期间使用。
远:如果选择,约束将在远操作期间使用。
FaceUserConstraint
约束人脸用户
当此约束附加到对象时,旋转将受到限制,以便对象始终面向用户。 这适用于盖板或面板。 FaceUserConstraint 的属性如下:

人脸离开
如果为 true,则对象与用户远离。

FixedDistanceConstraint
约束 固定距离
此约束固定了操作开始时被操作对象与另一个对象转换之间的距离。 这适用于诸如固定被操作对象与头部转换之间的距离等行为。 FixedDistanceConstraint 的属性如下:

约束转换
这是被操作对象将具有固定距离的另一个转换。 默认为照相机转换。

FixedRotationToUserConstraint
固定旋转
此约束在被操作时固定了用户和被操作对象之间的相对旋转。 这适用于盖板或面板,因为它可确保被操作对象始终向用户显示与操作开始时相同的人脸。 FixedRotationToUserConstraint 没有任何唯一属性。

FixedRotationToWorldConstraint
固定旋转到世界
此约束固定了被操作时被操作对象的全局旋转。 当不应通过操作来旋转时,这非常有用。 FixedRotationToWorldConstraint 没有任何唯一的属性:

MaintainApparentSizeConstraint
保持明显大小
当此约束被附加到对象时,无论对象与用户有多远,它都将保持与用户相同的表面大小(即它将占据用户视野的相同比例)。 这可用于确保在操作时盖板或面板仍然可读。 MaintainApparentSizeConstraint 没有任何唯一的属性:

MoveAxisConstraint
约束移动轴
此约束可用于固定被操作对象沿哪个轴移动。 这可用于在平面表面或沿直线操作对象。 MoveAxisConstraint 的属性如下:

移动约束
指定要阻止在哪个轴上移动。 默认情况下,这些轴是全局轴而不是局部轴,但可以在下方进行更改。 由于此属性是一个标志,因此可以选择任意数目的选项。

X 轴:如果选择,则沿 x 轴的移动受到限制。
Y 轴:如果选择,则沿 y 轴的移动受到限制。
Z 轴:如果选择,则沿 z 轴的移动受到限制。
使用局部空间进行约束
如果为 true,将约束被操作对象的局部转换轴。 默认值为 False。

RotationAxisConstraint
约束旋转轴
此约束可用于固定被操作对象可沿哪个轴旋转。 这可用于使被操作对象保持垂直,但仍允许围绕 y 轴旋转,例如。 RotationAxisConstraint 的属性如下:

旋转约束
指定要阻止围绕其旋转的轴。 默认情况下,这些轴是全局轴而不是局部轴,但可以在下方进行更改。 由于此属性是一个标志,因此可以选择任意数目的选项。

Y 轴:如果选择,则会约束围绕 y 轴的旋转。
Z 轴:如果选择,则会约束围绕 Z 轴的旋转。
X 轴:如果选择,则会约束围绕 X 轴的旋转。
使用局部空间进行约束
如果为 true,将约束被操作对象的局部转换轴。 默认值为 False。

MinMaxScaleConstraint
Min Max Constatint
此约束允许为被操作对象的规模设置最小值和最大值。 这有助于防止用户将对象缩放得太小或太大。 MinMaxScaleConstraint 的属性如下:

最小缩放
操作期间的最小缩放值。

最大缩放
操作期间的最大缩放值。

相对于初始状态
如果为 true,上述值将被解释为相对于对象的初始缩放值。 否则,它们将被解释为绝对缩放值。
6.对话框
MRTK 提供三种对话框预制件:

DialogSmall_192x96.prefab
DialogMedium_192x128.prefab
DialogLarge_192x192.prefab

使用 Dialog.Open() 打开一个新对话框。 指定“对话框预制件”、“按钮数”、“标题文本”、“消息文本”、“位置距离”或其他变量。 对话框提供“确认”(单个按钮)和“选择”(两个按钮)的对话框选项。

public static Dialog Open(GameObject dialogPrefab, DialogButtonType buttons, string title, string message, bool placeForNearInteraction, System.Object variable = null)

示例:使用单个“确定”按钮打开大型对话框,位于远端交互范围(注视、手部射线、运动控制器)

Dialog.Open(DialogPrefabLarge, DialogButtonType.OK, "Confirmation Dialog, Large, Far", "This is an example of a large dialog with only one button, placed at far interaction range", false);

示例:打开包含用户选择消息的小对话框,位于近端交互范围(直接交互)

Dialog.Open(DialogPrefabSmall, DialogButtonType.Yes | DialogButtonType.No, "Confirmation Dialog, Small, Near", "This is an example of a small dialog with a choice message, placed at near interaction range", true);

7.操作处理程序
使用 ManipulationHandler 脚本可以通过一只或两只手来移动、缩放和旋转对象。 可以限制操作,使其只允许某些种类的变换。 该脚本适用于各种类型的输入,包括 HoloLens 2 关节手输入、手部射线、HoloLens(第一代)手势输入,以及沉浸式头戴显示设备运动控制器输入。

如何使用操作处理程序
将 ManipulationHandler 脚本组件添加到 GameObject。 另外,确保向对象添加一个与其可抓取边界匹配的碰撞体。

为使对象能够响应近距关节手输入,还需要添加 NearInteractionGrabbable 脚本。

在 unity 编辑器中使用操作处理程序

检查器属性
操作处理程序结构
宿主变换:要拖动的变换。 默认为组件的对象。

操作类型:指定是可以使用一只手来操作对象、两只手来操作对象,还是这两种方式都可以。

仅单手
仅双手
一只和两只手
双手操控类型

缩放:仅允许缩放。
旋转:仅允许旋转。
移动缩放:允许移动和缩放。
移动旋转:允许移动和旋转。
旋转缩放:允许旋转和缩放。
移动旋转缩放:允许移动、旋转和缩放。

          操作处理程序

允许远距操作:指定是否可以使用远距交互通过指针来执行操作。

近距单手旋转模式:指定使用单手/控制器近距抓取对象时的对象行为。

远距单手旋转模式:指定使用单手/控制器远距抓取对象时的对象行为。

单手旋转模式选项:指定使用单手抓取对象时如何旋转对象。

保持原始旋转:在移动对象时不旋转它
保持向用户旋转:保持原始的沿 X/Y 轴向用户旋转方式
保持沿重力方向向用户旋转:保持原始的向用户旋转方式,但使对象垂直。 对于具有边界控件的对象很有用。
面向用户:确保对象始终面向用户。 适用于平板/面板。
背对用户:确保对象始终背对用户。 对于后向配置的平板/面板很有用。
围绕对象中心旋转:仅适用于关节手/控制器。 使用手部/控制器旋转来旋转对象,但围绕对象中心点旋转。 可用于在某种距离进行检查。
围绕抓取点旋转:仅适用于关节手/控制器。 旋转对象,如同它被手部/控制器抓住了一样。 可用于检查。
释放行为:释放对象时,指定其物理运动行为。 要求该对象上有一个刚体组件。


全部内容
保持速度
保持角速度
旋转约束:指定在与对象交互时,对象在哪个轴上旋转。


仅 X 轴
仅 Y 轴
仅 Z 轴
使用局部空间进行约束:在应用世界空间轴或局部空间轴相关的约束时用于切换的切换开关。

运动约束


固定与头部的距离
平滑化处于活动状态:指定平滑化是否处于活动状态。

单手平滑化量:应用于移动、缩放、旋转的平滑化量。 平滑化量为 0 表示不平滑化。 最大值表示不更改值。

事件
操控处理程序提供以下事件:

OnManipulationStarted:在操控开始时触发。
OnManipulationEnded:在操控结束时触发。
OnHoverStarted:当手部/控制器悬停在近距或远距可操控对象上时触发。
OnHoverEnded:当手部/控制器未悬停在近距或远距可操控对象上时触发。

8.对象控制器
若要使用对象操控器,请先将 ObjectManipulator 脚本组件添加到 GameObject。 另外,确保向对象添加一个与其可抓取边界匹配的碰撞体。

为使对象能够响应近距关节手输入,还需要添加 NearInteractionGrabbable 脚本。
对象控制器

9.凝视停留
停留脚本
DwellHandler:向 UI 目标添加停留模态。
DwellStateType:停留处理程序的状态。
DwellUnityEvent:停留事件的 Unity 事件。 包含指针引用。
BaseDwellPressableButton.cs:可在 PressableButtonHoloLens2 预制件的 Interactable 中触发 OnClick() 事件的脚本。
ToggleDwellPressableButton.cs:此脚本可修改使用 MRTK 标准着色器的 dwellVisualImage 的 BorderWidth 属性。
在这里插入图片描述
在这里插入图片描述
10.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Hololens 学习-----1 的相关文章

  • UE5学习笔记(一)——界面功能梳理&第一天知识点记录

    学习UE5的第一步 是软件安装 默认是安装好的 由于安装没有太多技术含量 所以就没有专门做记录 这里有个注意点 虚幻引擎是整合在Epic games launcher中的 也就是说开发引擎内嵌在游戏平台上 打个比方 就是如果你要下unity
  • 【Unity&C#&随机数】随机数

    一个简单的随机数获得 0或1 使用了这样的代码 想要获得0或者1 if Input anyKeyDown float i 1 if i 1 i Random Range 0 Rang i i lt 0 5 0 1 Debug Log Cou
  • Unity 分块延迟渲染01 (TBDR)

    现代移动端图形体系结构的概述 现代SoC通常会同时集成CPU和GPU CPU被用于处理需要低内存延迟的序列 大量分支的数据集 其晶体管用于流控制和数据缓存 GPU为处理大型 未分支的数据集 如3D渲染 晶体管专用于寄存器和算术逻辑单元 而不
  • Unity动画控制器animator.CrossFade

    需要特别注意 1 CrossFade虽然可以不用任何逻辑来链接而直接跳转 但是CrossFade只能覆盖其他动画 当当前动画播放完毕而没有跳出这个动画时再次调用CrossFade将会失败 造成动画依旧停在原位 参数animator Cros
  • UnityVR--组件3--Line Renderer--线性渲染

    目录 线性渲染组件简介 绘制线条Line Renderer组件介绍 绘制拖尾Trail Renderer组件介绍 应用1 使用Line Renderer绘制线段 应用1实现 使用系统工具或自定义工具绘制线段 应用2 Trail Render
  • GooglePlay提审警告(com.google.android.gms:play-services-safetynet:17.0.0)

    1 Goole在今年6月份出的新政策 不在使用safetynet 而使用Play Integrity API 2 项目本身没有使用过safetynet 3 使用了firebase 查阅资料 解决方案如下 implementation pla
  • unity工程崩溃资源找回

    1 Unity死机未保存场景 当你在Unity中编辑场景 突然死机时 可以在项目文件目录中找到Temp文件夹 双击文件夹 找到 Backupscenes文件夹 把后缀为 backup的文件后缀改为 unity 然后拖进Unity的Proje
  • 【IMGUI】 各种辅助类 EditorGUIUtility、EditorUtility、GUIUtility、GUILayoutUtility

    EditorGUIUtility class in Editor 继承自 GUIUtility EditorGUI 的各种辅助程序 EditorGUIUtility currentViewWidth 我尝试打印了下这个值和position
  • Unity 键盘控制人物移动——之输入方式代码的编写

    键盘输入 控制人物移动 在我们制作游戏中最常见的需求之一就是使用键盘移动游戏角色 那么我们首先需要获取键盘输入 以下提供两种方法获取键盘 这里尽量通过截图解释让大家理解代码的含义 GetInput void FixedUpdate Move
  • Unity保存图片到相册

    Unity保存图片到Android相册 Java 纯文本查看 复制代码 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
  • Unity打包WebGL的优化常用操作?

    1 贴图部分优化 如果贴图格式时2048 在不影响画面效果的情况下 改成1024或者5 12 还可以缩小包体 2 压缩和解压缩问题 WebGL打包的时候分三种压缩情况 gzip 比Brotli文件打 但打包快 http和https都支持 B
  • 【Unity步步升】监控与检测物体的各种方案,如:射线、碰撞、挂载等...

    在制作AR模型数值控制方案的时候遇到了检测的问题 学习过程受益匪浅 故今天为大家整理带来一篇监控与检测物体的参考方案集合 目录 一 射线检测 二 物体存在检测 三 碰撞检测 一 射线检测 单射线检测 首先完成搭建场景如下图1 1 我这里用到
  • 在 Unity 中使用资源文件夹

    我正在开发一个 HoloLens 项目 需要引用 txt 文件 我将文件存储在 Unity 的 资源 文件夹中 并且它们工作得很好 通过 Unity 运行时 string basePath Application dataPath stri
  • Unity Hololens2 构建错误

    我尝试构建 Hololens 2 应用程序 但遇到无法解决的错误 当我尝试使用 Unity 播放按钮测试应用程序时 它按预期工作 我还尝试了 MRTK 示例场景 它也只能通过播放按钮起作用 但当我尝试构建它时却不起作用 构建错误 Libra
  • Unity万向节死锁解决方案(2023/12/4)

    1 万向节死锁无法解决 这是因为它的特性就是如此 就像玻璃杯就是玻璃 这不可否认 别钻牛角尖昂 2 大多数情况下欧拉角足够用 例如 CF 摄像机不可能绕z轴旋转 x轴旋转也不会超过九十度 因为那样人物的腰子会被扭断 塔防游戏 保卫萝卜 吃鸡
  • Unity中URP下的指数雾

    文章目录 前言 一 指数雾 雾效因子 1 FOG EXP 2 FOG EXP2 二 MixFog 1 ComputeFogIntensity 雾效强度计算 2 lerp fogColor fragColor fogIntensity 雾效颜
  • U3D游戏开发中摇杆的制作(UGUI版)

    在PC端模拟摇杆 实现玩家通过控制摇杆让玩家移动 以下是完整代码 using System Collections using System Collections Generic using UnityEngine using Unity
  • 使用 FileOpenPicker 打开本地数据路径

    数据 我的文件 我想在我的 Hololens 应用程序中打开上面的数据路径 该路径位于我的应用程序文件夹 HoloApp Data myFiles 的本地 据我了解 执行此操作的主要方法是使用 FileOpenPickers 我读过API
  • 无法部署到 HoloLens(错误 80004005)

    我刚刚安装了 Unity 2018 3 10 和 Visual Studio 2017 15 9 10 由于 Visual Studio 中出现错误 DEP0100 请确保目标设备启用了开发人员模式 由于错误 80004005 无法在 12
  • Hololens-无法连接到设备

    我意识到这个问题在其他地方被问过 但答案似乎直接针对 Hololens 和 PC 之间的配对过程 这是我的问题的一部分 我在 Unity 中制作了一个应用程序并导出到 Visual Studio 当我尝试在 Hololens 上运行它时 出

随机推荐

  • 工程有限元(1)

    有限法的基本思想 有限元概述 结构分析问题 有限元法的思路 有限元法的一般步骤 本文内容是整理的 工程有限元 课程内容 便于日后复习以及读者学习 有限元概述 有限元法 Finite Element Anaslysis FEM 是通过数学描述
  • c++继承下

    继承的方式主要分为单继承 多继承 菱形继承 普通单继承 指向派生类的基类指针或者引用 其类型仍然属于基类类型 而不是派生类类型 include
  • for(auto i : v)遍历容器元素

    for auto i v 遍历容器元素 1 auto 2 auto 3 const auto 4 const auto C 11 新增了一种循环 基于范围 range based 的 for 循环 这简化了一种常见的循环任务 对数组 或容器
  • 计算机重新如何连接网络打印机,电脑怎样连接打印机,小编教你电脑如何连接网络打印机...

    打印机是办公室里经常会用到的一种办公设备 由于工作性质的不同 以及其他原因 网络打印机可以实现多台电脑连接 实现资源共享 网络打印机自带ip 只需指定ip就可以快速连接 那电脑如何连接网络打印机 下面 小编给大家讲解电脑连接网络打印机的技巧
  • 基于类帕累托贯序抽样算法求解单目标优化问题附matlab代码

    作者简介 热爱科研的Matlab仿真开发者 修心和技术同步精进 matlab项目合作可私信 个人主页 Matlab科研工作室 个人信条 格物致知 更多Matlab完整代码及仿真定制内容点击 智能优化算法 神经网络预测 雷达通信 无线传感器
  • 智能合约平台开发指南

    随着区块链技术的普及 智能合约平台已经成为了这个领域的一个重要趋势 智能合约可以自动化执行合同条款 大大减少了执行和监督合同条款所需的成本和时间 那么 如何开发一个智能合约平台呢 以下是一些关键步骤 一 选择合适的区块链平台 智能合约通常运
  • pgsql数据库实现导入导出

    pgsql数据库实现导入导出 1 导出表 pg dump h 数据库ip U 用户名 数据库名 t 表名 gt 路径 例 pg dump h 127 0 0 1 U sysdba data center t book gt data boo
  • Prompt入门

    Prompt的范式大抵是两种 续写Prefix 用在GPT2 3那种单向LM预训练模型上 输入 好好学习 翻译成英文 输出 good good study 完形填空 用在BERT那种MLM式预训练模型上 比如情感分类任务可以输入 这个饼不错
  • Idea 中 Git 不提交当前分支修改代码并切换分支

    1 当前分支修改代码切换分支 日常开发中 我们可能会碰到我们正在修改当前 01 分支的代码 突然要去修改另外一个 02 分支的代码情况 而我们 01 分支写的代码还未经过测试 并不能马上提交 这个时候我们切换到 02 分支就会有问题 比如弹
  • dubbo中的Mock实现机制

    Mock是SOA之中的一个很有用的功能 不仅可以用来进行服务降级 也可以用来在测试中模拟服务调用的各种异常情况 dubbo框架里面的mock是在服务使用者这一端实现的 下面对实现机制进行分析 1 Mock的植入 很显然 既然提供了mock机
  • C++spdlog学习总结

    C Spdlog学习笔记 spdlog简介 spdlog优点 一般日志功能设计 spdlog安装 spdlog琐碎知识点总结 spdlog程序测试 一 日志输出控制台 1 数据全部输出到控制台 2 指定某个等级以上的数据到控制台 二 输出格
  • OC门与OD门

    OC门与OD门 OC Open Collector 集电极开路 OD Open Drain 漏极输出 集电极开路输出的结构如下图所示 右边的那个三极管集电极什么都不接 所以叫做集电极开路 左边的三极管为反相使用 使输入为 0 时 输出也为
  • 底层进阶

    在知乎上关注了好多图形学大佬 感觉现在知乎的技术氛围要比掘金推荐旧文好多了 经常会推送感兴趣的领域内容 而且还可以和作者私信交流 这段时间看到有大佬分享 GPU 架构相关的内容 做图像渲染的还是要懂 GPU 才行的 毕竟是和它打交道嘛 这位
  • springboot @CreatedDate @LastModifiedDate 自动生成创建时间,修改时间

    CreatedDate或 LastModifiedDate 在实体类的属性上加上上面的注解 即可不用处理时间的问题 在插入时会自动生成创建时间 修改时自动更新修改时间 搭配 Column updatable false 使用 注解起作用还需
  • C++ 随机数的制作

    include
  • Spring security安全登录-当AJAX遇上Redirect

    前言 最近做平台引入spring security做为安全认证框架 在登录的时候使用的ajax的请求方式 最开始的做法是调用登录的接口 成功后再前端使用window location href index html的方式跳转到希望的页面 考
  • kali linux 2020.4 自带浏览器英文改中文

    刚开始用kali linux 可能一些伙伴也会像我一样遇到英文不通的情况 比如 系统自带的火狐浏览器是英文的 要变成中文直接敲入 sudo apt install firefox esr l10n zh cn y 然后重启一下火狐浏览器就可
  • 【Unity+MySQL】实现简单的注册登录系统

    目录 1 安装Unity引擎和Navicat软件 2 安装MySQL8 0数据库 2 1 下载msi文件 2 2 安装MySQL Server 8 0 2 3 配置环境变量 2 4 安装MySQL服务 2 5 开启MySQL服务 2 6 修
  • 软件外包开发项目管理工具

    随着软件项目的规模越做越大 项目管理人员需要使用工具管理项目进度 从而更有成效的管理好软件开发进度 软件开发的进度管理工具有很多 今天和大家分享一些常用的系统工具 希望对大家有所帮助 北京木奇移动技术有限公司 专业的软件外包开发公司 欢迎交
  • Hololens 学习-----1

    ww 学习资料 基本操作 链接 https learn microsoft com zh cn hololens hololens2 basic usage 链接 https learn microsoft com zh cn window