Delen via


Mixed reality capture voor ontwikkelaars (DirectX)

Notitie

Zie Render van de PV-camera hieronder voor hulp bij een nieuwe MRC-functie voor HoloLens 2.

Voordat u hier aan de slag gaat, raden we u aan het overzichtsartikel over het vastleggen van mixed reality te bekijken.

Renderen vanaf de PV-camera (opt-in)

HoloLens 2 voegt de mogelijkheid toe dat een insluitende app wordt weergegeven vanaf de PV-camera terwijl mixed reality-opname wordt uitgevoerd. Om ervoor te zorgen dat de app de extra weergave correct ondersteunt, moet de app zich aanmelden voor deze functionaliteit.

Renderen vanaf de PV-camera biedt de volgende verbeteringen ten opzichte van de standaard MRC-ervaring:

  • Hologramuitlijning met uw fysieke omgeving en handen voor bijna-interacties moeten op alle afstanden nauwkeurig zijn. Vermijd een offset op andere afstanden dan het focuspunt, zoals u in de standaard MRC kunt zien.
  • Het rechteroog in de headset wordt niet aangetast, omdat deze niet wordt gebruikt om de hologrammen voor de MRC-uitvoer weer te geven.

Er zijn drie stappen om rendering vanuit de PV-camera in te schakelen:

  1. De PhotoVideoCamera HolographicViewConfiguration inschakelen
  2. De extra HolographicCamera-render verwerken
  3. Controleer of uw shaders en code correct worden weergegeven vanuit deze extra HolographicCamera
De PhotoVideoCamera HolographicViewConfiguration inSchakelen in DirectX

Als u wilt kiezen voor rendering van de PV Camera, schakelt een app de HolographicViewConfiguration van de PhotoVideoCamera in:

var display = Windows.Graphics.Holographic.HolographicDisplay.GetDefault();
var view = display.TryGetViewConfiguration(Windows.Graphics.Holographic.HolographicViewConfigurationKind.PhotoVideoCamera);
if (view != null)
{
    view.IsEnabled = true;
}
De extra HolographicCamera-render verwerken in DirectX

Wanneer de app heeft gekozen voor weergave vanaf de PV-camera en mixed reality-opname wordt gestart:

  1. De CameraAdded-gebeurtenis van HolographicSpace wordt geactiveerd. Deze gebeurtenis kan worden uitgesteld als de app de camera op dit moment niet kan verwerken.
  2. Zodra de gebeurtenis is voltooid zonder openstaande uitstelgegevens, wordt de HolographicCamera weergegeven in de lijst AddedCameras van het volgende HolographicFrame.

Wanneer het vastleggen van mixed reality stopt (of als de app de weergaveconfiguratie uitschakelt terwijl mixed reality-opname wordt uitgevoerd): de HolographicCamera wordt weergegeven in de lijst RemovedCameras van het volgende HolographicFrame en de gebeurtenis CameraRemoved van HolographicSpace wordt geactiveerd.

Er is een Eigenschap ViewConfiguration toegevoegd aan HolographicCamera om de configuratie te identificeren waartoe een camera behoort.

Controleren of shaders en code aanvullende camera's ondersteunen

Voer een mixed reality-opname uit en controleer op ongebruikelijke uitlijning, ontbrekende inhoud of prestatieproblemen. Shaders en code bijwerken, indien van toepassing.

Als er bepaalde scènes zijn die geen ondersteuning bieden voor rendering naar een extra camera, kunt u de HolographicViewConfiguration van de PhotoVideoCamera uitschakelen.

MRC uitschakelen in uw app

2D-app

2D-apps kunnen ervoor kiezen om hun visuele inhoud te laten verdoezelen wanneer Mixed Reality Capture wordt uitgevoerd door:

Insluitende app

Insluitende apps kunnen ervoor kiezen om hun visuele inhoud uit te sluiten van mixed reality capture door:

Wachtwoordtoetsenbord

Met de Update van Windows 10 mei 2019 wordt visuele inhoud automatisch uitgesloten van mixed reality capture wanneer een wachtwoord of pincodetoetsenbord zichtbaar is.

Weten wanneer MRC actief is

De AppCapture-klasse kan door een app worden gebruikt om te weten wanneer het vastleggen van mixed reality wordt uitgevoerd (voor audio of video).

Notitie

De GetForCurrentView-API van AppCapture kan null retourneren als mixed reality capture niet beschikbaar is op het apparaat. Het is ook belangrijk om de registratie van de captureingChanged-gebeurtenis ongedaan te maken wanneer uw app wordt onderbroken, anders kan MRC een geblokkeerde status krijgen.

MRC-functionaliteit integreren vanuit uw app

Uw mixed reality-app kan MRC-foto- of videoopname starten vanuit de app en de vastgelegde inhoud wordt beschikbaar gemaakt voor uw app zonder op te slaan in het 'Camera-album' van het apparaat. U kunt een aangepaste MRC-recorder maken of profiteren van de ingebouwde gebruikersinterface voor het vastleggen van camera's.

MRC met ingebouwde camera-UI

Ontwikkelaars kunnen de CAMERA Capture UI-API gebruiken om een door de gebruiker vastgelegde mixed reality-foto of -video op te halen met slechts een paar regels code.

Met deze API wordt de ingebouwde GEBRUIKERSinterface van de MRC-camera gestart, waar gebruikers een foto of video kunnen maken en de resulterende opname naar uw app kunnen retourneren. U kunt een aangepaste Mixed Reality Capture-recorder maken als u uw eigen cameragebruikersinterface of toegang op lager niveau moet toevoegen om streams vast te leggen.

MRC met schermopname

Met de HoloLens 2 mei 2021-update (Windows Holographic, versie 21H1 build 20346.1002) kunnen ontwikkelaars de Schermopname-API gebruiken om een stream van mixed reality-videoframes aan te vragen.

Een aangepaste MRC-recorder maken

Hoewel de gebruiker altijd een foto of video kan activeren met behulp van de MRC-opnameservice van het systeem, wil een toepassing mogelijk een aangepaste camera-app maken die hologrammen in de camerastream bevat, net als MRC. Hierdoor kan de toepassing opnamen starten van gebruikersinvoer, aangepaste opname-UI maken of MRC-instellingen aanpassen om enkele voorbeelden te noemen.

HoloStudio voegt een aangepaste MRC-camera toe met MRC-effecten

HoloStudio voegt een aangepaste MRC-camera toe met MRC-effecten

Andere toepassingen kunnen dit doen met behulp van de Windows Media Capture-API's om de camera te beheren en een MRC-video- en audio-effect toe te voegen om virtuele hologrammen en toepassingsaudio in stills en video's op te nemen.

Toepassingen hebben twee opties om het effect toe te voegen:

Notitie

De naamruimte Windows.Media.MixedRealityCapture wordt niet herkend door Visual Studio, maar de tekenreeksen zijn nog steeds geldig.

MRC Video Effect (Windows.Media.MixedRealityCapture.MixedRealityCaptureVideoEffect)

Eigenschapsnaam Type Standaardwaarde Beschrijving
StreamType UINT32 (MediaStreamType) 1 (VideoRecord) Beschrijven voor welke opnamestroom dit effect wordt gebruikt. Audio is niet beschikbaar.
HologramCompositionEnabled boolean TRUE Vlag voor het in- of uitschakelen van hologrammen in video-opname.
RecordingIndicatorEnabled boolean TRUE Vlag voor het in- of uitschakelen van opnameindicator op het scherm tijdens het vastleggen van hologrammen.
VideoStabilizationEnabled boolean FALSE Vlag om videostabilisatie mogelijk te maken of uit te schakelen, mogelijk gemaakt door de HoloLens-tracker.
VideoStabilizationBufferLength UINT32 0 Stel in hoeveel historische frames worden gebruikt voor videostabilisatie. 0 is 0-latentie en bijna 'vrij' vanuit het perspectief van energie en prestaties. 15 wordt aanbevolen voor de hoogste kwaliteit (tegen de kosten van 15 frames met latentie en geheugen).
GlobalOpacityCoefficient zwevend 0.9 (HoloLens) 1.0 (Insluitende headset) Stel de globale dekkingscoëfficiënt van hologram in tussen 0,0 (volledig transparant) en 1,0 (volledig ondoorzichtig).
BlankOnProtectedContent boolean FALSE Vlag om een leeg frame in of uit te schakelen als er een 2d UWP-app met beveiligde inhoud wordt weergegeven. Als deze vlag onwaar is en een 2d UWP-app beveiligde inhoud weergeeft, wordt de 2d UWP-app vervangen door een beveiligd inhoudspatroon in zowel de headset als in de mixed reality-opname.
ShowHiddenMesh boolean FALSE Vlag om de holografische camera's verborgen gebied mesh en aangrenzende inhoud weer te geven of uit te schakelen.
OutputSize Tekengrootte 0, 0 Stel de gewenste uitvoergrootte in na bijsnijden voor videostabilisatie. Er wordt een standaard bijsnijdgrootte gekozen als 0 of een ongeldige uitvoergrootte is opgegeven.
OutputSubtype String Nv12 Stel het gewenste uitvoersubtype in na hologramsamenstelling en/of videostabilisatie. Ondersteunt Nv12 en Argb32 MediaEncodingSubtypes.
PreferredHologramPerspective UINT32 Renderen vanuit camera-instelling in de Windows-apparaatportal Enum dat wordt gebruikt om aan te geven welke holografische cameraweergaveconfiguratie moet worden vastgelegd: 0 (Display) betekent dat de app niet wordt gevraagd om weer te geven van de foto-/videocamera, 1 (PhotoVideoCamera) vraagt de app om weer te geven van de foto-/videocamera (als de app dit ondersteunt). Alleen ondersteund op HoloLens 2

Notitie

U kunt de standaardwaarde van PreferredHologramPerspective wijzigen in de Windows-apparaatportal door naar de pagina Mixed Reality Capture te gaan en Render van camera uit te schakelen. De instelling wordt standaard ingesteld op 1 (PhotoVideoCamera), maar kan worden uitgeschakeld om deze in te stellen op 0 (Display).

De standaardwaarde van PreferredHologramPerspective was 0 (Display) vóór de update van juni 2020 (Windows Holographic, versie 2004 build 19041.1106 en Windows Holographic, versie 18362.1064).

Ondersteuning voor OutputSubtype is toegevoegd met de update van mei 2021 (Windows Holographic, versie 21H1 build 20346.1002).

MRC Audio Effect (Windows.Media.MixedRealityCapture.MixedRealityCaptureAudioEffect)

Eigenschapsnaam Type Standaardwaarde Beschrijving
MixerMode UINT32 2 (microfoon en systeemaudio) Enum gebruikt om aan te geven welke audiobronnen moeten worden gebruikt: 0 (alleen microfoonaudio), 1 (alleen systeemaudio), 2 (microfoon en systeemaudio)
LoopbackGain zwevend App Audio Gain-instelling in de Windows-apparaatportal Gain to apply to system audio volume. Varieert van 0,0 tot 5.0. Alleen ondersteund op HoloLens 2
MicrophoneGain zwevend Mic Audio Gain-instelling in de Windows-apparaatportal Versterking om toe te passen op microfoonvolume. Varieert van 0,0 tot 5.0. Alleen ondersteund op HoloLens 2

Notitie

U kunt de standaardwaarde van LoopbackGain of MicrophoneGain wijzigen in de Windows-apparaatportal door naar de pagina Mixed Reality Capture te gaan en de schuifregelaar naast hun respectieve instellingen aan te passen. Beide instellingen zijn standaard ingesteld op 1.0, maar kunnen worden ingesteld op elke waarde tussen 0,0 en 5,0.

Windows Device Portal gebruiken om de standaardwinstwaarden te configureren, is toegevoegd met de update van juni 2020 (Windows Holographic, versie 2004 build 19041.1106 en Windows Holographic, versie 1903 build 18362.1064).

Gelijktijdige MRC-beperkingen

U moet rekening houden met bepaalde beperkingen wanneer meerdere apps tegelijkertijd toegang hebben tot MRC.

Toegang tot foto-/videocamera's

Op HoloLens 1 kan MRC geen foto maken of video vastleggen terwijl een proces video opneemt of een foto maakt. Het omgekeerde is ook waar: als MRC wordt uitgevoerd, krijgt de toepassing geen toegang tot de camera.

Met HoloLens 2 kunt u toegang tot de camera delen. Als u geen directe controle over de resolutie of framesnelheid nodig hebt, kunt u MediaCapture initialiseren met behulp van de eigenschap SharedMode met SharedReadOnly.

Ingebouwde MRC-foto- en videocameratoegang

MRC-functionaliteit ingebouwd in Windows 10 (via Cortana, startmenu, hardwaresnelkoppelingen, Miracast, Windows-apparaatportal):

  • Wordt standaard uitgevoerd met ExclusiveControl

Er is echter ondersteuning toegevoegd aan het MRC-subsysteem voor gebruik in een gedeelde modus:

  • Als een app ExclusieveControl-toegang tot de foto-/videocamera aanvraagt, stopt de ingebouwde MRC automatisch met het gebruik van de foto-/videocamera, zodat de aanvraag van de app slaagt
  • Als de ingebouwde MRC is gestart terwijl een app ExclusiveControl heeft, wordt de ingebouwde MRC uitgevoerd in de modus SharedReadOnly

Deze functionaliteit voor de gedeelde modus heeft bepaalde beperkingen:

  • Foto via Cortana, hardwaresneltoetsen of startmenu: vereist de Update van Windows 10 april 2018 (of hoger)
  • Video via Cortana, hardwaresneltoetsen of startmenu: vereist de Update van Windows 10 april 2018 (of hoger)
  • MRC streamen via Miracast: vereist de Update van Windows 10 oktober 2018 (of hoger)
  • MRC streamen via windows-apparaatportal of via de HoloLens-companion-app: HoloLens 2 vereist

Notitie

De resolutie en framesnelheid van de ingebouwde MRC-camera-UI kunnen worden verminderd met de normale waarden wanneer een andere app de foto-/videocamera gebruikt.

MRC-toegang voor ontwikkelaars

U wordt aangeraden altijd exclusief beheer voor de camera aan te vragen bij het gebruik van MRC. Dit zorgt ervoor dat uw toepassing volledige controle heeft over de instellingen voor de camera zolang u zich bewust bent van de hierboven genoemde beperkingen.

Let op

Lees de opmerkingen over SharingMode zorgvuldig voordat u doorgaat.

  • Stel uw camera op de gewenste manier in
  • Start de app, leg videoframes vast met de start-API en schakel MRC in

Let op

Als u MRC start voordat u uw app start, kunnen we niet garanderen dat de functie werkt zoals verwacht.

U vindt een volledig voorbeeld van het bovenstaande proces in het holografische voorbeeld van gezichtstracering.

Notitie

Vóór de Update van Windows 10 april 2018 was de aangepaste MRC-recorder van een app wederzijds exclusief met systeem-MRC (foto's vastleggen, video's vastleggen of streamen vanuit de Windows-apparaatportal).

Zie ook