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 .
- BoundarySystem
- CameraSystem
- DiagnosticsSystem
- InputSystem
- SceneSystem
- SpatialAwarenessSystem
- TeleportSystem
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.
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 IMixedRealityService
dados 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
.
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.
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.