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

No Mixed Reality Toolkit, muitas das funcionalidades são fornecidas sob a forma de serviços. Os serviços são agrupados em três categorias principais: sistemas, serviços de extensão e fornecedores de dados.

Sistemas

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

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

Extensões

Os serviços de extensão são componentes que expandem a funcionalidade do Mixed Reality Toolkit. Todos os serviços de extensão têm de especificar que implementam a IMixedRealityExtensionService interface.

Para obter informações sobre como criar serviços de extensão, veja o artigo Serviços de extensão .

Para estar acessível ao MRTK, os serviços de extensão são registados e configurados através da secção Extensões do perfil de configuração do componente MixedRealityToolkit.

Configurar um serviço de extensão

Fornecedores de dados

Os fornecedores de dados são componentes que, segundo o respetivo nome, fornecem dados a um serviço Mixed Reality Toolkit. Todos os fornecedores de dados têm de especificar que implementam a IMixedRealityDataProvider interface.

Nota

Nem todos os serviços exigirão fornecedores de dados. Dos sistemas do Mixed Reality Toolkit, os sistemas de Sensibilização Espacial e de Entrada são os únicos serviços a utilizar fornecedores de dados.

Para estar acessível ao serviço MRTK específico, os fornecedores de dados são registados no perfil de configuração do serviço.

O código da aplicação acede aos fornecedores de dados através da IMixedRealityDataProviderAccess interface. Para simplificar o acesso, os fornecedores de dados também podem ser obtidos através da CoreServices classe auxiliar.

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

Importante

Apesar IMixedRealityDataProvider de herdar do IMixedRealityService, os fornecedores de dados não estão registados no MixedRealityServiceRegistry. Para aceder aos fornecedores de dados, o código da aplicação tem de consultar a instância de serviço para a qual foram registados (por exemplo, sistema de entrada).

Entrada

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

Fornecedores de dados do sistema de entrada

O exemplo seguinte demonstra como aceder ao fornecedor de simulação de entrada e ativar/desativar 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 fornecedor de dados para o sistema de entrada principal também pode ser simplificado através da utilização da classe auxiliar CoreServices .

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

Nota

O sistema de entrada devolve apenas fornecedores de dados que são suportados para a plataforma na qual a aplicação está em execução.

Para obter informações sobre como escrever um fornecedor de dados para o sistema de entrada MRTK, veja Criar um fornecedor de dados do sistema de entrada.

Consciência espacial

O sistema de deteção espacial MRTK utiliza apenas fornecedores de dados que implementam a IMixedRealitySpatialAwarenessObserver interface.

Fornecedores de dados do sistema de sensibilização espacial

O exemplo seguinte demonstra o acesso aos fornecedores de dados de malha espacial registados 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 fornecedor de dados para o principal sistema de sensibilização espacial também pode ser simplificado através da utilização da classe auxiliar CoreServices .

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

Nota

O sistema de deteção espacial devolve apenas os fornecedores de dados que são suportados para a plataforma na qual a aplicação está em execução.

Para obter informações sobre como escrever um fornecedor de dados para o sistema de deteção espacial MRTK, veja Criar um fornecedor de dados do sistema de sensibilização espacial.

Ver também