Holografikus renderelés áttekintése
A holografikus renderelés lehetővé teszi, hogy az alkalmazás egy hologramot a felhasználó körüli világ egy pontos helyére rajzoljon, függetlenül attól, hogy pontosan a fizikai világban vagy egy ön által létrehozott virtuális tartományon belül helyezkedik el. A hologramok hangból és fényből készült objektumok. A renderelés lehetővé teszi az alkalmazás számára a fény hozzáadását.
Eszköztámogatás
Szolgáltatás | HoloLens (első generációs) | HoloLens 2 | Modern headsetek |
Renderelés | ✔️ | ✔️ | ✔️ |
Holografikus renderelés
A holografikus renderelés kulcsa annak ismerete, hogy milyen eszközt használnak. Az olyan átlátszatos kijelzőkkel rendelkező eszközök, mint a HoloLens, fényt adnak a világnak. A fekete képpontok teljesen átlátszóak, míg a világosabb képpontok egyre inkább átlátszatlanok. Mivel a kijelzők fénye a valós világból kerül a fénybe, a fehér képpontok áttetszőek.
Míg a sztereoszkopikus renderelés egy mélységi jelzést biztosít a hologramokhoz, a földelési effektusok hozzáadásával a felhasználók könnyebben láthatják, hogy milyen felszín közelében van a hologram. Az egyik földelési technika az, hogy a közeli felületen egy hologram körül ragyog, majd árnyékot jelenít meg ennek a ragyogásnak. Ily módon az árnyék úgy tűnik, hogy kivonja a fényt a környezetből. A térbeli hang egy másik fontos mélységi jelzés, amely lehetővé teszi a felhasználók számára a hologram távolságának és relatív helyének okát.
Az átlátszatlan kijelzővel rendelkező eszközök, például Windows Mixed Reality modern mikrofonos fejhallgatók, blokkolják a világot. A fekete képpontok fekete színűek, és bármilyen más szín jelenik meg a felhasználó számára. Az alkalmazás felelős azért, hogy mindent megjelenítsen, amit a felhasználó lát. Ez még fontosabbá teszi az állandó frissítési arány fenntartását, hogy a felhasználók kényelmes élményben legyen része.
Előrejelzett renderelési paraméterek
A vegyes valóságú headsetek (a HoloLens és a modern headsetek is) folyamatosan nyomon követik a felhasználó fejének helyzetét és tájolását a környezetükhöz képest. Ahogy az alkalmazás elkezdi előkészíteni a következő keretét, a rendszer előrejelzi, hogy a felhasználó feje hol lesz a jövőben abban a pillanatban, amikor a keret megjelenik a kijelzőkön. Az előrejelzés alapján a rendszer kiszámítja a nézetet, és a vetület átalakítja az adott kerethez való használatát. Az alkalmazásnak ezeket az átalakításokat kell használnia a megfelelő eredmények eléréséhez. Ha a rendszer által biztosított átalakításokat nem használja, az eredményül kapott kép nem fog igazodni a valós világhoz, ami felhasználói kényelmetlenséghez vezet.
Megjegyzés
Annak pontos előrejelzéséhez, hogy mikor éri el az új keret a kijelzőket, a rendszer folyamatosan méri az alkalmazás renderelési folyamatának tényleges végpontok közötti késését. Bár a rendszer a renderelési folyamat hosszához igazodik, javíthatja a hologram stabilitását a folyamat lehető legrövidebbre állításával.
Azok az alkalmazások, amelyek fejlett technikákkal bővítik a rendszer előrejelzését, felülbírálhatják a rendszernézetet és a vetületátalakításokat. Ezeknek az alkalmazásoknak továbbra is a rendszer által biztosított átalakításokat kell használniuk az egyéni átalakítások alapjául, hogy értelmes eredményeket hozzanak létre.
Egyéb renderelési paraméterek
Keret renderelésekor a rendszer meghatározza azt a háttérpuffer nézetportot, amelyben az alkalmazásnak rajzolnia kell. Ez a nézetport gyakran kisebb, mint a keretpuffer teljes mérete. Függetlenül a nézetport méretétől, miután az alkalmazás renderelte a keretet, a rendszer felskálázza a képet, hogy kitöltse a teljes kijelzőt.
Azon alkalmazások esetében, amelyek nem tudják a szükséges frissítési sebességgel renderelni magukat, a rendszer renderelési paraméterei konfigurálhatók úgy, hogy a megnövekedett képpontaliasítás árán csökkentsék a memóriaterhelést és a renderelési költségeket. A háttérpuffer formátuma is módosítható, ami egyes alkalmazások esetében segíthet a memória sávszélességének és a képpontok átviteli sebességének javításában.
A renderelési frustum, a felbontás és a képkockasebesség, amelyben az alkalmazás a renderelést kéri, szintén keretről keretre változhat, és a bal és a jobb szem között eltérhet. Ha például a vegyes valóság rögzítése (MRC) aktív, és a fénykép-/videokamera-nézet konfigurációja nem választható, az egyik szem nagyobb FOV-val vagy felbontással jelenhet meg.
Az alkalmazásnak minden adott kerethez renderelnie kell a rendszer által biztosított nézetátalakítást, vetületátalakítást és megtekintési felbontást. Emellett az alkalmazásnak soha nem szabad feltételeznie, hogy a renderelési vagy megtekintési paraméterek keretről keretre rögzítettek maradnak. A Unity-hez hasonló motorok a saját kameraobjektumaikban kezelik ezeket az átalakításokat, így a felhasználók fizikai mozgását és a rendszer állapotát mindig tiszteletben tartják. Ha az alkalmazás lehetővé teszi a felhasználó virtuális mozgatását a világon keresztül (például a játékpadon lévő hüvelykujj használatával), hozzáadhat egy szülő rig objektumot a kamera fölé, amely mozgatja azt. Ez azt eredményezi, hogy a kamera a felhasználó virtuális és fizikai mozgását is tükrözi. Ha az alkalmazás módosítja a rendszer által biztosított nézetátalakítást, vetületátalakítást vagy nézetport-dimenziót, a megfelelő felülbírálási API meghívásával tájékoztatnia kell a rendszert.
A holografikus renderelés stabilitásának növelése érdekében az alkalmazásnak minden egyes keretben meg kell adnia a Rendereléshez használt mélységi puffert. Ha az alkalmazás rendelkezik mélységi pufferrel, akkor koherens mélységi értékekkel kell rendelkeznie, amelyek mélysége méterben van kifejezve a kamerától. Ez lehetővé teszi a rendszer számára, hogy képpontonkénti mélységi adatokat használjon a tartalom jobb stabilizálásához, ha a felhasználó feje kissé eltolódik az előrejelzett helytől. Ha nem tudja megadni a mélységi puffert, megadhat egy fókuszpontot és egy normált, amely meghatároz egy síkot, amely a tartalom nagy részét átvágja. Ha a mélységi puffer és a fókuszsík is meg van adva, a rendszer mindkettőt használhatja. Különösen hasznos, ha a mélységi puffert és a fókuszpontot is biztosítja, amely tartalmaz egy sebességvektort, amikor az alkalmazás mozgásban lévő hologramokat jelenít meg.
A témakör alacsony szintű részleteiért tekintse meg a Rendering in DirectX (Renderelés a DirectX-ben ) című cikket.
Holografikus kamerák
Windows Mixed Reality bevezeti a holografikus kamera fogalmát. Holografikus kamerák hasonlóak a hagyományos kamera található 3D grafikus szövegek; a külső (pozíció és tájolás) és a belső kamera tulajdonságait is meghatározzák. (A nézet mezője például egy virtuális 3D-jelenet megtekintésére szolgál.) A hagyományos térhatású kamerákkal ellentétben az alkalmazás nem szabályozza a kamera helyzetét, tájolását és belső tulajdonságait. A holografikus kamera helyzetét és tájolását a felhasználó mozgása implicit módon szabályozza. A felhasználó mozgása képkockánként továbbítja az alkalmazásnak egy nézetátalakítással. Hasonlóképpen, a kamera belső tulajdonságait az eszköz kalibrált optika és a vetítési transzformáción keresztül továbbított keret by-frame határozza meg.
Általánosságban elmondható, hogy az alkalmazás egyetlen sztereó kamerához fog renderelni. A robusztus renderelési hurok több kamerát is támogat, és támogatja a mono és a sztereó kamerákat is. Előfordulhat például, hogy a rendszer arra kéri az alkalmazást, hogy a headset alakjától függően egy olyan funkciót aktiváljon, mint a vegyes valóság rögzítése (MRC). Azok az alkalmazások, amelyek több kamerát is támogatnak, úgy kapják meg őket, hogy engedélyezik az általuk támogatott kamerákat .
Kötetmegjelenítés
Orvosi MRI-k vagy mérnöki kötetek 3D-ben való renderelésekor gyakran használnak kötetmegjelenítési technikákat. Ezek a technikák érdekesek lehetnek a vegyes valóságban, ahol a felhasználók természetesen megtekinthetik az ilyen köteteket a kulcs szögéből, egyszerűen a fejük mozgatásával.
Támogatott megoldások a HoloLensről (első generációs)
- A maximális nézetportméret a HolographicDisplay tulajdonsága. A HoloLens alapértelmezés szerint a maximális nézetportméretre van állítva, amely alapértelmezés szerint 720p (1268x720).
- A nézetport mérete a HolographicCamera ViewportScaleFactor beállításával módosítható. Ez a skálázási tényező 0 és 1 között van.
- A HoloLens (első generációs) legalacsonyabb támogatott nézetportmérete a 720p 50%-a, ami 360p (634x360). Ez egy 0,5-ös ViewportScaleFactor.
- Az 540p-nél kisebb méret nem ajánlott a vizualizáció romlása miatt, de a képpontkitöltési sebesség szűk keresztmetszeteinek azonosítására használható.
Támogatott megoldások a HoloLens 2
- Az aktuális és maximális támogatott renderelési célméretek a nézetkonfiguráció tulajdonságai. HoloLens 2 alapértelmezés szerint a renderelési cél maximális mérete 1440x936.
- Az alkalmazások módosíthatják a renderelési célpufferek méretét a RequestRenderTargetSize metódus meghívásával, hogy új renderelési célméretet kérjenek. Új renderelési célméret lesz kiválasztva, amely megfelel vagy meghaladja a kért renderelési célméretet. Ez az API módosítja a renderelési célpuffer méretét, ami memóriaáthelyezést igényel a GPU-n. Ennek következményei a következők: A renderelési cél mérete leskálázható a GPU memóriaterhelésének csökkentése érdekében, és ezt a módszert nem szabad nagy gyakorisággal meghívni.
- Az alkalmazások továbbra is ugyanúgy módosíthatják a nézetport méretét, mint a HoloLens 1 esetében. A GPU-n nincs hozzáadott memóriaáthelyezés, ezért nagy gyakorisággal módosítható, de nem használható a GPU memóriaterhelésének csökkentésére.
- A HoloLens 2 legalacsonyabb támogatott nézetportmérete 634x412, a ViewportScaleFactor értéke körülbelül 0,44, ha az alapértelmezett renderelési célméret van használatban.
- Ha olyan renderelési célméretet ad meg, amely kisebb, mint a legalacsonyabb támogatott nézetportméret, a nézetport skálázási tényezője figyelmen kívül lesz hagyva.
- Az 540p-nél kisebb méret nem ajánlott a vizualizáció romlása miatt, de a képpontkitöltési sebesség szűk keresztmetszeteinek azonosítására használható.