Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Teljesítmény
Annak érdekében, hogy a mögöttes vegyes valóság platform és eszköz a legjobb eredményt hozza, fontos, hogy teljesítsen keretsebességeket. A célkockasebesség (például 60 FPS vagy 90 FPS) platformonként és eszközönként eltérő lesz. A vegyes valóság alkalmazásainak keretsebessége azonban stabil hologramokkal, valamint hatékony fejkövetéssel, kézkövetéssel és egyebekvel fog rendelkezni.
Környezetkövetés
A stabil holografikus renderelés nagyban támaszkodik a platform > eszköz fej-pózok követésére. A Unity a kamera pózának becsült és a mögöttes platform által biztosított minden képkockáját rendereli. Ha ez a nyomon követés nem követi megfelelően a tényleges fejmozgatást, akkor a hologramok vizuálisan pontatlanok lesznek. Ez különösen nyilvánvaló és fontos az olyan AR-eszközök esetében, mint a HoloLens, ahol a felhasználók virtuális hologramokat kapcsolhatnak a valós világhoz. A teljesítmény jelentős a megbízható fejkövetéshez, de más fontos funkciók is lehetnek. A felhasználói élményt befolyásoló környezeti elemek típusai a megcélzott platformspecifikusaktól függenek.
Windows Mixed Reality
A Windows Mixed Reality platform néhány referenciaanyagot biztosít a hologramok stabilizálásához a platformon. Vannak azonban néhány kulcsfontosságú eszköz, amelyeket a fejlesztők a hologramos vizualizáció felhasználói élményének javítására használhatnak.
Mélységi puffer megosztása
A Unity fejlesztői megoszthatják az alkalmazás mélységi pufferét a platformmal. Ez olyan információt nyújt, ahol hologramok léteznek egy aktuális kerethez, amelyet a platform a hologramok stabilizálására használhat egy hardveresen támogatott folyamat, az úgynevezett Late-Stage Reprojection segítségével.
Késői fázisú újraprojection
A keret renderelésének végén a Windows Mixed Reality platform felveszi az alkalmazás által létrehozott szín- és mélységi renderelési célokat, és átalakítja a végső képernyőkimenetet, hogy figyelembe vehesse az utolsó fej-póz előrejelzése óta bármilyen enyhe fejmozgást. Az alkalmazás játékhurkjának végrehajtása időt vesz igénybe. Például 60 FPS-nél ez azt jelenti, hogy az alkalmazás ~16,667 ms-t vesz igénybe a keret megjelenítéséhez. Annak ellenére, hogy ez úgy tűnhet, mint egy minimális idő, a felhasználó helyzete és tájolása a fejük megváltozik, ami új vetítési mátrixok a kamera renderelés. A késői fázisú újraprojection átalakítja a végső kép képpontjait, hogy figyelembe vegyék ezt az új perspektívát.
Képpontonként és stabilizálósíkonkénti LSR
A Windows Mixed Reality-eszközön futó eszközvégponttól és operációsrendszer-verziótól függően a késői fázisú újraprojektelési algoritmus képpontonként vagy egy stabilizálósíkon lesz végrehajtva.
Képpontonkénti mélységalapú
Képpontonkénti mélységalapú reprojection magában foglalja a mélységi puffert a kép kimenetének képpontonkénti módosításához, és ezáltal a hologramok különböző távolságokban történő stabilizálásához. Egy 1 m-re lévő gömb például egy 10 m-re lévő oszlop előtt lehet. A gömböt jelképező képpontok eltérő átalakítást kapnak, mint az oszlopot jelképező távoli képpontok, ha a felhasználó kissé megbillentette a fejét. A képpontonkénti reprojection minden képpontnál figyelembe veszi ezt a távolságkülönbséget a pontosabb ismétlés érdekében.
Stabilizálósík
Ha nem lehet pontos mélységi puffert létrehozni a platformmal való megosztáshoz, az LSR egy másik formája egy stabilizáló síkot használ. A jelenet összes hologramja kap némi stabilizálódást, de a kívánt síkban található hologramok maximális hardverstabilizálást kapnak. A síkhoz tartozó pont és normál a Unity által biztosított HolographicSettings.SetFocusPointForFrame API-val adható meg a platformnak.
Mélységi puffer formátuma
Ha a HoloLens-t fejleszti, erősen ajánlott a 16 bites mélységi pufferformátum használata a 24 biteshez képest. Ez rendkívül sokat takaríthat meg a teljesítményen, bár a mélységi értékek kevésbé lesznek precizitásban. Az alacsonyabb pontosság kompenzálása és a z-verés elkerülése érdekében javasoljuk, hogy csökkentse a unity által beállított 1000m alapértelmezett értéktől távol eső vágósíkot.
Feljegyzés
Ha 16 bites mélységi formátumot használ, a rajzsablonpuffer szükséges effektusai nem működnek, mert a Unity ebben a beállításban nem hoz létre rajzsablonpuffert. Ha a 24 bites mélységi formátumot választja, általában egy 8 bites rajzsablonpuffert hoz létre, ha alkalmazható a végpont grafikus platformján.
Mélységi puffermegosztás a Unityben
A mélységalapú LSR használatához két fontos lépést kell elvégezniük a fejlesztőknek.
- A Project Settings Player XR Settings>Virtual Reality SDKs Enable Depth Buffer Sharing (Projektbeállítások>szerkesztése>) területen A>Virtuális valóság SDK-k lehetővé teszik a> mélységi puffermegosztást
- Ha a HoloLenst célozza meg, javasoljuk, hogy a 16 bites mélységi formátumot is válassza.
- A képernyő színének megjelenítésekor a mélység megjelenítése is
Az átlátszatlan GameObjects a Unityben általában automatikusan mélyre ír. A transzparens > szöveges objektumok azonban alapértelmezés szerint általában nem írnak a mélységbe. Ha az MRTK Standard Shadert vagy a Text Mesh Pro-t használja, ez könnyen orvosolható.
Feljegyzés
Ha gyorsan meg szeretné állapítani, hogy egy jelenet mely objektumai nem írnak a mélységi pufferbe vizuálisan, használhatja a Render Depth Buffer segédprogramot az MRTK konfigurációs profil szerkesztőbeállításai alatt.
Átlátszó MRTK Standard árnyékoló
Ha átlátszó anyagokat szeretne használni az MRTK Standard árnyékolóval, válassza ki az anyagot a Felügyelő ablakban való megtekintéshez. Ezután kattintson a Javítás gombra az anyag mélységgé alakításához (azaz Z-Write On).
Előtte
Utána
Text Mesh Pro
Text Mesh Pro-objektumok esetén válassza ki a TMP GameObjectet, hogy megtekintse az ellenőrben. Az anyagösszetevő alatt váltson a hozzárendelt anyag árnyékolójának az MRTK TextMeshPro shader használatára.
Egyéni árnyékoló
Ha egyéni árnyékolót ír, adja hozzá a ZWrite jelzőt a Pass blokkdefiníció elejéhez, hogy az árnyékolót úgy konfigurálja, hogy a mélységi pufferbe írjon.
Shader "Custom/MyShader"
{
SubShader
{
Pass
{
...
ZWrite On
...
}
}
}
Átlátszatlan háttérrendszerek
Ha a fenti metódusok nem működnek egy adott forgatókönyv esetében (azaz a Unity felhasználói felületének használatával), lehetséges, hogy egy másik objektum írható a mélységi pufferbe. Gyakori példa a Unity felhasználói felületi szövegének használata egy lebegő panelen egy jelenetben. A panel átlátszatlansá tételével vagy legalább a mélységi írással a platform stabilizálja a szöveget és a panelt, mivel z-értékük annyira közel áll egymáshoz.
WorldAnchors (HoloLens)
A vizuális stabilitás biztosítása érdekében a megfelelő konfigurációk biztosítása mellett fontos gondoskodni arról, hogy a hologramok a megfelelő fizikai helyeken is stabilak maradjanak. Annak érdekében, hogy a platformot egy fizikai térben fontos helyeken tájékoztassák, a fejlesztők a WorldAnchorst használhatják a GameObjectsen, amelyeknek egy helyen kell maradniuk. A WorldAnchor a GameObjecthez hozzáadott összetevő, amely teljes mértékben átveszi az objektum átalakításának irányítását.
Az olyan eszközök, mint a HoloLens, folyamatosan figyelik és tanulják a környezetet. Így, ahogy a HoloLens nyomon követi a mozgást és a helyet a térben, a becslései frissülnek, és a Unity koordináta-rendszere módosul. Ha például egy GameObject 1 m-re van a kamerától, amikor a HoloLens nyomon követi a környezetet, észreveheti, hogy a Fizikai pont, ahol a GameObject található, valójában 1,1 m távolságra van. Ez a hologram elsodródását eredményezné. A WorldAnchor gameObjectre való alkalmazása lehetővé teszi a horgony számára az objektum átalakításának szabályozását, hogy az objektum a megfelelő fizikai helyen maradjon (azaz futásidőben 1 m helyett 1,1 m-re frissítsen). A WorldAnchors alkalmazás-munkamenetek közötti megőrzéséhez a fejlesztők a WorldAnchorStore-t használhatják a WorldAnchors mentéséhez és betöltéséhez.
Feljegyzés
Miután hozzáadtak egy WorldAnchor-összetevőt a GameObjecthez, nem lehet módosítani a GameObject átalakítását (pl. transform.position = x). A fejlesztőnek el kell távolítania a WorldAnchort az átalakítás szerkesztéséhez.
WorldAnchor m_anchor;
public void AddAnchor()
{
this.m_anchor = this.gameObject.AddComponent<WorldAnchor>();
}
public void RemoveAnchor()
{
DestroyImmediate(m_anchor);
}
Ha alternatívát szeretne a Horgonyok manuális használatához, tekintse meg a Microsoft World Locking Tools eszközt.