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

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 principais: 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 kit de ferramentas Realidade Misturada. 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, consulte o artigo Serviços de extensão .

Para serem acessíveis 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.

Configurando um serviço de extensão

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 serem acessíveis ao serviço ESPECÍFICO do MRTK, 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 de , os provedores de IMixedRealityServicedados não sã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 (por exemplo, sistema de entrada).

Entrada

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

Provedores de dados do sistema de entrada

O exemplo a seguir demonstra como acessar o provedor de simulação de entrada e alternar a 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 criando um provedor de dados do sistema de entrada.

Conscientização espacial

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

Provedores de dados do sistema de reconhecimento espacial

O exemplo a seguir demonstra como acessar os provedores de dados de malha espacial registrados e alterar a 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 do MRTK, consulte criando um provedor de dados do sistema de reconhecimento espacial.

Confira também