本文使用的MRTK版本是2.4.0
边界框
MRTK的BoundingBox.cs
脚本提供了在混合现实中转换对象的基本功能。边界框将在全息图周围显示一个立方体,以指示可以与之交互。立方体角和边缘上的手柄允许缩放或旋转对象。边框也会对用户输入做出反应。例如,在HoloLens 2上,边框对手指的接近做出响应,提供视觉反馈以帮助感知与物体的距离。所有交互和视觉效果都可以轻松自定义。
添加边框
基于上次制作的可操作3D对象添加一个边界框,以便可以轻松移动,旋转和缩放整个体验。
在“层次结构”窗口中,选择你的3D对象,然后在“检查器”窗口中,使用“添加组件”按钮添加以下组件:
- BoundingBox 组件
注意
- BoundingBox组件将在运行时自动添加NearInteractionGrabbable组件。因此,我们不需要添加此组件即可使用跟踪的手抓取封闭的对象。
边界框样式
(这张图来自官方)
默认情况下,当您只分配BoundingBox.cs
脚本时,它将显示HoloLens 1的样式。如果要使用HoloLens 2样式的手柄,您需要分配适当的手柄预制件和材料。
Handle:
- 手柄材质:BoundingBoxHandleWhite.mat
- 处理的材质:BoundingBoxHandleBlueGrabbed.mat
- 比例尺预制件:MRTK_BoundingBox_ScaleHandle.prefab
- 秤手柄板岩预制件:MRTK_BoundingBox_ScaleHandle_Slate.prefab
- 刻度尺尺寸:0.016(1.6cm)
- Scale Handle Collider填充物:0.016(使可抓取的Collider略大于手柄的视觉效果)
- 旋转手柄预制:MRTK_BoundingBox_RotateHandle.prefab
- 旋转手柄尺寸:0.016
- 旋转手柄碰撞器填充:0.016(使可抓取的碰撞器略大于手柄视觉效果)
Proximity:
(根据与手的距离显示和隐藏带有动画的手柄。它具有两步缩放动画)
- 接近效果激活:启用基于接近度的手柄激活
- 处理中等接近度:第一步缩放的距离
- 处理接近距离:第二步缩放的距离
- 远比例尺:当手超出边界框交互范围时,手柄资产的默认比例值(上面由- “手柄中等接近度”定义的距离。默认情况下使用0隐藏手柄)
- 中等比例:当手在边界框交互作用范围内时,手柄资产的比例值(上面的- - 距离由“手柄闭合接近度”定义。使用1表示正常尺寸)
- 闭合比例:当手在抓斗交互作用范围内时,手柄资产的比例值(上面的距离由“手柄闭合接近度”定义。使用1.x可以显示更大的尺寸)
如何激活/唤醒边界框
有几个选项可以激活边界框界面。
- Activate On Start:一旦场景开始,边界框将变为可见。
- Activate By Proximity:当关节的手靠近对象时,边界框变为可见。
- Activate By Pointer:当手射线指示器瞄准边界框时,该边界框将变为可见。
- Activate Manually:边界框不会自动显示。您可以通过访问boundingBox.Active属性通过脚本手动激活它。
边界框触发事件
边界框提供以下事件。本示例使用这些事件来播放音频反馈。
Rotate Started:旋转开始时触发。
Rotate Ended:旋转结束时触发。
Scale Started:缩放结束时触发。
Scale Ended:缩放结束时触发。
未确认的内容:
为了使包围盒边缘在使用ManipulationHandler远距离交互移动时具有相同的行为,建议将其在On Manipulation Started / On Manipulation Ended的事件分别连接到BoundingBox.HighlightWires/ BoundingBox.UnhighlightWires,如上面的屏幕快照所示。
我虽然也这么做了,但是我没有看出加于不加的区别
存在的问题:
- 不过我加完似乎没有缩放的内容了?
嗷不是,是因为激活边框的时候我选择的是靠近激活 我在unity中手无法靠近欸?所以没有显示缩放和旋转的提示图标。换回两种都可的那个就行了
- 让边框和模型更贴合