你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
快速入门:深度 MRTK 演练
本指南将深入介绍 Azure Object Anchors MRTK Unity 示例应用程序, 目的在于提供对示例设计的见解。 通过阅读本指南,开发者可以快速理解示例中的 Azure Object Anchors 概念。
项目布局
为 Azure Object Anchors MRTK Unity 示例创建的资产存储在 Assets\MixedReality.AzureObjectAnchors
中。 子文件夹如下所示:
-
图标
- 包含面向用户的菜单中使用的一些自定义图标。
-
材料
- 包含用于曲面重建可视化效果的着色器和材料以及一个“仅深度”着色器,该着色器写入深度缓冲区,以帮助围绕文本实现全息影像稳定。
- 预制
- 包含可重用的 Unity
GameObjects
。 具体而言,TrackableObjectPrefab
表示 Azure Object Anchors 在检测到对象时创建的对象。
- 包含可重用的 Unity
-
Profiles
- 包含自定义的 MRTK 配置文件,用于描述启用应用程序时 MRTK 中所需的最低功能。
- 场景
- 包含
AOASampleTestScene
,它是本示例中的主要场景。
- 包含
-
脚本
- 包含为示例编写的脚本。
Unity 场景
混合现实播放空间 - 主要是样板 MRTK
- 介绍 MRTK for Unity
- 相机上附加了一个 UI,用于详细说明 Azure Object Anchors 的整体状态(请参阅
OverlayDebugText.cs
)。
对象混合现实播放空间 – 主要与 Azure Object Anchors 相关,但也与有些 MRTK 控件相关。 附加到父级的两个脚本 TrackableObjectSearch
和 ObjectTracker
表示与 Azure Object Anchors 的主接口。
-
菜单
- 主要是 MRTK 代码,但 UI 交互面向 Azure Object Anchors 功能。
- 附加的
TrackableObjectMenu
脚本执行将 MRTK UI 事件路由到相应 Azure Object Anchors 调用的主要作业。 - MRTK 手动菜单。
- WorkspaceBoundingBox
- 包含与控制边界框关联的 MRTK 脚本。
- 还包含一个
ModelVis
子对象,用于在检测之前可视化 Azure Object Anchors 模型,以便在复杂检测期间帮助对齐。
菜单演练
在深入了解脚本之前,我们先浏览一下菜单项。 这样,我们就可以引用这些菜单项如何与脚本交互。
底部和右侧的子菜单不会自动显示,分别使用 Search Area Settings
和 Tracker Settings
切换。
主菜单
- 开始搜索
- 开始搜索指定搜索区域中的对象。
- 切换空间映射
- 在搜索时显示空间映射之间循环,始终是显示空间映射和从不显示空间映射。
- 跟踪器设置/搜索区域设置
- 切换其各自的子菜单。
- 启动跟踪/停止跟踪
- 开始或结束诊断跟踪。
- 上传跟踪
- 将诊断跟踪上传到 Microsoft 进行调试分析。
跟踪器设置
- 高精度
- 启用后,
ObjectInstanceTrackingMode
设置为HighLatencyAccuratePosition
。 - 禁用后,
ObjectInstanceTrackingMode
设置为LowLatencyCoarsePosition
。
- 启用后,
-
宽松垂直对齐
- 启用后,
AllowedVerticalOrientationInDegrees
设置为 10 度。 此功能允许检测渐变的对象。 - 禁用后,
AllowedVerticalOrientationInDegrees
设置为 0 度。
- 启用后,
-
允许更改比例
- 启用后,
MaxScaleChange
设置为 0.1。 此功能允许 Azure Object Anchors 根据 HoloLens 的跟踪缩放调整来调整对象的比例。 - 禁用后,
MaxScaleChange
设置为 0。
- 启用后,
- 覆盖率滑块
- 调整对象检测所需的覆盖率,以考虑匹配项。 值越低,检测频率越高。 此功能可能很适合难以检测的对象,但也可能导致对象检测误报增加。
搜索区域设置
- 锁定搜索区域
- 启用后,将阻止用户更改搜索区域。
- 自动调整搜索区域
- 启用后,允许脚本移动搜索区域以优化检测过程。
- 循环网格
- 在可检测到
.ou
对象的网格与无网格之间循环。
- 在可检测到
脚本
- AutonomousSearchArea.cs
- 此脚本附加到
WorkspaceBoundingBox
。 该脚本尝试自动缩放并放置WorkspaceBoundingBox
。 启用Auto-Adjust Search Area
时,它也会随之启用。
- 此脚本附加到
- ObjectAnchorsSubscription.cs
- 此脚本包装上传诊断数据所需的信息。
- ObjectTracker.cs
- 此脚本桥接 Unity 与 Azure Object Anchors SDK 的检测方面。
- ObjectTrackerDiagnostics.cs
- 此脚本管理 Azure Object Anchors SDK 的诊断功能。
- OverlayDebugText.cs
- 此脚本附加到主相机。 负责向用户显示示例和 Azure Object Anchors 的总体状态。
- PositionDebugInfo.cs
- 此脚本只负责强制向用户显示附加到所检测到对象的调试文本。
- SearchAreaController.cs
- 此脚本管理用于指示 Azure Object Anchors 搜索对象时所用位置的
WorkspaceBoundingBox
的状态。
- 此脚本管理用于指示 Azure Object Anchors 搜索对象时所用位置的
- SearchAreaModelVisualization.cs
- 此脚本可启用
Search Area Settings
下的Cycle Mesh
功能。
- 此脚本可启用
- SpatialMappingController.cs
- 此脚本根据与
Main Menu
下Toggle Spatial Mapping
的交互管理何时应启用空间映射。
- 此脚本根据与
- TextToSpeech.cs
- 此脚本可接受文本并会将文本转换为语音。
- TrackableObjectData.cs
- 此脚本表示可跟踪的对象的数据。
- TrackableObjectDataLoader.cs
- 此脚本执行加载
.ou
文件并将其转换为TrackableObjectData
项的工作。
- 此脚本执行加载
- TrackableObjectMenu.cs
- 大多数用户交互会从 UI 流向此脚本,然后流向相应的脚本。 例如,
TrackableObjectMenu
具有ToggleSpatialMapping
,后者会路由到SpatialMappingController
。
- 大多数用户交互会从 UI 流向此脚本,然后流向相应的脚本。 例如,
- TrackableObjectSearch.cs
- 此脚本可对搜索区域执行一些轻型管理。 具体而言,用户进入空间的交互,以及将搜索框置于用户前面。 此外,它还可以在程序搜索时或检测到对象时避免呈现搜索框内部,以防止完全呈现遮挡对象。
- TrackedObject.cs
-
TrackableObjectPrefab
上的主脚本。 用于维护 Azure Object Anchors 所检测到对象的可视化状态。
-
- TrackedObjectData.cs
- 此脚本包含有关 Azure Object Anchors 当前所跟踪对象的信息。
预制
- TrackableObjectPrefab
- AzureObjectAnchors 检测到对象时创建的预制件。 此预制件的子元素
LogicalCenter
表示对象的中心,是尝试将子内容附加至所检测到的对象时适当的开始位置。 示例显示的信息文本将附加到此逻辑中心。
- AzureObjectAnchors 检测到对象时创建的预制件。 此预制件的子元素