Koordinatensystemsynchronisierung mit Holographic Remoting und der Windows Mixed Reality-API
Mit der Windows Mixed Reality-API wird das Benutzerkoordinatensystem in einen SpatialStationaryFrameOfReference umschlossen.
Tipp
Ein einfaches Beispiel finden Sie in den Remote- und Playerbeispielen im GitHub-Repository für Holographic Remoting-Beispiele.
Heben Sie die Auskommentierung #define ENABLE_USER_COORDINATE_SYSTEM_SAMPLE
in den Dateien SampleRemoteApp.h und SamplePlayerMain.h auf, um den Beispielcode zu aktivieren.
Festlegen und Aktualisieren des Benutzerkoordinatensystems in der Player-App
Um das Benutzerkoordinatensystem festzulegen und zu aktualisieren, rufen Sie UpdateUserSpatialFrameOfReference
im Playerkontext auf, und übergeben Sie ein SpatialCoordinateSystem an diesen.
Ein SpatialCoordinateSystem kann z. B. ein SpatialStationaryFrameOfReference,SpatialLocatorAttachedFrameOfReference oder ein SpatialAnchor sein.
// 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 (...)
{
}
Hinweis
Mit dem Beispiel SpatialStationaryFrameOfReference muss in regelmäßigen Abständen aufgerufen werden, UpdateUserSpatialFrameOfReference
um Abweichungen nach verlust der Geräteverfolgung zu vermeiden, auch wenn sich das Benutzerkoordinatensystem nicht geändert hat!
Abrufen des Benutzerkoordinatensystems in der Remote-App
Rufen GetUserSpatialFrameOfReference
Sie für den Remotekontext auf, um auf das Benutzerkoordinatensystem zuzugreifen.
GetUserSpatialFrameOfReference
gibt ein SpatialStationaryFrameOfReference zurück, das das Benutzerkoordinatensystem darstellt.
// In the Remote app:
winrt::Windows::Perception::Spatial::SpatialStationaryFrameOfReference spatialUserFrameOfReference = m_remoteContext.GetUserSpatialFrameOfReference();