Unity Hololens2开发|(八)MRTK3空间操作 BoundsControl(边界控制)

简介: Unity Hololens2开发|(八)MRTK3空间操作 BoundsControl(边界控制)


1.前言

BoundsControl 提供自动调整大小的边界框,以及旋转和缩放的操作功能。

MRTK 2.x 中,BoundsControl 主要是通过使用配置 ScriptableObjects 在运行时生成的。 在 MRTK3 中,BoundsControl 的设置和自定义已显著简化。 边界视觉对象和句柄只是 BoundsControl 在运行时实例化的可自定义预制件。 开发人员可以调整和自定义视觉对象预制件,甚至可以从头开始生成新的边界视觉对象。 我们提供标准边界视觉对象实现,遵循新的混合现实设计语言。

新的视觉对象提供简化的视觉反馈,以最少的干扰视觉干扰来说明用户的意图和对对象的操作。

2.设置

  • 只需将 BoundsControl 添加到现有对象, BoundsVisualsPrefab 并使用要使用的边界视觉对象填充引用。 MRTK3提供了一些不同的预生成边界视觉对象可以使用。
  • 强烈建议开发人员添加 MinMaxScaleConstraint ,以防止用户将对象缩放到无法使用的小型或大型大小。
  • 若要使用边界视觉对象的意向和焦点效果,必须在 对象上具有 StatefulInteractable 。 如果未自动检测到可交互对象,则可以在 BoundsControl 检查器中指定连接。
  • 建议开发人员将 ObjectManipulatorBoundsControl 结合使用 ,以便为用户提供直接操作以及基于负担的操作。 ObjectManipulator 可以充当 StatefulInteractable 边界视觉对象响应的悬停/焦点状态的 。

3.边界视觉对象预制件

  • MRTK3多个预生成的边界视觉对象,用于 BoundsControl。 开发人员制作这些视觉对象的预制变体,并对其进行自定义以满足其需求。 句柄动画和状态由 StateVisualizer 提供支持,使开发人员能够进一步自定义外观。

3.1 句柄遮挡样式

  • 这些边界视觉对象提供简化的视觉设计,减少用户的干扰。 只有沿边界边缘的相关句柄是可见的。 边界视觉对象根据用户意向和选择进度收缩、展开和更改颜色/粗细。 强烈建议使用此边界视觉样式.

3.2 仅限意向

  • 在某些上下文中,句柄可能不可取,开发人员可能希望单独使用边界视觉对象作为用户意图的愉快指示器。 当此预制件执行该工作时,可以通过选择“HandleType.None”,对任何其他边界视觉对象实现相同的效果。 我们发现,可挤压边界视觉对象是一个令人满意的视觉反馈元素,适用于许多不同的上下文,而不仅仅是基于句柄的操作。

3.3 旧样式

  • 这些边界视觉对象显示框的所有控点和边缘。 这更符合旧设计语言和 MRTK 2.x 中的先前行为;但是,由于不必要的视觉干扰,此设计可能更分散用户的注意力。 此外,在对象 (前面和) 后面存在句柄可能会导致间接凝视捏合操作出现问题。 不建议将此样式用于新应用程序,尤其是那些利用凝视目标的应用程序。

4.交互设计

  • 在当前迭代中,我们提供简单的激活/停用交互。 换句话说,单击就地边界 (,选择对象,不移动对象,释放它) 可以打开和关闭句柄。 可以使用 调整DragToggleThreshold此检查的距离容差,并且可以使用 属性启用/禁用ToggleHandlesOnClick此激活行为本身。

5.自动边界计算

  • BoundsControl 将尝试自动计算关联对象的边界。 如果需要特定的边界形状,检查 OverrideBounds 选项并直接指定边界对象。 边界计算系统将仅计算指定重写对象的边界。
    会影响 BoundsCalculationMethod 算法计算边界的方式。 如果封闭对象的视觉形状不一定与碰撞体匹配,或者相反,开发人员可以调整计算方法以首选使用呈现器或碰撞器边界,或者同时使用这两者。
    无论计算方法如何, Padding 选项都将以世界单位统一填充边界。 平展边界时,不填充平展轴。

6.平展

  • BoundsControl 也可用于操作 2D 内容。 如果 FlattenMode 设置为 Auto,则如果对象沿任何轴足够平整,则 BoundsControl 会将自身平展为 2D 矩形边界。 如果对象不够平整,但你仍然希望矩形边界提供, FlattenMode.Always 将始终沿最瘦的轴平展 BoundsControl。 相反, FlattenMode.Never 将阻止 BoundsControl 平展,即使对象非常薄。

7.操作选项

  • BoundsControl 的操作行为可以通过多种方式进行调整。 选项 RotateAnchor 控制使用旋转功能时,BoundsControl 围绕其旋转的透视点。 某些对象的透视点远离其视觉中心,这在使用旋转控点进行操作时可能会导致不适和不准。 为 BoundsCenterRotateAnchor 指定 将导致 BoundsControl 始终围绕计算边界的几何中心旋转,而不是对象的实际原点。
    缩放行为可以设置为 UniformNon Uniform。 在“Unity”模式下,对象的所有轴一起缩放,从而保持纵横比和外观。 非均匀缩放允许单独缩放对象的每个轴。

8.属性面板解析

属性 描述
BoundsVisualsPrefab 这个预制件将被实例化为边界视觉效果。考虑制作自己的预制板来修改视觉效果的绘制方式
BoundsCalculationMethod 自动计算边界类型
IncludeInactiveObjects 当它遍历层次结构来计算边界时,边界控制是否应该包含非活动对象?
OverrideBounds 是否应该使用一个特定的对象来计算边界,而不是整个层次结构?
FlattenMode 这个边界控制应该如何压平??
BoundsPadding 边界将在对象的范围内以世界单位为单位填充这个量。
Interactable 对负责包装对象的交互式(例如 ObjectManipulator)的引用。
ToggleHandlesOnClick 在选择交互式控件、未移动该控件、然后释放该控件时切换控件。
DragToggleThreshold 在选择关联的可交互性时,如果可交互性被拖动/移动的距离小于此值,则手柄将被激活/停用。
Target 要操作的转换。如果为空,它将自动设置为此边界控制所在的转换。
HandlesActive 应该有可见的句柄吗?
EnabledHandles 哪种类型的句柄应该是可见的?
RotateAnchor 指定旋转句柄是围绕对象的原点旋转,还是围绕其计算边界的中心旋转。
ScaleAnchor 指定刻度柄是围绕对角旋转刻度,还是围绕其计算边界的中心旋转刻度。
ScaleBehavior 与缩放句柄交互时应用的缩放行为-默认是统一缩放。非均匀模式根据手/控制器在空间中的运动来调节控制。
SmoothingActive 检查以启用帧速率独立平滑。
RotateLerpTime 输入表示要应用到旋转的平滑量。平滑0表示没有平滑。最大值意味着不改变值。
ScaleLerpTime 输入表示平滑量以应用于刻度。平滑0表示没有平滑。最大值意味着不改变值。
TranslateLerpTime 输入表示平滑量的Translate以应用于翻译。平滑0表示没有平滑。最大值意味着不改变值。
EnableConstraints 启用或禁用此组件的约束支持。启用后,转换更改将由链接的约束管理器进行后期处理。
ConstraintsManager 约束管理器槽,以便在操作对象时启用约束。
ManipulationStarted 开始操作手柄时触发。
ManipulationEnded 结束操作手柄时触发。
相关文章
|
4月前
|
算法 vr&ar C#
使用Unity进行虚拟现实开发:深入探索与实践
【8月更文挑战第24天】使用Unity进行虚拟现实开发是一个充满挑战和机遇的过程。通过掌握Unity的VR开发技术,你可以创造出令人惊叹的VR体验,为用户带来前所未有的沉浸感和乐趣。随着技术的不断进步和应用场景的不断拓展,VR开发的未来充满了无限可能。希望本文能为你提供有用的指导和启发!
|
3月前
|
图形学 C++ C#
Unity插件开发全攻略:从零起步教你用C++扩展游戏功能,解锁Unity新玩法的详细步骤与实战技巧大公开
【8月更文挑战第31天】Unity 是一款功能强大的游戏开发引擎,支持多平台发布并拥有丰富的插件生态系统。本文介绍 Unity 插件开发基础,帮助读者从零开始编写自定义插件以扩展其功能。插件通常用 C++ 编写,通过 Mono C# 运行时调用,需在不同平台上编译。文中详细讲解了开发环境搭建、简单插件编写及在 Unity 中调用的方法,包括创建 C# 封装脚本和处理跨平台问题,助力开发者提升游戏开发效率。
291 0
|
3月前
|
图形学 iOS开发 Android开发
从Unity开发到移动平台制胜攻略:全面解析iOS与Android应用发布流程,助你轻松掌握跨平台发布技巧,打造爆款手游不是梦——性能优化、广告集成与内购设置全包含
【8月更文挑战第31天】本书详细介绍了如何在Unity中设置项目以适应移动设备,涵盖性能优化、集成广告及内购功能等关键步骤。通过具体示例和代码片段,指导读者完成iOS和Android应用的打包与发布,确保应用顺利上线并获得成功。无论是性能调整还是平台特定的操作,本书均提供了全面的解决方案。
159 0
|
4月前
|
vr&ar 图形学 开发者
步入未来科技前沿:全方位解读Unity在VR/AR开发中的应用技巧,带你轻松打造震撼人心的沉浸式虚拟现实与增强现实体验——附详细示例代码与实战指南
【8月更文挑战第31天】虚拟现实(VR)和增强现实(AR)技术正深刻改变生活,从教育、娱乐到医疗、工业,应用广泛。Unity作为强大的游戏开发引擎,适用于构建高质量的VR/AR应用,支持Oculus Rift、HTC Vive、Microsoft HoloLens、ARKit和ARCore等平台。本文将介绍如何使用Unity创建沉浸式虚拟体验,包括设置项目、添加相机、处理用户输入等,并通过具体示例代码展示实现过程。无论是完全沉浸式的VR体验,还是将数字内容叠加到现实世界的AR应用,Unity均提供了所需的一切工具。
156 0
|
6月前
|
图形学
【unity小技巧】unity读excel配置表操作,excel转txt文本,并读取txt文本内容,实例说明
【unity小技巧】unity读excel配置表操作,excel转txt文本,并读取txt文本内容,实例说明
225 0
|
6月前
|
图形学
【用unity实现100个游戏之15】开发一个类保卫萝卜的Unity2D塔防游戏4(附项目源码)
【用unity实现100个游戏之15】开发一个类保卫萝卜的Unity2D塔防游戏4(附项目源码)
95 0
|
4月前
|
图形学 C#
超实用!深度解析Unity引擎,手把手教你从零开始构建精美的2D平面冒险游戏,涵盖资源导入、角色控制与动画、碰撞检测等核心技巧,打造沉浸式游戏体验完全指南
【8月更文挑战第31天】本文是 Unity 2D 游戏开发的全面指南,手把手教你从零开始构建精美的平面冒险游戏。首先,通过 Unity Hub 创建 2D 项目并导入游戏资源。接着,编写 `PlayerController` 脚本来实现角色移动,并添加动画以增强视觉效果。最后,通过 Collider 2D 组件实现碰撞检测等游戏机制。每一步均展示 Unity 在 2D 游戏开发中的强大功能。
220 6
|
3月前
|
测试技术 C# 图形学
掌握Unity调试与测试的终极指南:从内置调试工具到自动化测试框架,全方位保障游戏品质不踩坑,打造流畅游戏体验的必备技能大揭秘!
【9月更文挑战第1天】在开发游戏时,Unity 引擎让创意变为现实。但软件开发中难免遇到 Bug,若不解决,将严重影响用户体验。调试与测试成为确保游戏质量的最后一道防线。本文介绍如何利用 Unity 的调试工具高效排查问题,并通过 Profiler 分析性能瓶颈。此外,Unity Test Framework 支持自动化测试,提高开发效率。结合单元测试与集成测试,确保游戏逻辑正确无误。对于在线游戏,还需进行压力测试以验证服务器稳定性。总之,调试与测试贯穿游戏开发全流程,确保最终作品既好玩又稳定。
159 4
|
4月前
|
图形学 缓存 算法
掌握这五大绝招,让您的Unity游戏瞬间加载完毕,从此告别漫长等待,大幅提升玩家首次体验的满意度与留存率!
【8月更文挑战第31天】游戏的加载时间是影响玩家初次体验的关键因素,特别是在移动设备上。本文介绍了几种常见的Unity游戏加载优化方法,包括资源的预加载与异步加载、使用AssetBundles管理动态资源、纹理和模型优化、合理利用缓存系统以及脚本优化。通过具体示例代码展示了如何实现异步加载场景,并提出了针对不同资源的优化策略。综合运用这些技术可以显著缩短加载时间,提升玩家满意度。
288 5
|
3月前
|
前端开发 图形学 开发者
【独家揭秘】那些让你的游戏瞬间鲜活起来的Unity UI动画技巧:从零开始打造动态按钮,提升玩家交互体验的绝招大公开!
【9月更文挑战第1天】在游戏开发领域,Unity 是最受欢迎的游戏引擎之一,其强大的跨平台发布能力和丰富的功能集让开发者能够迅速打造出高质量的游戏。优秀的 UI 设计对于游戏至关重要,尤其是在手游市场,出色的 UI 能给玩家留下深刻的第一印象。Unity 的 UGUI 系统提供了一整套解决方案,包括 Canvas、Image 和 Button 等组件,支持添加各种动画效果。
165 3