Mixad verklighetsfångst för utvecklare (DirectX)

Anteckning

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

Innan du börjar här rekommenderar vi att du tar en titt på vår översiktsartikel om mixad verklighet .

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

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

Återgivning från PV-kameran ger följande förbättringar jämfört med standard-MRC-upplevelsen:

  • 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 på andra avstånd än fokuspunkten som du kan se i standard-MRC.
  • Det högra ögat i headsetet kommer inte att komprometteras, eftersom det inte används för att återge hologram för MRC-utdata.

Det finns tre steg för att aktivera återgivning från PV-kameran:

  1. Aktivera PhotoVideoCamera HolographicViewConfiguration
  2. Hantera ytterligare HolographicCamera-återgivning
  3. Kontrollera att dina skuggningar och kod återges korrekt från den här ytterligare HolographicCamera
Aktivera PhotoVideoCamera HolographicViewConfiguration i DirectX

Om du vill välja att återge från PV-kameran aktiverar en app helt enkelt PhotoVideoCameras HolographicViewConfiguration:

var display = Windows.Graphics.Holographic.HolographicDisplay.GetDefault();
var view = display.TryGetViewConfiguration(Windows.Graphics.Holographic.HolographicViewConfigurationKind.PhotoVideoCamera);
if (view != null)
{
    view.IsEnabled = true;
}
Hantera ytterligare HolographicCamera-återgivning i DirectX

När appen har valt att rendera från PV-kameran och hämtningen av mixad verklighet startar:

  1. HolographicSpaces CameraAdded-händelse utlöses. Den här händelsen kan skjutas upp om appen inte kan hantera kameran just nu.
  2. När händelsen har slutförts utan några utestående uppskjutningar visas HolographicCamera i nästa HolographicFrames AddedCameras-lista.

När avbildningen av mixad verklighet stoppas (eller om appen inaktiverar visningskonfigurationen medan mixed reality-avbildningen körs): HolographicCamera visas i nästa HolographicFrame-lista borttagnaCameras och HolographicSpace-händelsen CameraRemoved utlöses.

En ViewConfiguration-egenskap har lagts till i HolographicCamera för att identifiera konfigurationen som en kamera tillhör.

Verifiera skuggningar och kod stöder ytterligare kameror

Kör en mixed reality-avbildning och sök efter ovanliga anpassningsproblem, innehåll som saknas eller prestandaproblem. Uppdatera skuggningar och kod efter behov.

Om det finns vissa scener som inte har stöd för rendering till en extra kamera kan du inaktivera HolographicViewConfiguration för PhotoVideoCamera.

Inaktivera MRC i din app

2D-app

2D-appar kan välja att få sitt visuella innehåll dolt när mixed reality-avbildningen körs med:

Avancerad app

Uppslukande appar kan välja att låta sitt visuella innehåll undantas från mixad verklighet genom att:

Lösenordstangentbord

Med uppdateringen Windows 10 maj 2019 undantas visuellt innehåll automatiskt från mixad verklighet när ett lösenord eller ett pin-tangentbord visas.

Veta när MRC är aktivt

AppCapture-klassen kan användas av en app för att veta när avbildning av system mixed reality körs (för antingen ljud eller video).

Anteckning

AppCaptures GetForCurrentView-API kan returnera null om mixed reality-avbildning inte är tillgängligt på enheten. Det är också viktigt att avregistrera händelsen CapturingChanged när appen är avstängd, annars kan MRC hamna i ett blockerat tillstånd.

Integrera MRC-funktioner inifrån din app

Din mixed reality-app kan starta MRC-foto eller videoinspelning inifrån appen, och innehållet som samlas in 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 kamerainspelningsgränssnittet.

MRC med inbyggt kameragränssnitt

Utvecklare kan använda API:et camera capture UI för att få ett användarinspelat foto eller 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 avbildningen till din app. Du kan skapa en anpassad Mixed Reality Capture-inspelare om du behöver lägga till ditt eget kameragränssnitt eller åtkomst på lägre nivå för att samla in strömmar.

MRC med skärmdump

Med uppdateringen HoloLens 2 maj 2021 (Windows Holographic version 21H1 build 20346.1002) kan utvecklare använda SKÄRMDUMP-API:et för att begära en ström av videoramar för mixad verklighet.

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. Detta gör att programmet kan starta avbildningar från användarindata, skapa anpassat inspelningsgränssnitt eller anpassa MRC-inställningar för att nämna några exempel.

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

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

Andra program kan göra detta genom att använda 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 stillbilder och videor.

Program har två alternativ för att lägga till effekten:

Anteckning

Namnområdet Windows.Media.MixedRealityCapture identifieras inte av Visual Studio, men strängarna är fortfarande giltiga.

MRC-videoeffekt (Windows.Media.MixedRealityCapture.MixedRealityCaptureVideoEffect)

Egenskapens namn Typ Standardvärde Beskrivning
StreamType UINT32 (MediaStreamType) 1 (VideoRecord) Beskriv vilken avbildningsström som den här effekten används för. Ljud är inte tillgängligt.
HologramCompositionEnabled boolean TRUE Flagga för att aktivera eller inaktivera hologram i videoinspelning.
RecordingIndicatorEnabled boolean TRUE Flagga för att aktivera eller inaktivera inspelningsindikator på skärmen under holograminspelning.
VideoStabilizationEnabled boolean FALSE Flagga för att aktivera eller inaktivera videostabilisering som drivs av HoloLens-spåraren.
VideoStabilizationBufferLength UINT32 0 Ange hur många historiska ramar som används för videostabilisering. 0 är 0 svarstider och nästan "kostnadsfri" ur ett energi- och prestandaperspektiv. 15 rekommenderas för högsta kvalitet (på bekostnad av 15 bildrutor med svarstid och minne).
GlobalOpacityCoefficient flyt 0.9 (HoloLens) 1.0 (Integrerande headset) Ange global opacitetskoefficient för hologram i intervallet 0,0 (helt transparent) till 1,0 (helt ogenomskinlig).
BlankOnProtectedContent boolean FALSE Flagga för att aktivera eller inaktivera retur av en tom ram om det finns en 2D UWP-app som visar skyddat innehåll. Om den här flaggan är falsk och en 2D UWP-app visar skyddat innehåll, kommer 2d UWP-appen att ersättas av en skyddad innehållsstruktur i både headsetet och i mixed reality-avbildningen.
ShowHiddenMesh boolean FALSE Flagga för att aktivera eller inaktivera som visar den holografiska kamerans dolda områdesnät och närliggande innehåll.
OutputSize Storlek 0, 0 Ange önskad utdatastorlek efter beskärning för videostabilisering. En standardstorlek för beskärningen väljs om 0 eller en ogiltig utdatastorlek har angetts.
OutputSubtype Sträng Nv12 Ange önskad utdataundertyp efter hologramkomposition och/eller videostabilisering. Stöder Nv12 och Argb32MediaEncodingSubtypes.
PreferredHologramPerspective UINT32 Rendera från kamerainställningen i Windows-enhetsportalen Uppräkning som används för att ange vilken konfiguration av holografisk kameravy som ska avbildas: 0 (Visa) innebär att appen inte uppmanas att rendera från foto-/videokameran. 1 (PhotoVideoCamera) ber appen att rendera från foto-/videokameran (om appen stöder den). Stöds endast på HoloLens 2

Anteckning

Du kan ändra standardvärdet PreferredHologramPerspective i Windows-enhetsportalen genom att gå till sidan Mixed Reality Capture och avmarkera Rendera från kamera. Inställningen är som standard 1 (PhotoVideoCamera), men kan avmarkeras för att ställa in den på 0 (Visa).

Standardvärdet för PreferredHologramPerspective var 0 (Display) före uppdateringen i juni 2020 (Windows Holographic version 2004 build 19041.1106 och Windows Holographic version 1903 build 18362.1064).

Stöd för OutputSubtype lades till med uppdateringen från maj 2021 (Windows Holographic version 21H1 build 20346.1002).

MRC-ljudeffekt (Windows.Media.MixedRealityCapture.MixedRealityCaptureAudioEffect)

Egenskapens namn Typ Standardvärde Beskrivning
MixerMode UINT32 2 (mikrofon- och systemljud) Uppräkning som används för att ange vilka ljudkällor som ska användas: 0 (endast mikrofonljud), 1 (endast systemljud), 2 (mikrofon- och systemljud)
LoopbackGain flyt Appinställningen Ljudökning i Windows-enhetsportalen Få att ansöka om systemljudvolym. Sträcker sig från 0,0 till 5,0. Stöds endast på HoloLens 2
MicrophoneGain flyt Inställningen Ljudvinst för mikrofon i Windows-enhetsportalen Få för att tillämpa på mic volym. Sträcker sig från 0,0 till 5,0. Stöds endast på HoloLens 2

Anteckning

Du kan ändra standardvärdet för LoopbackGain eller MicrophoneGain i Windows-enhetsportalen genom att gå till sidan Mixed Reality Capture och justera skjutreglaget bredvid deras respektive inställningar. Båda inställningarna är som standard 1,0, men kan anges till valfritt värde mellan 0,0 och 5,0.

Användning av Windows-enhetsportalen för att konfigurera standardvinstvärdena lades till med uppdateringen från juni 2020 (Windows Holographic version 2004 build 19041.1106 och Windows Holographic version 1903 version 18362.1064).

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 misslyckas MRC med att ta ett foto eller spela in video medan en process spelar in video eller tar ett foto. Det omvända är också sant: om MRC körs misslyckas programmet med att få åtkomst till kameran.

Med HoloLens 2 är det möjligt för dig att dela åtkomst till kameran. Om du inte behöver direkt kontroll över upplösningen eller bildfrekvensen kan du initiera MediaCapture med egenskapen SharedMode med SharedReadOnly.

Inbyggd MRC-åtkomst till foton och videokameror

MRC-funktioner som är inbyggda i Windows 10 (via Cortana, Start-menyn, maskinvarugenvägar, Miracast, Windows-enhetsportalen):

  • Körs med ExclusiveControl som standard

Stöd har dock lagts till i MRC-undersystemet för att fungera i ett delat läge:

  • Om en app begär ExclusiveControl-åtkomst till foto-/videokameran slutar inbyggd MRC automatiskt att använda foto-/videokameran så att appens begäran lyckas
  • Om inbyggd MRC startas när en app har ExclusiveControl körs inbyggd MRC i SharedReadOnly-läge

Den här funktionen för delat läge har vissa begränsningar:

  • Foto via Cortana, maskinvarugenvägar eller Start-menyn: Kräver uppdateringen Windows 10 april 2018 (eller senare)
  • Video via Cortana, maskinvarugenvägar eller Start-menyn: Kräver uppdateringen Windows 10 april 2018 (eller senare)
  • Strömmande MRC över Miracast: Kräver Windows 10 uppdatering från oktober 2018 (eller senare)
  • Strömma MRC via Windows-enhetsportalen eller via HoloLens-tillhörande app: Kräver HoloLens 2

Anteckning

Upplösningen och bildfrekvensen för det inbyggda MRC-kameragränssnittet kan minskas från dess normala värden när en annan app använder foto-/videokameran.

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 ditt program har fullständig kontroll över inställningarna för kameran så länge du är medveten om begränsningarna som anges ovan.

Varning

Var noga med att läsa SharingMode-kommentarerna innan du fortsätter.

  • Konfigurera kameran som du vill ha den
  • Starta appen, spela in bildrutor med start-API:et och aktivera sedan MRC

Varning

Om du startar MRC innan du startar appen kan vi inte garantera att funktionen fungerar som förväntat.

Du hittar ett fullständigt exempel på ovanstående process i det holografiska ansiktsspårningsexemplet.

Anteckning

Före uppdateringen Windows 10 april 2018 var en apps anpassade MRC-inspelare ömsesidigt uteslutande med system-MRC (fånga foton, fånga videor eller strömma från Windows-enhetsportalen).

Se även