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

Em Mixed Reality Toolkit, muitas das funcionalidades são entregues sob a forma de serviços. Os serviços são agrupados em três categorias primárias: 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 aparece no perfil de configuração do componente MixedRealityToolkit.

Extensões

Os serviços de extensão são componentes que alargam a funcionalidade de Mixed Reality Toolkit. Todos os serviços de extensão devem especificar que implementam a IMixedRealityExtensionService interface.

Para obter informações sobre a criação de 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 registados e configurados utilizando a 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, pelo seu nome, fornecem dados a um serviço Mixed Reality Toolkit. Todos os fornecedores de dados devem especificar que implementam a IMixedRealityDataProvider interface.

Nota

Nem todos os serviços requerem fornecedores de dados. De Mixed Reality sistemas da Toolkit, os sistemas de Sensibilização para a Entrada e o Espaço são os únicos serviços para utilizar os fornecedores de dados.

Para estarem acessíveis ao serviço MRTK específico, os fornecedores de dados estão registados no perfil de configuração do serviço.

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

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

Importante

Embora IMixedRealityDataProvider herdados de , os fornecedores de IMixedRealityServicedados não estão registados no MixedRealityServiceRegistry. Para aceder aos fornecedores de dados, o código de aplicação deve consultar a instância de serviço para a qual foram registados (ex: 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 a seguir demonstra o acesso ao fornecedor de simulação de entrada e alterna 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 CoreServices classe auxiliar.

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

Nota

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

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

Consciência espacial

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

Fornecedores de dados do sistema de sensibilização espacial

O exemplo a seguir 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 sistema de sensibilização espacial central também pode ser simplificado através da utilização da CoreServices classe auxiliar.

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

Nota

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

Para obter informações sobre a escrita de um fornecedor de dados para o sistema de sensibilização espacial MRTK, consulte a criação de um fornecedor de dados do sistema de sensibilização espacial.

Ver também