Synchronisation du système de coordonnées avec la communication à distance holographique et l’API Windows Mixed Reality
Avec l’API Windows Mixed Reality, le système de coordonnées utilisateur est encapsulé dans un SpatialStationaryFrameOfReference.
Conseil
Vous trouverez un exemple simple dans les exemples de lecteur et à distance à l’intérieur du référentiel github d’exemples de communication à distance holographiques.
Supprimez #define ENABLE_USER_COORDINATE_SYSTEM_SAMPLE
les marques de commentaire dans les fichiers SampleRemoteApp.h et SamplePlayerMain.h pour activer l’exemple de code.
Définir et mettre à jour le système de coordonnées utilisateur dans l’application Lecteur
Pour définir et mettre à jour le système de coordonnées utilisateur, appelez UpdateUserSpatialFrameOfReference
le contexte du joueur et transmettez-y un SpatialCoordinateSystem .
Un SpatialCoordinateSystem peut, par exemple, être un SpatialStationaryFrameOfReference, SpatialLocatorAttachedFrameOfReference ou un 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 (...)
{
}
Notes
Avec l’exemple SpatialStationaryFrameOfReference, UpdateUserSpatialFrameOfReference
doit être appelé à intervalles réguliers pour éviter la dérive après la perte du suivi des appareils, même si le système de coordonnées utilisateur n’a pas changé !
Obtenir le système de coordonnées utilisateur dans l’application distante
Pour accéder au système de coordonnées utilisateur, appelez GetUserSpatialFrameOfReference
sur le contexte distant.
GetUserSpatialFrameOfReference
retourne un SpatialStationaryFrameOfReference, qui représente le système de coordonnées utilisateur.
// In the Remote app:
winrt::Windows::Perception::Spatial::SpatialStationaryFrameOfReference spatialUserFrameOfReference = m_remoteContext.GetUserSpatialFrameOfReference();