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

No Kit de Ferramentas de Realidade Mista, 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 Conjunto de Ferramentas de Realidade Mista. Todos os sistemas são implementações da IMixedRealityService interface.

Cada um dos sistemas listados aparece no perfilde configuração do componente MixedRealityToolkit .

Extensões

Os serviços de extensão são componentes que alargam a funcionalidade do Conjunto de Ferramentas de Realidade Mista. 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 de Ferramentas de Realidade Mista. Todos os fornecedores de dados devem especificar que implementam a IMixedRealityDataProvider interface.

Nota

Nem todos os serviços requerem fornecedores de dados. Dos sistemas do Mixed Reality 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 IMixedRealityService , os fornecedores de dados 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