Mixed Reality-Erfassung für Entwickler (DirectX)

Hinweis

Anleitungen zu einer neuen MRC-Funktion für HoloLens 2 finden Sie unten unter Rendern von der PV-Kamera.

Bevor Sie hier beginnen, empfehlen wir Ihnen, einen Blick in unseren Übersichtsartikel zur Mixed Reality-Aufnahme zu werfen.

Rendern von der PV-Kamera (Opt-In)

HoloLens 2 fügt die Möglichkeit hinzu, dass eine immersive App von der PV-Kamera gerendert werden kann, während Mixed Reality-Aufnahmen ausgeführt werden. Um sicherzustellen, dass die App das zusätzliche Rendern ordnungsgemäß unterstützt, muss die App diese Funktion aktivieren.

Das Rendern von der PV-Kamera bietet die folgenden Verbesserungen gegenüber der standardmäßigen MRC-Benutzeroberfläche:

  • Die Ausrichtung des Hologramms auf Ihre physische Umgebung und ihre Hände für nahe Interaktionen sollte in allen Entfernungen genau sein. Vermeiden Sie einen Offset in anderen Entfernungen als dem Fokuspunkt, wie sie möglicherweise im Standard-MRC angezeigt werden.
  • Das rechte Auge im Headset wird nicht kompromittiert, da es nicht zum Rendern der Hologramme für die MRC-Ausgabe verwendet wird.

Es gibt drei Schritte, um das Rendering von der PV-Kamera zu aktivieren:

  1. Aktivieren der PhotoVideoCamera HolographicViewConfiguration
  2. Behandeln des zusätzlichen HolographicCamera-Renders
  3. Überprüfen Sie, ob Ihre Shader und Der Code über diese zusätzliche HolographicCamera ordnungsgemäß gerendert werden.
Aktivieren der PhotoVideoCamera HolographicViewConfiguration in DirectX

Um sich für das Rendern von der PV-Kamera zu entscheiden, aktiviert eine App einfach die HolographicViewConfiguration der PhotoVideoCamera:

var display = Windows.Graphics.Holographic.HolographicDisplay.GetDefault();
var view = display.TryGetViewConfiguration(Windows.Graphics.Holographic.HolographicViewConfigurationKind.PhotoVideoCamera);
if (view != null)
{
    view.IsEnabled = true;
}
Behandeln des zusätzlichen HolographicCamera-Renders in DirectX

Wenn die App für das Rendern von der PV-Kamera aktiviert ist, und die Mixed Reality-Aufnahme beginnt:

  1. Das CameraAdded-Ereignis von HolographicSpace wird ausgelöst. Dieses Ereignis kann zurückgestellt werden, wenn die App die Kamera derzeit nicht verarbeiten kann.
  2. Sobald das Ereignis ohne ausstehende Verzögerung abgeschlossen wurde, wird die HolographicCamera in der Liste AddCameras des nächsten HolographicFrame angezeigt.

Wenn die Mixed Reality-Aufnahme beendet wird (oder wenn die App die Ansichtskonfiguration deaktiviert, während die Mixed Reality-Aufnahme ausgeführt wird), wird die HolographicCamera in der RemovedCameras-Liste des nächsten HolographicFrame angezeigt, und das CameraRemoved-Ereignis des HolographicSpace wird ausgelöst.

HolographicCamera wurde eine ViewConfiguration-Eigenschaft hinzugefügt, um die Konfiguration zu identifizieren, zu der eine Kamera gehört.

Überprüfen, ob Shader und Code zusätzliche Kameras unterstützen

Führen Sie eine Mixed Reality-Erfassung aus, und suchen Sie nach ungewöhnlichen Ausrichtungen, fehlenden Inhalten oder Leistungsproblemen. Aktualisieren Sie Shader und Code nach Bedarf.

Wenn bestimmte Szenen das Rendern auf einer zusätzlichen Kamera nicht unterstützen können, können Sie die HolographicViewConfiguration von PhotoVideoCamera deaktivieren.

Deaktivieren von MRC in Ihrer App

2D-App

2D-Apps können auswählen, dass ihre visuellen Inhalte verdeckt werden, wenn Mixed Reality-Erfassung ausgeführt wird:

Immersive App

Immersive Apps können auswählen, dass ihre visuellen Inhalte von der Mixed Reality-Aufnahme ausgeschlossen werden:

  • Festlegen von HolographicCameraRenderingParameter IsContentProtectionEnabled zum Deaktivieren der Mixed Reality-Aufnahme für den zugehörigen Frame
  • Festlegen von "IsHardwareContentProtectionEnabled " von HolographicCamera zum Deaktivieren der Mixed Reality-Aufnahme für die zugehörige holografische Kamera

Kennworttastatatur

Mit dem Windows 10 Update vom Mai 2019 werden visuelle Inhalte automatisch von der Mixed Reality-Erfassung ausgeschlossen, wenn ein Kennwort oder eine Pintastat angezeigt wird.

Wissen, wann MRC aktiv ist

Die AppCapture-Klasse kann von einer App verwendet werden, um zu wissen, wann die Mixed Reality-Aufzeichnung des Systems ausgeführt wird (für Audio oder Video).

Hinweis

Die GetForCurrentView-API von AppCapture kann NULL zurückgeben, wenn die Mixed Reality-Erfassung auf dem Gerät nicht verfügbar ist. Es ist auch wichtig, die Registrierung des CapturingChanged-Ereignisses zu aufheben, wenn Ihre App angehalten wird, andernfalls kann MRC in einen blockierten Zustand versetzt werden.

Integrieren von MRC-Funktionen aus Ihrer App

Ihre Mixed Reality-App kann die MRC-Foto- oder Videoaufnahme in der App starten, und der erfasste Inhalt wird für Ihre App verfügbar gemacht, ohne in der "Kamerarolle" des Geräts gespeichert zu werden. Sie können einen benutzerdefinierten MRC-Rekorder erstellen oder die integrierte Kameraaufnahme-Benutzeroberfläche nutzen.

MRC mit integrierter Kamerabenutzeroberfläche

Entwickler können die Kameraaufnahme-UI-API verwenden, um ein vom Benutzer aufgenommenes Mixed Reality-Foto oder Video mit nur wenigen Codezeilen abzurufen.

Diese API startet die integrierte MRC-Kamerabenutzeroberfläche, auf der Benutzer ein Foto oder Video aufnehmen können, und gibt die resultierende Aufnahme an Ihre App zurück. Sie können einen benutzerdefinierten Mixed Reality Capture-Recorder erstellen, wenn Sie eine eigene Kamerabenutzeroberfläche oder einen niedrigeren Zugriff auf Aufzeichnungsdatenströme hinzufügen müssen.

MRC mit Bildschirmaufnahme

Mit dem HoloLens 2 Update vom Mai 2021 (Windows Holographic, Version 21H1 Build 20346.1002) können Entwickler die Bildschirmaufnahme-API verwenden, um einen Stream von Mixed Reality-Videoframes anzufordern.

Erstellen eines benutzerdefinierten MRC-Recorders

Während der Benutzer über den MRC-Erfassungsdienst des Systems immer ein Foto oder Video auslösen kann, möchte eine Anwendung möglicherweise eine benutzerdefinierte Kamera-App erstellen, die Hologramme wie MRC im Kamerastream enthält. Dadurch kann die Anwendung Aufzeichnungen von Benutzereingaben starten, eine benutzerdefinierte Aufzeichnungsoberfläche erstellen oder MRC-Einstellungen anpassen, um einige Beispiele zu nennen.

HoloStudio fügt eine benutzerdefinierte MRC-Kamera mit MRC-Effekten hinzu

HoloStudio fügt eine benutzerdefinierte MRC-Kamera mit MRC-Effekten hinzu

Andere Anwendungen können dazu die Windows Media Capture-APIs verwenden, um die Kamera zu steuern und einen MRC-Video- und Audioeffekt hinzuzufügen, um virtuelle Hologramme und Anwendungsaudio in Stills und Videos einzuschließen.

Anwendungen verfügen über zwei Optionen, um den Effekt hinzuzufügen:

Hinweis

Der Windows.Media.MixedRealityCapture-Namespace wird von Visual Studio nicht erkannt, aber die Zeichenfolgen sind weiterhin gültig.

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

Eigenschaftenname Typ Standardwert BESCHREIBUNG
StreamType UINT32 (MediaStreamType) 1 (VideoRecord) Beschreiben Sie, für welchen Erfassungsstream dieser Effekt verwendet wird. Audio ist nicht verfügbar.
HologramCompositionEnabled boolean true Kennzeichnen, um Hologramme in der Videoaufnahme zu aktivieren oder zu deaktivieren.
RecordingIndicatorEnabled boolean true Kennzeichnen Sie, um die Aufzeichnungsanzeige während der Hologrammerfassung auf dem Bildschirm zu aktivieren oder zu deaktivieren.
VideoStabilizationEnabled boolean false Kennzeichnen Sie, um die Videostabilisierung zu aktivieren oder zu deaktivieren, die vom HoloLens-Tracker unterstützt wird.
VideoStabilizationBufferLength UINT32 0 Legen Sie fest, wie viele verlaufsbezogene Frames für die Videostabilisierung verwendet werden. 0 ist 0-Latenz und aus Leistungs- und Leistungssicht nahezu "frei". 15 wird für höchste Qualität empfohlen (auf Kosten von 15 Frames an Latenz und Arbeitsspeicher).
GlobalOpacityCoefficient float 0.9 (HoloLens) 1.0 (Immersive Headset) Legen Sie den globalen Deckkraftkoeffizienten des Hologramms im Bereich von 0,0 (vollständig transparent) bis 1,0 (vollständig undurchsichtig) fest.
BlankOnProtectedContent boolean false Flag zum Aktivieren oder Deaktivieren der Rückgabe eines leeren Frames, wenn eine 2D-UWP-App geschützte Inhalte anzeigt. Wenn dieses Flag false ist und eine 2D-UWP-App geschützte Inhalte anzeigt, wird die 2D-UWP-App sowohl im Headset als auch in der Mixed Reality-Aufnahme durch eine geschützte Inhaltstextur ersetzt.
ShowHiddenMesh boolean false Flag zum Aktivieren oder Deaktivieren der Anzeige des verborgenen Bereichsgitters der holografischen Kamera und benachbarter Inhalte.
OutputSize Size 0, 0 Legen Sie die gewünschte Ausgabegröße nach dem Zuschneiden für die Videostabilisierung fest. Eine Standardzuschneidegröße wird ausgewählt, wenn 0 oder eine ungültige Ausgabegröße angegeben wird.
OutputSubtype String Nv12 Legen Sie den gewünschten Ausgabeuntertyp nach der Hologrammkomposition und/oder Videostabilisierung fest. Unterstützt Nv12 und Argb32MediaEncodingSubtypes.
PreferredHologramPerspective UINT32 Einstellung "Rendern aus Kamera " im Windows-Geräteportal Aufzählung, die verwendet wird, um anzugeben, welche Konfiguration der holografischen Kameraansicht erfasst werden soll: 0 (Anzeige) bedeutet, dass die App nicht aufgefordert wird, von der Foto-/Videokamera zu rendern, 1 (PhotoVideoCamera) fordert die App auf, von der Foto-/Videokamera zu rendern (sofern die App dies unterstützt). Nur auf HoloLens 2 unterstützt

Hinweis

Sie können den Standardwert von PreferredHologramPerspective im Windows-Geräteportal ändern, indem Sie zur Seite Mixed Reality Aufnahme wechseln und rendern von Kamera deaktivieren. Die Einstellung ist standardmäßig auf 1 (PhotoVideoCamera) festgelegt, kann jedoch deaktiviert werden, um sie auf 0 (Anzeige) festzulegen.

Der Standardwert von PreferredHologramPerspective war vor dem Update vom Juni 2020 0 ( Windows Holographic, Version 2004, Build 19041.1106 und Windows Holographic, Version 1903 Build 18362.1064).

Unterstützung für OutputSubtype wurde mit dem Update vom Mai 2021 (Windows Holographic, Version 21H1 Build 20346.1002) hinzugefügt.

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

Eigenschaftenname Typ Standardwert BESCHREIBUNG
MixerMode UINT32 2 (Mikrofon- und Systemaudio) Enumeration, die verwendet wird, um anzugeben, welche Audioquellen verwendet werden sollen: 0 (nur Mikrofonaudio), 1 (nur Systemaudio), 2 (Mikrofon und Systemaudio)
LoopbackGain float Einstellung "App-Audiogewinn " im Windows-Geräteportal Verstärkung, die auf die Systemaudiolautstärke angewendet werden soll. Reicht von 0,0 bis 5,0. Nur auf HoloLens 2 unterstützt
MicrophoneGain float Mikrofon-Audio-Verstärkungseinstellung im Windows-Geräteportal Verstärkung, die auf die Mikrofonlautstärke angewendet werden soll. Reicht von 0,0 bis 5,0. Nur auf HoloLens 2 unterstützt

Hinweis

Sie können den Standardwert von LoopbackGain oder MicrophoneGain im Windows-Geräteportal ändern, indem Sie zur Seite Mixed Reality Aufnahme navigieren und den Schieberegler neben den jeweiligen Einstellungen anpassen. Beide Einstellungen sind standardmäßig 1,0, können aber auf einen beliebigen Wert zwischen 0,0 und 5,0 festgelegt werden.

Die Verwendung des Windows-Geräteportals zum Konfigurieren der Standardgewinnwerte wurde mit dem Update vom Juni 2020 (Windows Holographic, Version 2004, Build 19041.1106 und Windows Holographic, Version 1903 Build 18362.1064) hinzugefügt.

Gleichzeitige MRC-Einschränkungen

Sie müssen bestimmte Einschränkungen beachten, wenn mehrere Apps gleichzeitig auf MRC zugreifen.

Zugriff auf Foto-/Videokameras

Auf HoloLens 1 kann MRC kein Foto oder Video aufnehmen, während ein Prozess Videos oder Fotos aufnimmt. Umgekehrt gilt auch: Wenn MRC ausgeführt wird, erhält die Anwendung keinen Zugriff auf die Kamera.

Mit HoloLens 2 können Sie den Zugriff auf die Kamera freigeben. Wenn Sie keine direkte Steuerung der Auflösung oder Framerate benötigen, können Sie MediaCapture mithilfe der SharedMode-Eigenschaft mit SharedReadOnly initialisieren.

Integrierter MRC-Foto- und Videokamerazugriff

In Windows 10 integrierte MRC-Funktionalität (über Cortana, Startmenü, Hardwareverknüpfungen, Miracast, Windows-Geräteportal):

  • Wird standardmäßig mit ExclusiveControl ausgeführt.

Es wurde jedoch Unterstützung für das MRC-Subsystem hinzugefügt, um in einem freigegebenen Modus zu arbeiten:

  • Wenn eine App exclusiveControl-Zugriff auf die Foto-/Videokamera anfordert, wird die verwendung der integrierten MRC automatisch beendet, sodass die App-Anforderung erfolgreich ist.
  • Wenn das integrierte MRC gestartet wird, während eine App über ExclusiveControl verfügt, wird das integrierte MRC im SharedReadOnly-Modus ausgeführt.

Für diese Funktion im freigegebenen Modus gelten bestimmte Einschränkungen:

  • Foto über Cortana, Hardwareverknüpfungen oder Startmenü: Erfordert das Windows 10 Update vom April 2018 (oder höher)
  • Video über Cortana, Hardwareverknüpfungen oder Startmenü: Erfordert das Windows 10 Update vom April 2018 (oder höher)
  • Streamen von MRC über Miracast: Erfordert das update vom Windows 10 Oktober 2018 (oder höher)
  • Streamen von MRC über das Windows-Geräteportal oder über die HoloLens-Begleit-App: Erfordert HoloLens 2

Hinweis

Die Auflösung und Bildfrequenz der integrierten BEnutzeroberfläche der MRC-Kamera kann von den normalen Werten reduziert werden, wenn eine andere App die Foto-/Videokamera verwendet.

MRC-Zugriff für Entwickler

Es wird empfohlen, bei Verwendung von MRC immer die exklusive Steuerung für die Kamera anzufordern. Dadurch wird sichergestellt, dass Ihre Anwendung die vollständige Kontrolle über die Einstellungen für die Kamera hat, solange Sie die oben aufgeführten Einschränkungen kennen.

Achtung

Lesen Sie unbedingt die Hinweise zu SharingMode , bevor Sie fortfahren.

  • Richten Sie Ihre Kamera wie gewünscht ein.
  • Starten Sie die App, erfassen Sie Videoframes mit der Start-API, und aktivieren Sie dann MRC.

Achtung

Wenn Sie MRC starten, bevor Sie Ihre App starten, können wir nicht garantieren, dass das Feature wie erwartet funktioniert.

Ein vollständiges Beispiel für den obigen Prozess finden Sie im Beispiel für die holografische Gesichtsverfolgung.

Hinweis

Vor dem Windows 10 Update vom April 2018 wurde der benutzerdefinierte MRC-Recorder einer App mit dem MRC-System (Aufnahme von Fotos, Aufzeichnen von Videos oder Streaming über das Windows-Geräteportal) gegenseitig ausgeschlossen.

Weitere Informationen