Coordenar a sincronização do sistema com a comunicação remota holográfica e a API de Windows Mixed Reality
Com a API Windows Mixed Reality, o sistema de coordenadas do usuário é encapsulado em um SpatialStationaryFrameOfReference.
Dica
Um exemplo simples pode ser encontrado nos exemplos remoto e de player dentro do repositório github de exemplos de Comunicação Remota Holográfica.
Remova o comentário #define ENABLE_USER_COORDINATE_SYSTEM_SAMPLE
dentro dos arquivos SampleRemoteApp.h e SamplePlayerMain.h para habilitar o código de exemplo.
Definir e atualizar o sistema de coordenadas do usuário no aplicativo Player
Para definir e atualizar o sistema de coordenadas do usuário, chame UpdateUserSpatialFrameOfReference
no contexto do player e passe um SpatialCoordinateSystem para ele.
Um SpatialCoordinateSystem pode, por exemplo, ser um SpatialStationaryFrameOfReference, SpatialLocatorAttachedFrameOfReference ou 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 (...)
{
}
Observação
Com o exemplo SpatialStationaryFrameOfReference, UpdateUserSpatialFrameOfReference
deve ser chamado em um intervalo regular para evitar descompasso após a perda de rastreamento de dispositivos, mesmo que o sistema de coordenadas do usuário não tenha sido alterado!
Obter o sistema de coordenadas do usuário no aplicativo remoto
Para acessar o sistema de coordenadas do usuário, chame GetUserSpatialFrameOfReference
no contexto remoto.
GetUserSpatialFrameOfReference
retorna um SpatialStationaryFrameOfReference, que representa o sistema de coordenadas do usuário.
// In the Remote app:
winrt::Windows::Perception::Spatial::SpatialStationaryFrameOfReference spatialUserFrameOfReference = m_remoteContext.GetUserSpatialFrameOfReference();