mrtk_developmentreleases/2.0.0releases/2.1.0releases/2.2.0
  • 指南
  • API 文档
  • 指南
  • 架构
  • 系统,扩展服务和 data providers

    Show / Hide Table of Contents
    • MRTK入门
      • 发布说明
      • MRTK包内容
      • 从早期版本更新
      • 从HTK更新
      • 生成和部署MRTK
      • NuGet包
      • MRTK配置对话框
      • 开始使用 MRTK和XR SDK
      • 性能
      • 全息图稳定
      • 在大型项目中使用MRTK
    • 架构
      • 概述
      • 框架和运行时
      • 输入系统
        • 术语
        • 核心系统
        • Controllers, pointers, and focus
      • 系统,扩展服务和 data providers
    • 功能概述
      • 边界系统 Boundary System
        • 边界系统概述
        • 配置边界可视化
      • 相机系统 Camera System
        • 相机系统概述
        • Camera Settings Providers
          • Windows 混合现实相机设置
          • Unity AR相机设置[实验性]
          • 创建camera settings provider
      • 跨平台支持
        • 为iOS和Android配置MRTK
      • 检测平台能力
      • 诊断系统 Diagnostics System
        • 诊断系统概述
        • 配置诊断系统
        • 使用可视化分析器
      • 扩展服务 Extension Services
        • 扩展服务创建向导
        • 场景过渡服务概述
      • 输入系统 Input System
        • 输入概览
        • 输入动作 Input Actions
        • 输入事件 Input Events
        • Input Providers
          • Input Providers 概述
          • 创建一个 input data provider
        • 控制器 Controllers
        • 眼动跟踪 Eyes
          • 概述
          • 入门
          • 通过代码访问数据
          • 验证跟踪校准 Validate Tracking Calibration
        • 凝视 Gaze
        • 手势 Gestures
        • 手部 Hands
        • 如何添加近距离交互 Near Interaction
        • 编辑器内输入模拟 In-Editor Input Simulation
        • 指针 Pointers
        • 语音输入 Voice Input
          • 语音转录 Dictation
          • 语音(命令和控制) Speech
      • 多场景系统 Multi Scene System
        • 多场景系统概述
        • 场景类型 Scene Types
        • 内容场景加载 Content Scene Loading
        • 监测内容加载 Monitoring Content Loading
        • 光照场景操作 Lighting Scene Operations
      • 打包 Packaging
        • MRTK包 MRTK Packages
        • MRTK模块化 MRTK Modularization
      • 配置文件 Profiles
        • 配置文件概述
        • 配置指南 Configuration Guide
      • 渲染 Rendering
        • 材质实例概述 Material Instance Overview
        • Shaders
          • MRTK标准着色器 MRTK Standard Shader
      • 服务 Services
        • 什么是混合现实特性
        • 什么是 MixedRealityServiceRegistry 和IMixedRealityServiceRegistrar
        • 扩展服务 Extension services
      • 空间感知系统 Spatial Awareness System
        • 空间感知概述
        • Spatial Observers
          • 为设备配置 Observers
          • 为Editor配置 Observers
          • 通过代码控制 Observers
          • 创建自定义 Observer
      • 传送系统概述 Teleport System Overview
      • 工具
        • Dependency Window
        • Extension Service Creation Wizard
        • Holographic Remoting
        • Input Animation Recording
          • Input Animation File Format Specification
        • Optimize Window
        • Runtime tools
          • Controller Mapping tool
      • UX 构建模块
        • 工具箱窗口 Toolbox Window
        • 按钮 Button
        • 边界框 Bounding Box
        • 对象操纵器 Object Manipulator
        • Manipulation Handler [废弃]
        • Slate
        • 系统键盘 System Keyboard
        • 可交互的 Interactable
        • Solvers
          • 点击放置 Tap to Place
        • 对象集合 Object Collection
        • 提示工具条 Tooltips
        • 滑动条 Slider
        • 手部菜单 Hand Menu
        • 近处菜单 Near Menu
        • 应用程序栏 App Bar
        • 指尖可视化 Fingertip Visualization
        • 进度指示器 Progress Indicator
        • 对话框 Dialog [实验性]
        • 手势教学 Hand Coach [实验性]
        • 可滚动对象集合 Scrolling Object Collection [实验性]
        • 脉冲着色器 Pulse Shader [实验性]
        • 停靠控件 Dock Control [实验性]
        • HoloLens键盘助手 [实验性]
      • 示例场景
        • 示例中心
        • 手势交互示例场景
        • 眼动跟踪示例场景
    • Contributing
      • Contributing Overview
      • Coding Guidelines
      • Writing and Running Tests
      • Writing Documentation
      • Pull Requests
      • Experimental Features
      • Breaking Changes
      • How to use DocFX
    • Planning
      • Roadmap
    • Notice
    • Authors

    系统,扩展服务和数据提供者

    在混合现实工具包中,许多功能以服务形式提供。服务分为三大类:系统,扩展服务和数据提供者(systems, extension services and data providers.)。

    Systems (系统)

    系统是提供混合现实工具包核心功能的服务。所有系统都实现了 IMixedRealityService 接口.

    • 边界系统
    • 相机系统
    • 诊断系统
    • 输入系统
    • 场景系统
    • 空间感知系统
    • 传送系统

    列出的每个系统都出现在MixedRealityToolkit组件的配置文件中。

    Extensions (扩展)

    扩展服务是扩展“混合现实工具包”功能的组件。所有扩展服务都实现了 IMixedRealityExtensionService 接口。

    有关创建扩展服务的信息,请参考扩展服务 article.

    为了使MRTK可以访问,扩展服务是使用MixedRealityToolkit组件的配置文件的“Extensions”部分进行注册和配置的。

    Configuring an extension service

    Data Providers (数据提供者)

    数据提供者是向“混合现实工具包”服务提供数据的组件。所有数据提供者都实现了 IMixedRealityDataProvider 接口。

    Note

    并非所有服务都需要数据提供者。在Mixed Reality Toolkit的系统中,输入和空间感知系统是唯一利用数据提供者的服务。

    为了使特定MRTK服务可以访问,数据提供者已在服务的配置文件中注册。

    应用程序代码通过IMixedRealityDataProviderAccess 接口访问数据提供者。 为了简化访问,数据提供者也可以通过CoreServices助手类来检索。

    var inputSimulationService = CoreServices.GetDataProvider<IInputSimulationService>(CoreServices.InputSystem);
    
    Important

    尽管ImixedRealityDataProvider继承自ImixedRealityService,但数据提供者未在MixedRealityServiceRegistry中注册。要访问数据提供者,应用程序代码必须查询它们注册的服务实例(例如:输入系统)。

    Input (输入)

    MRTK输入系统仅使用实现IMixedRealityInputDeviceManager接口的数据提供者。

    Input system data providers

    下面的示例演示如何访问输入模拟提供者(input simulation provider)并切换SmoothEyeTracking属性。

    IMixedRealityDataProviderAccess dataProviderAccess = CoreServices.InputSystem as IMixedRealityDataProviderAccess;
    
    if (dataProviderAccess != null)
    {
        IInputSimulationService inputSimulation =
            dataProviderAccess.GetDataProvider<IInputSimulationService>();
    
        if (inputSimulation != null)
        {
            inputSimulation.SmoothEyeTracking = !inputSimulation.SmoothEyeTracking;
        }
    }
    

    为了简化访问,数据提供者也可以通过CoreServices助手类来检索。

    var inputSimulationService = CoreServices.GetInputSystemDataProvider<IInputSimulationService>();
    if (inputSimulationService != null)
    {
        // do something here
    }
    
    Note

    输入系统仅返回运行该应用程序的平台所支持的数据提供者。

    有关为MRTK输入系统编写数据提供者的信息,请参见创建输入系统数据提供者.

    Spatial Awareness (空间感知)

    MRTK空间感知系统仅使用实现 IMixedRealitySpatialAwarenessObserver 接口的数据提供者。

    Spatial awareness system data providers

    以下示例演示如何访问已注册的空间网格数据提供者(spatial mesh data providers)并更改网格的可见性。

    IMixedRealityDataProviderAccess dataProviderAccess =
        CoreServices.SpatialAwarenessSystem as IMixedRealityDataProviderAccess;
    
    if (dataProviderAccess != null)
    {
        IReadOnlyList<IMixedRealitySpatialAwarenessMeshObserver> observers =
            dataProviderAccess.GetDataProviders<IMixedRealitySpatialAwarenessMeshObserver>();
    
        foreach (IMixedRealitySpatialAwarenessMeshObserver observer in observers)
        {
            // 设置网格以使用遮挡材质
            observer.DisplayOption = SpatialMeshDisplayOptions.Occlusion;
        }
    }
    

    访问核心空间感知系统的数据提供者也可以通过使用CoreServices 助手类来简化访问。

    var dataProvider = CoreServices.GetSpatialAwarenessSystemDataProvider<IMixedRealitySpatialAwarenessMeshObserver>();
    if (dataProvider != null)
    {
        // do something here
    }
    
    Note

    空间感知系统仅返回运行该应用程序的平台所支持的数据提供者。

    有关编写MRTK空间感知系统数据提供者的信息,请参见创建空间感知系统数据提供者.

    建议浏览

    • 是什么构成了混合现实功能
    • 扩展服务
    • 创建输入系统数据提供者
    • 创建空间感知系统的系统数据提供者
    • IMixedRealityService 接口
    • IMixedRealityDataProvider 接口
    • IMixedRealityExtensionService 接口
    • Improve this Doc
    In This Article
    • Systems (系统)
    • Extensions (扩展)
    • Data Providers (数据提供者)
      • Input (输入)
      • Spatial Awareness (空间感知)
    • 建议浏览
    Back to top Generated by DocFX