Systeemsynchronisatie coördineren met holografische externe communicatie en de Windows Mixed Reality-API
Met de Windows Mixed Reality-API wordt het systeem voor gebruikerscoördinaat verpakt in een SpatialStationaryFrameOfReference.
Tip
Een eenvoudig voorbeeld vindt u in de voorbeelden voor externe en spelers in de GitHub-opslagplaats holographic Remoting-voorbeelden.
Verwijder de opmerking #define ENABLE_USER_COORDINATE_SYSTEM_SAMPLE
in de bestanden SampleRemoteApp.h en SamplePlayerMain.h om de voorbeeldcode in te schakelen.
Het gebruikerscoördinaatsysteem instellen en bijwerken in de Player-app
Als u het gebruikerscoördinaatsysteem wilt instellen en bijwerken, roept u UpdateUserSpatialFrameOfReference
de spelercontext aan en geeft u een SpatialCoordinateSystem door.
Een SpatialCoordinateSystem kan bijvoorbeeld een SpatialStationaryFrameOfReference, SpatialLocatorAttachedFrameOfReference of een SpatialAnchor zijn.
// 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 (...)
{
}
Notitie
Met de voorbeeld SpatialStationaryFrameOfReferenceUpdateUserSpatialFrameOfReference
, moet worden aangeroepen in een regelmatig interval om drift te voorkomen na verlies van apparaattracering, zelfs als het gebruikerscoördinaatsysteem niet is gewijzigd!
Het gebruikerscoördinaatsysteem ophalen in de externe app
Roep GetUserSpatialFrameOfReference
aan in de externe context om toegang te krijgen tot het systeem voor gebruikerscoördinaat.
GetUserSpatialFrameOfReference
retourneert een SpatialStationaryFrameOfReference, die het gebruikerscoördinaatsysteem vertegenwoordigt.
// In the Remote app:
winrt::Windows::Perception::Spatial::SpatialStationaryFrameOfReference spatialUserFrameOfReference = m_remoteContext.GetUserSpatialFrameOfReference();