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.
- BoundarySystem
- CameraSystem
- DiagnósticoSistema
- InputSystem
- SceneSystem
- SpatialAwarenessSystem
- TeleportSystem
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.
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
.
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.
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.