Ahhoz, hogy a vegyes valósági rendszerek megfelelően működjenek, a headsetet a környezethez viszonyítva kell nyomon követni. Ez a relatív nyomon követés lehetővé teszi, hogy a grafikus elemek úgy jelenjenek meg a headset felhasználója számára, hogy szilárdan zárolva legyenek a környezetben. A nyomon követés általában olyan pózok kombinálásával érhető el, amelyeket külső kamerákkal és az inerciális mértékegységből (IMU) származó mérések alapján számítunk ki. Ez a módszer akkor működik jól, ha a környezet a referencia inerciális keretében van. A kis hatások, mint a bolygó mozgása, általában figyelmen kívül hagyják.
Ha a környezet nem szerepel az inerciális referenciakeretben, a normál fejkövető rendszer meghibásodik. A Mozgóplatform mód funkció úgy oldja meg ezt a problémát, hogy a környezetnek az inerciális kerethez viszonyított mozgását számolja. Így a Platform módban HoloLens 2 a környezethez rögzítettnek tűnő hologramokat renderelhet, még akkor is, ha a környezet lurching hajó!
Hogyan aktiválhatom a Mozgóplatform üzemmódot?
A használati esetek széles körének engedélyezéséhez különböző módszereket biztosítottunk a mozgóplatform-üzemmód aktiválásához. Fontos, hogy alaposan gondolja át, melyik módszert válassza. A legfontosabb kérdés a következő: Ki tudja, hogy a HoloLens 2 jelenleg egy mozgó platformon belül van-e? Példaként tekintse meg az alábbi táblázatot:
A felhasználó gyakran a legérthetőbb azzal kapcsolatban, hogy mikor és hol használja az eszközt. Minden alkalmazás módosítás nélkül működik.
Előfordulhat, hogy a felhasználó nem tudja, hogy a mód létezik.
Az alkalmazás
Használja a cikkben ismertetett SDK-t.
A használati esetspecifikus jelzésekkel felcserélhető a mód, ha a környezet nem ismert előre. Eltávolítja azt a követelményt, hogy a felhasználónak meg kell hoznia ezt a döntést, és módosítania kell az üzemmódot a beállításokban.
A rosszul megtervezett alkalmazások nagyon rossz élményt nyújthatnak, és váratlan módban hagyhatják az eszközt.
Ajánlott eljárások a platformmód áthelyezéséhez
Rendszerbiztonsági tag
Description
A felhasználó választásának tiszteletben tartása
Mielőtt módosítaná a módot, meg kell adnia a felhasználónak a választást, és továbbra is tiszteletben kell tartania ezt a választási lehetőséget az alkalmazás futtatókörnyezete tekintetében.
Figyelmeztetés küldése a felhasználónak
Kerülje a mód azonnali módosítását az alkalmazás indításakor/folytatásakor. Ez gyenge felhasználói élményt jelent, mivel előfordulhat, hogy a felhasználó nem tudja, miért veszíti el az eszköz nyomon követését.
A módváltás minimalizálása
A Platform üzemmód beállításainak módosításakor az eszköz elveszíti a nyomon követést, ami negatív felhasználói élményt okoz. Ezért javasoljuk, hogy minimálisra csökkentse az üzemmód módosításának gyakoriságát. Ideális esetben a mód csak akkor változna meg, ha az eszköz álló környezetből mozgó környezetbe váltana, vagy fordítva.
Ha bizonytalan a környezettel kapcsolatban, használja a Platform mód áthelyezése lehetőséget
A platformmód áthelyezése a helyhez kötött környezetekben és a mozgó környezetekben is működik. A normál követési algoritmusok csak helyhez kötött környezetekben működnek, így ha bizonytalan abban, hogy a környezet mozog-e, a Platform mód áthelyezése lehet a biztonságosabb választás.
Ne használjon Mozgóplatform üzemmódot ismert helyhez kötött környezetekben
A Mozgóplatform mód kevésbé teljesít jól, mint a hagyományos üzemmód a helyhez kötött környezetekben. Ez egy kis teljesítménycsökkenés, bár a legtöbb felhasználó számára észrevehető lesz.
Gondolja át, hogy milyen módban hagyja az eszközt
Ez az SDK lehetővé teszi, hogy a fejlesztők olyan élményeket tervezhessenek, amelyek robusztusak az eszköz rendszerindítása során. Fontolja meg, hogy az eszköz a következő indításkor egy mozgó platformon lesz-e, és hagyja az eszközt a megfelelő módban.
Hol szerezhetem be az SDK-t?
A Mozgóplatform SDK támogatja a C# és a C++nyelv nyelvi leképezéseit, így a fejlesztők alkalmazásokat fejleszthetnek Win32- vagy UWP-platformokhoz. Töltse le és telepítse az SDK-t a Mixed Reality Funkció eszközzel.
Hogyan használja ezt az SDK-t
Az SDK telepítése után a következő módon állíthatja be a szkriptet a MovingPlatformManger használatára:
// Top of file
using Microsoft.MixedReality.MovingPlatform;
// Code body
m_movingPlatformManager = new MovingPlatformManager();
Az aktuális mód beolvasása
A mód aktuális értéke a következőképpen olvasható:
A MovingPlatformMode egy szám, amely a következőképpen van definiálva:
public enum MovingPlatformMode
{
Standard, // The legacy mode that devices use out-of-the-box.
MovingPlatformOptimized // Allows tracking on moving platforms.
}
Azok az eszközök, amelyekhez nem érhető el mozgóplatform mód, például VR-eszközök és HoloLens 1, mindig "Standard" értéket ad vissza.
A mód beállítása
A Mozgóplatform mód értékét az alábbiak szerint állíthatja be:
A TrySetMode igaz értéket ad vissza, ha az eszköz üzemmódja most már megfelel a kért módnak. Ha a mód már a kívánt állapotban van, nem történik semmi, és az eszköz nem veszíti el a nyomkövetést.
Visszahívás módváltás esetén
Időnként hasznos lehet tudni, hogy egy másik alkalmazás vagy felhasználó módosította-e a Mozgóplatform mód értékét. Ezt a következőképpen teheti meg.
// Code Body
m_movingPlatformManager.ModeChanged += CallbackOnMPMChanged;
...
void CallbackOnMPMChanged(object sender, MovingPlatformEventArgs args)
{
movingPlatformModeChanged = true;
movingPlatformModeValue = args.ModeEntered;
}
...
void Update()
{
// It's not reccomended to do work in the callback.
if (movingPlatformModeChanged)
{
movingPlatformModeChanged = false;
// Do some work
}
}
Annak ellenőrzése, hogy a mód beállítható-e
Néha hasznos tudni, hogy a mód beállítható-e, mielőtt megkísérli módosítani. Ha például tudni szeretné, hogy van-e érték a felhasználó preferenciájának megadásában. Az IsSetModeSupported függvénnyel megállapíthatja, hogy a platformmód áthelyezése beállítható-e:
Ez a függvény igaz értéket ad vissza, ha az eszköz módosíthatja a módokat, és hamis értéket, ha ez nem lehetséges. Ez a függvény figyelembe veszi a Mobile Eszközkezelés (MDM) szabályzatokat. Ha például az MDM a MovingPlatformMode paramétert "Be" értékre kényszeríti, akkor ez a függvény hamis értéket ad vissza.
Bemutató szkript
Ez a szkript az SDK összes fontos elemét egy helyen jeleníti meg. A példa nem követi a fent bemutatott ajánlott eljárásokat.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using Microsoft.MixedReality.MovingPlatform;
using System;
public class MovingPlatformDemo : MonoBehaviour
{
public GameObject cube; // A simple cube to display colors.
private MovingPlatformManager m_movingPlatformManager;
private Renderer cubeRenderer;
private bool movingPlatformModeChanged;
private MovingPlatformMode movingPlatformModeValue;
// Start is called before the first frame update
void Start()
{
m_movingPlatformManager = new MovingPlatformManager();
cubeRenderer = cube.GetComponent<Renderer>();
// Get initial value of mode,
// Just this mechanism would be adequate if a one time check is acceptable.
MovingPlatformMode initialMovingPlatformMode = m_movingPlatformManager.Mode;
// Find if It's possible to change the mode.
bool isSettable = m_movingPlatformManager.IsSetModeSupported();
// Here you would add some use case specific logic using initialMovingPlatformMode and isSettable
// to decide if you should ask the user if they want to change the mode.
// To set the mode.
bool success = m_movingPlatformManager.TrySetMode(MovingPlatformMode.MovingPlatformOptimized);
// Visual indicator of current state: Green = Moving Platform Optimized, Red = Regular.
SetColourFromState(m_movingPlatformManager.Mode, cubeRenderer);
// We set a callback to be notified if there's a change in mode. This is typically optional.
m_movingPlatformManager.ModeChanged += CallbackOnMPMChanged;
movingPlatformModeChanged = false;
}
// Update is called once per frame
void Update()
{
// This must be done in the UI thread.
if (movingPlatformModeChanged)
{
movingPlatformModeChanged = false;
SetColourFromState(movingPlatformModeValue, cubeRenderer);
}
}
// Sets renderer to:
// Green = Moving Platform Mode Enabled
// Red = Moving Platform Mode Disabled
void SetColourFromState(MovingPlatformMode mode, Renderer thisRend)
{
if (mode == MovingPlatformMode.MovingPlatformOptimized)
{
thisRend.material.color = new Color(0f, 1f, 0f, 1f);
}
else
{
thisRend.material.color = new Color(1f, 0f, 0f, 1f);
}
}
void CallbackOnMPMChanged(object sender, MovingPlatformEventArgs args)
{
movingPlatformModeChanged = true;
movingPlatformModeValue = args.ModeEntered;
}
}
Részletes útmutatást kaphat a Prefab 3D-eszközök és modellek Unity-jelenetbe való elhelyezéséről. A Unity Scriptable Objects és a vegyes valóság tervezési szempontjainak megismerése a HoloLens 2-ben való üzembe helyezés előtt.
Bemutatja, hogyan egyszerűsítheti, automatizálhatja és alakíthatja át az üzleti feladatokat és folyamatokat a Microsoft Power Platform Developer használatával.