Översikt över mixad verklighetsinfångning

Anteckning

Se Rendera från PV-kameran nedan för vägledning om en ny MRC-funktion för HoloLens 2.

Du kan ta ett MRC-foto (Mixed Reality Capture) eller en video när som helst, men det finns några saker att tänka på när du utvecklar ditt program. Detta omfattar metodtips för visuell mrc-kvalitet och att svara på systemändringar medan mrc-enheter avbildas.

Utvecklare kan också sömlöst integrera mixed reality capture och infogning i sina appar.

MRC på HoloLens (första generationen) stöder videor och foton upp till 720p, medan MRC på HoloLens 2 stöder videor upp till 1 080p och foton upp till 4K upplösning.

Vikten av kvalitets-MRC

Oavsett om det är skärmbilder av mixad verklighet på Microsoft Store eller andra användare som delar innehåll i sociala nätverk är Inspelning av mixad verklighet ofta en användare som först exponeras för din app. Du kan använda MRC för att demonstration av din app, utbilda användare, uppmuntra användare att dela sina mixade världsinteraktioner och för användarforskning och problemlösning.

Hur MRC påverkar din app

Aktivera MRC i din app

Som standard behöver en app inte göra något för att användarna ska kunna ta skärmdumpar med mixad verklighet.

Aktivera förbättrad justering för MRC i din app

Som standard kombinerar Mixed Reality Capture det högra ögats holografiska utdata med kameran för foto/video (PV). Dessa två källor kombineras med fokuspunkten som anges av den integrerande app som körs.

Det innebär att hologram utanför fokusplanet inte justeras på grund av det fysiska avståndet mellan PV-kameran och den högra skärmen.

Ange fokuspunkten

Integrerande appar (på HoloLens) bör ange fokuspunkten för var de vill att deras stabilitetsplan ska vara. Detta säkerställer den bästa justeringen i både headset och i mixed reality-inspelning.

Om ingen fokuspunkt har angetts används som standard ett stabilt plan på 2 meter.

Rendera från PV-kameran (anmäl dig)

HoloLens 2 lägger till möjligheten för en integrerande app att rendera från PV-kameran medan Mixed Reality Capture körs. För att säkerställa att appen stöder ytterligare rendering korrekt måste appen välja den här funktionen.

Rendering från PV-kameran ger följande förbättringar jämfört med standardupplevelsen för MRC:

  • Hologramjustering till din fysiska miljö och händer för nära interaktioner bör vara korrekt på alla avstånd. Undvik att ha en förskjutning vid andra avstånd än fokuspunkten som du kan se i standardvärdet för mrc.
  • Det högra ögat i headsetet komprometteras inte eftersom det inte används för att återge hologrammen för MRC-utdata.

Läs mer om rendering från PV-kameran (DirectX).

Metodtips (HoloLens specifik)

MRC förväntas fungera utan ytterligare utvecklingsarbete, men det finns några saker att vara medveten om när du tillhandahåller den bästa upplevelsen för mixad verklighetsinfångning.

MRC använder hologrammets alfakanal för att blanda med kamerabilderna

Det viktigaste steget är att se till att din app rensar till transparent svart i stället för att rensa till svart. I Unity görs detta som standard med MixedRealityToolkit. Om du utvecklar i icke-Unity kan du behöva göra en ändring på en rad.

Här är några av de artefakter som kan visas i MRC om din app inte rensas till transparent svart:

Exempelfel: Svarta kanter runt innehållet (går inte att rensa till transparent svart)

Failure to clear to transparent black: black edge artifacts around holograms Failing to clear to transparent black: black edge artifacts around holograms

Exempelfel: Hela hologrammets bakgrundsscen ser svart ut. Om du anger ett alfa-värde i bakgrunden för ett resulterar det i en svart bakgrund

Om du anger ett alfavärde för bakgrunden på 1 resulterar det i en svart bakgrund

Förväntat resultat: Hologram visas korrekt blandat med verkligheten (förväntat resultat om du rensar till transparent svart)

Förväntat resultat vid rensning till transparent svart

Lösning:

  • Ändra allt innehåll som visas som täckande svart om du vill ha alfavärdet 0.
  • Se till att appen rensas till transparent svart.
  • Unity rensar som standard automatiskt med MixedRealityToolkit, men om det är en icke-Unity-app bör du ändra färgen som används med ID3D11DeiceContext::ClearRenderTargetView(). Du vill se till att du rensar till transparent svart (0,0,0,0) i stället för svart (0,0,0,1).

Nu kan du finjustera alfavärdena för dina tillgångar om du vill, men normalt behöver du inte göra det. I de flesta fall ser MRC:erna bra ut. MRC förutsätter förmultiplikerad alfa. Alfavärdena påverkar endast MRC-avskiljning.

Vad som händer när MRC är aktiverat på HoloLens

Följande gäller för både HoloLens (första generationen) och HoloLens 2, om inget annat anges:

  • Systemet begränsar programmet till 30 Hz-rendering. Detta skapar en del utrymme för MRC att köra så att appen inte behöver ha en konstant budgetreserv och matchar även MRC-videopostens bildfrekvens på 30 bilder
  • Holograminnehåll i enhetens högra ögon kan verka "sparkle" när du spelar in/strömmar MRC: text kan bli svårare att läsa och hologramkanterna kan verka mer ojämna (om du väljer att använda en tredje kamera som återges på HoloLens 2 undviker du detta kompromettering)
  • MRC-foton och videor respekterar programmets fokuspunkt om programmet har aktiverat det, vilket hjälper till att säkerställa att hologram är korrekt placerade. För videor är fokuspunkten utjämnad, så hologram kan verka långsamt på plats om fokuspunktens djup ändras avsevärt. Hologram som är på olika djup från fokuspunkten kan verka förskjutna från verkligheten (se exemplet nedan där fokuspunkten är inställd på 2 meter men hologrammet är placerad på 1 mätare).

Hologram 2 meter ser perfekt registrerad ut i världen. Hologram nära eller långt avstånd kan vara något förskjutna.

Integrera MRC-funktioner inifrån din app

Din app för mixad verklighet kan starta MRC-foto eller videoinspelning inifrån appen, och det innehåll som fångas görs tillgängligt för din app utan att lagras i enhetens "kamerarulle". Du kan skapa en anpassad MRC-inspelare eller dra nytta av det inbyggda användargränssnittet för kamerainfångning.

MRC med inbyggt kameragränssnitt

Utvecklare kan använda API:et för camera capture-användargränssnittet för att hämta ett användarinspelat foto eller en video med bara några rader kod.

Det här API:et startar det inbyggda MRC-kameragränssnittet där användarna kan ta ett foto eller en video och returnera den resulterande bilden till din app. Du kan skapa en anpassad Inspelning av mixad verklighet inspelare om du behöver lägga till ett eget kameragränssnitt eller åtkomst på lägre nivå för att samla in strömmar.

Skapa en anpassad MRC-inspelare

Användaren kan alltid utlösa ett foto eller en video med hjälp av systemets MRC-inspelningstjänst, men ett program kanske vill skapa en anpassad kameraapp som innehåller hologram i kameraströmmen precis som MRC. På så sätt kan programmet starta skärmdumpar från användarindata, skapa anpassade inspelningsgränssnitt eller anpassa MRC-inställningar för att nämna några exempel.

HoloStudio lägger till en anpassad MRC-kamera med hjälp av MRC-effekter

HoloStudio lägger till en anpassad MRC-kamera med hjälp av MRC-effekter

Unity-program bör Locatable_camera_in_Unity för egenskapen för att aktivera hologram.

Andra program kan göra detta med hjälp av Windows Media Capture-API:er för att styra kameran och lägga till en MRC-video- och ljudeffekt för att inkludera virtuella hologram och programljud i stills och videor.

Läs mer om att skapa en anpassad MRC-inspelare (DirectX).

Samtidiga MRC-begränsningar

Du måste vara medveten om vissa begränsningar när flera appar använder mrc samtidigt.

Åtkomst till foto-/videokamera

På HoloLens 1 kommer MRC inte att ta ett foto eller ta en video medan en process spelar in en video eller tar ett foto. Det omvända är också sant: om MRC körs kommer programmet inte att få åtkomst till kameran.

Med HoloLens 2 kan du dela åtkomst till kameran. Om du inte behöver direkt kontroll över upplösningen eller bildfrekvens kan du initiera MediaCapture med egenskapen SharedMode med SharedReadOnly.

Inbyggd åtkomst till MRC-foto/videokamera

Lär dig mer om inbyggd MRC-bild-/videokameraåtkomst (DirectX).

MRC-åtkomst för utvecklare

Vi rekommenderar att du alltid begär exklusiv kontroll för kameran när du använder MRC. Detta säkerställer att programmet har fullständig kontroll över inställningarna för kameran så länge du är medveten om begränsningarna som anges ovan.

Läs mer om MRC-åtkomst för utvecklare (DirectX).

Se även