Coordenar a Sincronização do Sistema com a Remoting Holográfica e a API de Windows Mixed Reality
Com a API Windows Mixed Reality, o sistema de coordenadas do utilizador é encapsulado numa SpatialStationaryFrameOfReference.
Dica
Pode encontrar um exemplo simples nos exemplos remoto e de leitor no repositório github de exemplos De Remoting Holográfico.
Anule o #define ENABLE_USER_COORDINATE_SYSTEM_SAMPLE
comentário dentro dos ficheiros SampleRemoteApp.h e SamplePlayerMain.h para ativar o código de exemplo.
Definir e Atualizar o Sistema de Coordenadas de Utilizador na Aplicação player
Para definir e atualizar o sistema de coordenadas do utilizador, chame UpdateUserSpatialFrameOfReference
o contexto do leitor e transmita um SpatialCoordinateSystem para o mesmo.
Um SpatialCoordinateSystem pode, por exemplo, ser um SpatialStationaryFrameOfReference, SpatialLocatorAttachedFrameOfReference ou um SpatialAnchor.
// In the Player app:
// Create a stationary frame of reference
winrt::Windows::Perception::Spatial::SpatialStationaryFrameOfReference spatialFrameOfReference = nullptr;
winrt::Windows::Perception::Spatial::SpatialLocator spatialLocator = winrt::Windows::Perception::Spatial::SpatialLocator::GetDefault();
if (spatialLocator != nullptr)
{
spatialFrameOfReference = spatialLocator.CreateStationaryFrameOfReferenceAtCurrentLocation(float3(0.0f, 0.0f, 0.0f), quaternion(0, 0, 0, 1), 0.0);
}
...
// Update the user coordinate system with the coordinate system of the spatial frame of reference
try
{
SpatialCoordinateSystem userCoordinateSystem = spatialFrameOfReference.CoordinateSystem();
m_playerContext.UpdateUserSpatialFrameOfReference(userCoordinateSystem);
}
catch (...)
{
}
Nota
Com o exemplo SpatialStationaryFrameOfReference, UpdateUserSpatialFrameOfReference
tem de ser chamado num intervalo regular para evitar desvios após a perda de controlo de dispositivos, mesmo que o sistema de coordenadas do utilizador não tenha sido alterado!
Obter o Sistema de Coordenadas de Utilizador na Aplicação Remota
Para aceder ao sistema de coordenadas do utilizador, chame GetUserSpatialFrameOfReference
o contexto remoto.
GetUserSpatialFrameOfReference
devolve um SpatialStationaryFrameOfReference, que representa o sistema de coordenadas do utilizador.
// In the Remote app:
winrt::Windows::Perception::Spatial::SpatialStationaryFrameOfReference spatialUserFrameOfReference = m_remoteContext.GetUserSpatialFrameOfReference();