Dela via


Samordna systemsynkronisering med Holographic Remoting och Windows Mixed Reality-API:et

Med Windows Mixed Reality-API:et omsluts systemet för användarkoordinat i en SpatialStationaryFrameOfReference.

Tips

Ett enkelt exempel finns i fjärr- och spelarexemplen i github-lagringsplatsen Holographic Remoting Samples. Ta bort kommentarer #define ENABLE_USER_COORDINATE_SYSTEM_SAMPLE i SampleRemoteApp.h- och SamplePlayerMain.h-filerna för att aktivera exempelkoden.

Ange och uppdatera systemet för användarkoordinat i player-appen

Om du vill ange och uppdatera systemet för användarkoordinat anropar UpdateUserSpatialFrameOfReference du spelarkontexten och skickar ett SpatialCoordinateSystem till det. Ett SpatialCoordinateSystem kan till exempel vara en SpatialStationaryFrameOfReference, SpatialLocatorAttachedFrameOfReference eller en 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 (...)
{
}

Anteckning

Med exemplet SpatialStationaryFrameOfReferenceUpdateUserSpatialFrameOfReference måste anropas med jämna mellanrum för att undvika drifting efter förlust av enhetsspårning, även om systemet för användarkoordinat inte har ändrats!

Hämta systemet för användarkoordinat i fjärrappen

Om du vill komma åt systemet för användarkoordinat anropar GetUserSpatialFrameOfReference du fjärrkontexten. GetUserSpatialFrameOfReference returnerar en SpatialStationaryFrameOfReference som representerar användarens koordinatsystem.

// In the Remote app:
winrt::Windows::Perception::Spatial::SpatialStationaryFrameOfReference spatialUserFrameOfReference = m_remoteContext.GetUserSpatialFrameOfReference();

Se även