Coordinar la sincronización del sistema con la comunicación remota holográfica y la API de Windows Mixed Reality
Con la API de Windows Mixed Reality, el sistema de coordenadas de usuario se ajusta a spatialStationaryFrameOfReference.
Sugerencia
Puede encontrar un ejemplo sencillo en los ejemplos remotos y de reproductor dentro del repositorio de github de ejemplos de Holographic Remoting.
Quite la marca de comentario #define ENABLE_USER_COORDINATE_SYSTEM_SAMPLE
dentro de los archivos SampleRemoteApp.h y SamplePlayerMain.h para habilitar el código de ejemplo.
Establecer y actualizar el sistema de coordenadas de usuario en la aplicación player
Para establecer y actualizar el sistema de coordenadas del usuario, llame UpdateUserSpatialFrameOfReference
al contexto del jugador y pase spatialCoordinateSystem a él.
Un SpatialCoordinateSystem puede, por ejemplo, ser spatialStationaryFrameOfReference, SpatialLocatorAttachedFrameOfReference o 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
Con el ejemplo SpatialStationaryFrameOfReference, UpdateUserSpatialFrameOfReference
debe llamarse en un intervalo regular para evitar el desfase después de la pérdida del seguimiento de dispositivos, incluso si el sistema de coordenadas del usuario no ha cambiado.
Obtener el sistema de coordenadas de usuario en la aplicación remota
Para acceder al sistema de coordenadas del usuario, llame GetUserSpatialFrameOfReference
a en el contexto remoto.
GetUserSpatialFrameOfReference
devuelve un SpatialStationaryFrameOfReference, que representa el sistema de coordenadas del usuario.
// In the Remote app:
winrt::Windows::Perception::Spatial::SpatialStationaryFrameOfReference spatialUserFrameOfReference = m_remoteContext.GetUserSpatialFrameOfReference();