Sistemas, serviços de extensão e provedores de dados

No Realidade Misturada Toolkit, muitos dos recursos são entregues na forma de serviços. Os serviços são agrupados em três categorias primárias: sistemas, serviços de extensão e provedores de dados.

Sistemas

Os sistemas são serviços que fornecem a funcionalidade principal do Realidade Misturada Toolkit. Todos os sistemas são implementações da IMixedRealityService interface.

Cada um dos sistemas listados é exibido no perfil de configuração do componente MixedRealityToolkit.

Extensões

Os serviços de extensão são componentes que estendem a funcionalidade do Realidade Misturada Toolkit. Todos os serviços de extensão devem especificar que implementam a IMixedRealityExtensionService interface.

Para obter informações sobre como criar serviços de extensão, faça referência ao artigo serviços de extensão .

Para ser acessível ao MRTK, os serviços de extensão são registrados e configurados usando a seção Extensões do perfil de configuração do componente MixedRealityToolkit.

Configuring an extension service

Provedores de dados

Os provedores de dados são componentes que, por seu nome, fornecem dados para um serviço Realidade Misturada Toolkit. Todos os provedores de dados devem especificar que implementam a IMixedRealityDataProvider interface.

Observação

Nem todos os serviços exigirão provedores de dados. Dos sistemas do Realidade Misturada Toolkit, os sistemas de Entrada e Reconhecimento Espacial são os únicos serviços a utilizar provedores de dados.

Para ser acessível ao serviço MRTK específico, os provedores de dados são registrados no perfil de configuração do serviço.

O código do aplicativo acessa provedores de dados por meio da IMixedRealityDataProviderAccess interface. Para simplificar o acesso, os provedores de dados também podem ser recuperados por meio da CoreServices classe auxiliar.

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

Importante

Embora IMixedRealityDataProvider herde, os provedores de IMixedRealityServicedados não estão registrados com o MixedRealityServiceRegistry. Para acessar provedores de dados, o código do aplicativo deve consultar a instância de serviço para a qual eles foram registrados (ex: sistema de entrada).

Entrada

O sistema de entrada MRTK utiliza apenas provedores de dados que implementam o IMixedRealityInputDeviceManager.

Input system data providers

O exemplo a seguir demonstra o acesso ao provedor de simulação de entrada e a alternância da propriedade SmoothEyeTracking.

IMixedRealityDataProviderAccess dataProviderAccess = CoreServices.InputSystem as IMixedRealityDataProviderAccess;

if (dataProviderAccess != null)
{
    IInputSimulationService inputSimulation =
        dataProviderAccess.GetDataProvider<IInputSimulationService>();

    if (inputSimulation != null)
    {
        inputSimulation.SmoothEyeTracking = !inputSimulation.SmoothEyeTracking;
    }
}

O acesso a um provedor de dados para o sistema de entrada principal também pode ser simplificado por meio do uso da CoreServices classe auxiliar.

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

Observação

O sistema de entrada retorna apenas provedores de dados com suporte para a plataforma na qual o aplicativo está em execução.

Para obter informações sobre como escrever um provedor de dados para o sistema de entrada MRTK, consulte a criação de um provedor de dados do sistema de entrada.

Conscientização espacial

O sistema de reconhecimento espacial MRTK utiliza apenas provedores de dados que implementam a IMixedRealitySpatialAwarenessObserver interface.

Spatial awareness system data providers

O exemplo a seguir demonstra o acesso aos provedores de dados de malha espacial registrados e a alteração da visibilidade das malhas.

IMixedRealityDataProviderAccess dataProviderAccess =
    CoreServices.SpatialAwarenessSystem as IMixedRealityDataProviderAccess;

if (dataProviderAccess != null)
{
    IReadOnlyList<IMixedRealitySpatialAwarenessMeshObserver> observers =
        dataProviderAccess.GetDataProviders<IMixedRealitySpatialAwarenessMeshObserver>();

    foreach (IMixedRealitySpatialAwarenessMeshObserver observer in observers)
    {
        // Set the mesh to use the occlusion material
        observer.DisplayOption = SpatialMeshDisplayOptions.Occlusion;
    }
}

O acesso a um provedor de dados para o sistema de reconhecimento espacial principal também pode ser simplificado por meio do uso da CoreServices classe auxiliar.

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

Observação

O sistema de reconhecimento espacial retorna apenas provedores de dados com suporte para a plataforma na qual o aplicativo está em execução.

Para obter informações sobre como escrever um provedor de dados para o sistema de reconhecimento espacial mrtk, consulte a criação de um provedor de dados do sistema de reconhecimento espacial.

Confira também