Översikt över holografisk återgivning

Med holografisk återgivning kan ditt program rita ett hologram på en exakt plats i världen runt användaren, oavsett om det är exakt placerat i den fysiska världen eller inom en virtuell sfär som du har skapat. Hologram är föremål gjorda av ljud och ljus. Rendering gör att programmet kan lägga till ljuset.

Stöd för enheter

Funktionen HoloLens (första generationen) HoloLens 2 Integrerande headset
Rendering ✔️ ✔️ ✔️

Holografisk återgivning

Nyckeln till holografisk återgivning är att veta vilken typ av enhet som används. Enheter med genomskinliga skärmar, till exempel HoloLens, ger ljus till världen. Svarta pixlar är helt transparenta, medan ljusare bildpunkter blir alltmer ogenomskinliga. Eftersom ljuset från bildskärmarna läggs till i ljuset från den verkliga världen är vita pixlar genomskinliga.

Medan stereoskopisk återgivning ger en djupreplik för dina hologram, kan du lägga till jordningseffekter som hjälper användarna att lättare se vilken yta ett hologram är nära. En grundteknik är att lägga till en glöd runt ett hologram på den närliggande ytan och sedan återge en skugga mot denna glöd. På så sätt verkar din skugga subtrahera ljus från miljön. Rumsligt ljud är en annan viktig djupreplik, så att användarna kan resonera om avståndet och den relativa platsen för ett hologram.

Enheter med ogenomskinliga skärmar, som Windows Mixed Reality uppslukande headset, blockerar världen. Svarta bildpunkter är helsvart och alla andra färger visas som den färgen för användaren. Ditt program ansvarar för att återge allt som användaren ser. Detta gör det ännu viktigare att upprätthålla en konstant uppdateringshastighet så att användarna får en bekväm upplevelse.

Förutsagda återgivningsparametrar

Headset för mixad verklighet (både HoloLens och uppslukande headset) spårar kontinuerligt användarens huvuds position och orientering i förhållande till omgivningen. När ditt program börjar förbereda nästa bildruta förutsäger systemet var användarens huvud kommer att finnas i framtiden i exakt det ögonblick då ramen visas på skärmarna. Baserat på den här förutsägelsen beräknar systemet vyn och projektionen som ska användas för den ramen. Programmet måste använda dessa transformeringar för att ge korrekta resultat. Om transformeringar som tillhandahålls av systemet inte används överensstämmer inte den resulterande bilden med den verkliga världen, vilket leder till användarens obehag.

Anteckning

För att exakt förutsäga när en ny ram når skärmarna mäter systemet hela tiden den effektiva svarstiden från slutpunkt till slutpunkt för programmets återgivningspipeline. Systemet anpassas till längden på din återgivningspipeline, men du kan förbättra hologramstabiliteten genom att hålla pipelinen så kort som möjligt.

Program som använder avancerade tekniker för att utöka systemförutsägelserna kan åsidosätta systemvy- och projektionstransformeringar. Dessa program måste fortfarande använda transformeringar som tillhandahålls av systemet som grund för sina anpassade transformeringar för att ge meningsfulla resultat.

Andra återgivningsparametrar

När du återger en ram anger systemet det backbuffertvyport som programmet ska rita i. Det här visningsområdet är ofta mindre än rambuffertens fulla storlek. Oavsett viewport-storlek, när ramen återges av programmet, skalas bilden upp så att hela bildskärmarna fylls.

För program som inte kan renderas med den uppdateringshastighet som krävs kan systemrenderingsparametrar konfigureras för att minska minnesbelastningen och återgivningskostnaden till priset av ökad pixelalias. Serverbuffertformatet kan också ändras, vilket för vissa appar kan bidra till att förbättra minnesbandbredden och pixelgenomflödet.

Återgivningens frustum, upplösning och framerate som appen uppmanas att återge kan också ändras från ram till ram och kan variera mellan vänster och höger öga. Om till exempel MRC (Mixed Reality Capture ) är aktiv och konfigurationen av bild-/videokameravyn inte är anmäld, kan ett öga renderas med en större FOV eller upplösning.

För en viss ram måste appen renderas med hjälp av vytransformering, projektionstransformering och viewport-upplösning som tillhandahålls av systemet. Dessutom får ditt program aldrig förutsätta att någon renderings- eller vyparameter förblir fast från ram till ram. Motorer som Unity hanterar alla dessa transformeringar åt dig i sina egna kameraobjekt så att användarnas fysiska rörelse och systemets tillstånd alltid respekteras. Om ditt program tillåter virtuell förflyttning av användaren genom världen (t.ex. med hjälp av tumstickan på en spelplatta) kan du lägga till ett överordnat riggobjekt ovanför kameran som flyttar runt det. Detta gör att kameran återspeglar både användarens virtuella och fysiska rörelse. Om ditt program ändrar vytransformerings-, projektionstransformerings- eller viewport-dimensionen som tillhandahålls av systemet, måste det informera systemet genom att anropa lämpligt åsidosättnings-API.

För att förbättra stabiliteten i din holografiska återgivning bör din app tillhandahålla för att Windows varje bildruta den djupbuffert som används för återgivning. Om din app ger en djupbuffert bör den ha sammanhängande djupvärden, med djup uttryckt i meter från kameran. Detta gör det möjligt för systemet att använda djupdata per bildpunkt för att bättre stabilisera innehållet om användarens huvud blir något förskjutet från den förväntade platsen. Om du inte kan tillhandahålla din djupbuffert kan du ange en fokuspunkt och ett normalt plan som skär igenom det mesta av innehållet. Om både djupbufferten och ett fokusplan tillhandahålls kan systemet använda båda. I synnerhet är det bra att tillhandahålla både djupbufferten och en fokuspunkt som innehåller en hastighetsvektor när programmet visar hologram som är i rörelse.

Mer information om det här avsnittet finns i artikeln Rendering i DirectX .

Holografiska kameror

Windows Mixed Reality introducerar begreppet holografisk kamera. Holografiska kameror liknar den traditionella kameran som finns i 3D-grafiktexter; de definierar både extrinsiska (position och orientering) och inbyggda kameraegenskaper. (Till exempel används field-of-view för att visa en virtuell 3D-scen.) Till skillnad från traditionella 3D-kameror har programmet inte kontroll över kamerans position, orientering och inbyggda egenskaper. I stället styrs positionen och orienteringen av den holografiska kameran implicit av användarens rörelse. Användarens förflyttning vidarebefordras till programmet ram för bildruta via en vytransformering. På samma sätt definieras kamerans inbyggda egenskaper av enhetens kalibrerade optik och vidarebefordras ram för bildruta via projektionstransformeringen.

I allmänhet renderas programmet för en enda stereokamera. En robust renderingsloop stöder flera kameror och stöder både mono- och stereokameror. Systemet kan till exempel be ditt program att rendera från ett alternativt perspektiv när användaren aktiverar en funktion som mixed reality capture (MRC), beroende på headsetets form. Program som kan stödja flera kameror får dem genom att välja den typ av kameror som de kan stödja.

Volymåtergivning

Vid återgivning av medicinska MRI:er eller tekniska volymer i 3D används ofta volymrenderingstekniker . Dessa tekniker kan vara intressanta i mixad verklighet, där användare naturligt kan se en sådan volym från viktiga vinklar, helt enkelt genom att flytta huvudet.

Lösningar som stöds på HoloLens (första generationen)

  • Den maximala viewport-storleken är en egenskap för HolographicDisplay. HoloLens är inställt på den maximala viewport-storleken, som är 720p (1268x720), som standard.
  • Visningsportens storlek kan ändras genom att ange ViewportScaleFactor på HolographicCamera. Den här skalningsfaktorn ligger i intervallet 0 till 1.
  • Den lägsta visningsportstorleken som stöds på HoloLens (första generationen) är 50 % av 720p, vilket är 360p (634 x 360). Det här är en ViewportScaleFactor på 0,5.
  • Allt som är lägre än 540p rekommenderas inte på grund av visuell försämring, men kan användas för att identifiera flaskhalsar i pixelfyllningshastigheten.

Lösningar som stöds på HoloLens 2

  • De aktuella och högsta målstorlekarna för återgivning som stöds är egenskaper för vykonfigurationen. HoloLens 2 är inställt på den maximala målstorleken för återgivning, vilket är 1440 x 936 som standard.
  • Appar kan ändra storleken på återgivningsmålbuffertar genom att anropa metoden RequestRenderTargetSize för att begära en ny målstorlek för återgivning. En ny målstorlek för återgivning väljs, som uppfyller eller överskrider den begärda målstorleken för återgivning. Det här API:et ändrar storleken på återgivningsmålbufferten, vilket kräver omallokering av minne på GPU:n. Konsekvenserna av detta är: Återgivningsmålstorleken kan skalas ned för att minska minnesbelastningen på GPU:n, och den här metoden bör inte anropas med hög frekvens.
  • Appar kan fortfarande ändra viewport-storleken på samma sätt som de gjorde för HoloLens 1. Det finns ingen extra minnesomfördelning på GPU:n, så den kan ändras med hög frekvens, men den kan inte användas för att minska minnesbelastningen på GPU:n.
  • Den lägsta visningsportstorleken som stöds på HoloLens 2 är 634 x 412, en ViewportScaleFactor på cirka 0,44 när standardåtergivningsmålstorleken används.
  • Om en målstorlek för återgivning tillhandahålls som är mindre än den lägsta visningsportstorleken som stöds ignoreras viewport-skalningsfaktorn.
  • Allt som är lägre än 540p rekommenderas inte på grund av visuell försämring, men kan användas för att identifiera flaskhalsar i pixelfyllningshastigheten.

Se även