Zachycení hybridní reality pro vývojáře (DirectX)

Poznámka

Pokyny k nové funkci MRC pro HoloLens 2 najdete v části Vykreslení z fotovoltaické kamery níže.

Než začnete, doporučujeme, abyste se podívali na náš článek s přehledem zachycení hybridní reality .

Vykreslení z fotovoltaické kamery (výslovný souhlas)

HoloLens 2 přidává schopnost imerzivní aplikace vykreslovat z fotovoltaické kamery, zatímco probíhá záznam hybridní reality. Aby se zajistilo, že aplikace podporuje další vykreslování správně, musí se k této funkci přihlásit.

Vykreslení z fotovoltaické kamery nabízí následující vylepšení oproti výchozímu prostředí MRC:

  • Zarovnání hologramu do fyzického prostředí a rukou pro blízké interakce by mělo být přesné ve všech vzdálenostech. Vyhněte se posunu na jiných vzdálenostech, než je zaostřování, jak můžete vidět ve výchozím mrc.
  • Pravé oko v náhlavní soupravě nebude ohroženo, protože nebude použito k vykreslení hologramů pro výstup MRC.

Vykreslování z fotovoltaické kamery můžete povolit ve třech krocích:

  1. Povolit PhotoVideoCamera HolographicViewConfiguration
  2. Zpracování dalšího vykreslení HolographicCamera
  3. Ověřte, že se vaše shadery a kód správně vykreslují z této další HolographicCamera.
Povolení PhotoVideoCamera HolographicViewConfiguration v DirectX

Pokud se chcete přihlásit k vykreslování z fotovoltaické kamery, aplikace jednoduše povolí HolographicViewConfiguration pro PhotoVideoCamera:

var display = Windows.Graphics.Holographic.HolographicDisplay.GetDefault();
var view = display.TryGetViewConfiguration(Windows.Graphics.Holographic.HolographicViewConfigurationKind.PhotoVideoCamera);
if (view != null)
{
    view.IsEnabled = true;
}
Zpracování dalšího vykreslení HolographicCamera v rozhraní DirectX

Když má aplikace výslovný souhlas s vykreslováním z fotovoltaické kamery a spustí se záznam hybridní reality:

  1. Aktivuje se událost CameraAdded z HolographicSpace. Tato událost může být odložena, pokud aplikace v tuto chvíli nemůže zpracovat kameru.
  2. Jakmile se událost dokončí bez nevyřízených odkladů, zobrazí se HolographicCamera v seznamu AddedCameras dalšího prvku HolographicFrame.

Když se zachytávání hybridní reality zastaví (nebo když aplikace zakáže konfiguraci zobrazení, zatímco je záznam hybridní reality spuštěný): HolographicCamera se zobrazí v seznamu RemovedCameras dalšího holographicFrame a událost CameraRemoved holographicSpace se aktivuje.

Do HolographicCamera byla přidána vlastnost ViewConfiguration , která pomáhá identifikovat konfiguraci, do které kamera patří.

Ověřte, že shadery a kód podporují další kamery.

Spusťte záznam hybridní reality a zkontrolujte neobvyklé zarovnání, chybějící obsah nebo problémy s výkonem. Podle potřeby aktualizujte shadery a kód.

Pokud existují určité scény, které nepodporují vykreslování do další kamery, můžete holographicViewConfiguration pro PhotoVideoCamera zakázat.

Zakázání MRC v aplikaci

2D aplikace

2D aplikace se můžou rozhodnout, že se jejich vizuální obsah zakryje, když se spustí zachycení hybridní reality, pomocí:

Imerzivní aplikace

Imerzivní aplikace se můžou rozhodnout, že jejich vizuální obsah budou vyloučené z zachycení hybridní reality, a to pomocí:

Klávesnice s heslem

Aktualizace Windows 10 z května 2019 automaticky vylučuje vizuální obsah ze zachycení hybridní reality, když je viditelné heslo nebo připnutá klávesnice.

Zjištění, kdy je MRC aktivní

Pomocí třídy AppCapture může aplikace zjistit, kdy je spuštěný záznam ze systémové hybridní reality (pro zvuk nebo video).

Poznámka

Rozhraní API GetForCurrentView pro AppCapture může vrátit hodnotu null, pokud na zařízení není k dispozici zachycení hybridní reality. Při pozastavení aplikace je také důležité zrušit registraci události CapturingChanged, jinak se MRC může dostat do blokovaného stavu.

Integrace funkcí MRC z vaší aplikace

Aplikace pro hybridní realitu může z aplikace spustit mrc pořizování fotek nebo videí a zachycený obsah se zpřístupní vaší aplikaci, aniž by se uložil do složky Z fotoaparátu na zařízení. Můžete si vytvořit vlastní záznam MRC nebo využít integrované uživatelské rozhraní pro snímání kamery.

MRC s integrovaným uživatelským rozhraním kamery

Vývojáři můžou pomocí rozhraní API pro zachytávání fotoaparátu získat fotku nebo video z hybridní reality pořízené uživatelem s několika řádky kódu.

Toto rozhraní API spustí integrované uživatelské rozhraní kamery MRC, ve kterém můžou uživatelé pořizovat fotku nebo video, a vrátí výsledný snímek do vaší aplikace. Pokud potřebujete přidat vlastní uživatelské rozhraní kamery nebo přístup na nižší úrovni k zachytávání datových proudů, můžete si vytvořit vlastní zapisovač Mixed Reality Capture.

MRC se snímkem obrazovky

V aktualizaci HoloLens 2 z května 2021 (Windows Holographic, verze 21H1 build 20346.1002) můžou vývojáři použít rozhraní API pro zachycení obrazovky k vyžádání streamu snímků videa hybridní reality.

Vytvoření vlastního záznamu MRC

I když uživatel může vždy aktivovat fotku nebo video pomocí systémové služby mrc capture, aplikace může chtít vytvořit vlastní aplikaci fotoaparátu, která bude obsahovat hologramy ve streamu kamery stejně jako MRC. To aplikaci umožňuje spustit záznam ze vstupu uživatele, vytvořit vlastní uživatelské rozhraní pro záznam nebo přizpůsobit nastavení MRC, abychom mohli uvést několik příkladů.

HoloStudio přidává vlastní MRC kameru s efekty MRC

HoloStudio přidává vlastní MRC kameru s efekty MRC

Jiné aplikace to můžou udělat pomocí rozhraní API Windows Media Capture k ovládání kamery a přidáním efektu VIDEA a zvuku MRC, který zahrne virtuální hologramy a zvuk aplikací do záběrů a videí.

Aplikace mají dvě možnosti přidání efektu:

Poznámka

Sada Visual Studio nerozpozná obor názvů Windows.Media.MixedRealityCapture, ale řetězce jsou stále platné.

Efekt videa MRC (Windows.Media.MixedRealityCapture.MixedRealityCaptureVideoEffect)

Název vlastnosti Typ Výchozí hodnota Popis
StreamType UINT32 (MediaStreamType) 1 (VideoZáznam) Popište, pro který datový proud zachycení se tento efekt používá. Zvuk není dostupný.
HologramCompositionEnabled boolean TRUE Příznak pro povolení nebo zakázání hologramů v záznamu videa
RecordingIndicatorEnabled boolean TRUE Příznak pro povolení nebo zakázání indikátoru záznamu na obrazovce během zachytávání hologramů
VideoStabilizaceEnabled boolean FALSE Příznak pro povolení nebo zakázání stabilizace videa pomocí sledování HoloLens.
VideoStabilizationBufferLength UINT32 0 Nastavte, kolik historických snímků se použije ke stabilizaci videa. Hodnota 0 je latence 0 a z hlediska výkonu je téměř "volná". 15 se doporučuje pro nejvyšší kvalitu (za cenu 15 snímků latence a paměti).
GlobalOpacityCoefficient float 0.9 (HoloLens) 1.0 (Imerzivní náhlavní souprava) Koeficient globálního krytí hologramu se nastaví v rozsahu od 0,0 (zcela průhledné) do 1,0 (zcela neprůhledné).
BlankOnProtectedContent boolean FALSE Příznak pro povolení nebo zakázání vrácení prázdného rámce, pokud existuje aplikace pro UPW 2d s chráněným obsahem. Pokud má tento příznak hodnotu false a aplikace pro 2D UWP zobrazuje chráněný obsah, nahradí se aplikace pro 2D UWP texturou chráněného obsahu v náhlavní soupravě i v zachycení hybridní reality.
ZobrazitHiddenMesh boolean FALSE Příznak pro povolení nebo zakázání zobrazení skryté sítě oblastí a sousedního obsahu holografické kamery
OutputSize Velikost 0, 0 Nastavte požadovanou velikost výstupu po oříznutí pro stabilizaci videa. Výchozí velikost oříznutí je zvolena, pokud je zadána hodnota 0 nebo je zadána neplatná velikost výstupu.
OutputSubtype Řetězec Nv12 Nastavte požadovaný podtyp výstupu po sestavení hologramu nebo stabilizaci videa. Podporuje Nv12 a Argb32MediaEncodingSubtypes.
PreferredHologramPerspective UINT32 Vykreslení z nastavení Kamery na portálu zařízení s Windows Výčet používaný k označení, která konfigurace zobrazení holografické kamery má být zachycena: 0 (Zobrazení) znamená, že aplikace nebude požádána o vykreslení z fotoaparátu nebo videokamery, 1 (PhotoVideoCamera) požádá aplikaci o vykreslení z fotoaparátu nebo videokamery (pokud to aplikace podporuje). Podporováno pouze v HoloLens 2

Poznámka

Výchozí hodnotu PreferredHologramPerspective můžete změnit na portálu zařízení s Windows tak, že přejdete na stránku Mixed Reality Capture a zrušíte zaškrtnutí políčka Vykreslit z fotoaparátu. Výchozí nastavení je 1 (PhotoVideoCamera), ale jeho zaškrtnutím můžete nastavit hodnotu 0 (Zobrazení).

Výchozí hodnota PreferredHologramPerspective byla 0 (Display) před aktualizací z června 2020 (Windows Holographic verze 2004, build 19041.1106 a Windows Holographic verze 1903 build 18362.1064).

Podpora pro OutputSubtype byla přidána v aktualizaci z května 2021 (Windows Holographic, verze 21H1 build 20346.1002).

Zvukový efekt MRC (Windows.Media.MixedRealityCapture.MixedRealityCaptureAudioEffect)

Název vlastnosti Typ Výchozí hodnota Popis
MixerMode UINT32 2 (zvuk mikrofonu a systému) Výčet používaný k označení, které zdroje zvuku by se měly použít: 0 (pouze zvuk mikrofonu), 1 (pouze systémový zvuk), 2 (zvuk mikrofonu a systémového zvuku)
LoopbackGain float Nastavení App Audio Gain na portálu zařízení s Windows Získání, které se použije na hlasitost systémového zvuku. Rozsahy od 0.0 do 5.0. Podporováno pouze v HoloLens 2
MicrophoneGain float Nastavení Zesílení zvuku mikrofonu na portálu zařízení s Windows Zesílení, které se použije na hlasitost mikrofonu. Rozsahy od 0.0 do 5.0. Podporováno pouze v HoloLens 2

Poznámka

Výchozí hodnotu LoopbackGain nebo MicrophoneGain můžete změnit na portálu zařízení s Windows tak, že přejdete na stránku Mixed Reality Capture a upravíte posuvník vedle příslušného nastavení. Obě nastavení mají výchozí hodnotu 1.0, ale je možné je nastavit na libovolnou hodnotu mezi 0,0 a 5,0.

Použití portálu zařízení s Windows ke konfiguraci výchozích hodnot gain bylo přidáno v aktualizaci z června 2020 (Windows Holographic verze 2004 build 19041.1106 a Windows Holographic verze 1903 build 18362.1064).

Souběžná omezení MRC

Při přístupu k MRC současně více aplikací je potřeba mít na paměti určitá omezení.

Přístup k fotokameře nebo videokameře

V HoloLensu 1 se mrc nepodaří zachytit fotku nebo zachytit video, když proces zaznamenává video nebo natáčí fotku. Platí to i opačně: pokud je mrc spuštěný, aplikace nezískute přístup ke kameře.

S HoloLens 2 můžete sdílet přístup ke kameře. Pokud nepotřebujete přímou kontrolu nad rozlišením nebo snímkovou frekvencí, můžete inicializovat MediaCapture pomocí vlastnosti SharedMode s SharedReadOnly.

Integrovaný přístup k fotoaparátu a videokamery MRC

Funkce MRC integrovaná do Windows 10 (prostřednictvím Cortany, nabídky Start, hardwarových zkratek, Miracastu, Portálu zařízení s Windows):

  • Ve výchozím nastavení se spustí s Funkcí ExclusiveControl.

Do subsystému MRC se ale přidala podpora pro fungování ve sdíleném režimu:

  • Pokud aplikace požádá o přístup ExclusiveControl k fotokameře nebo videokameře, integrované MRC automaticky přestane používat fotokameru nebo videokameru, takže žádost aplikace bude úspěšná.
  • Pokud se spustí integrovaný MRC, zatímco aplikace má ExclusiveControl, předdefinované MRC se spustí v režimu SharedReadOnly.

Tato funkce sdíleného režimu má určitá omezení:

  • Fotka prostřednictvím Cortany, hardwarových zkratek nebo nabídky Start: Vyžaduje aktualizaci Windows 10 z dubna 2018 (nebo novější).
  • Video prostřednictvím Cortany, hardwarových zkratek nebo nabídky Start: Vyžaduje aktualizaci Windows 10 z dubna 2018 (nebo novější).
  • Streamování MRC přes Miracast: Vyžaduje aktualizaci Windows 10 z října 2018 (nebo novější).
  • Streamování MRC přes portál zařízení s Windows nebo přes doprovodnou aplikaci HoloLens: Vyžaduje HoloLens 2

Poznámka

Rozlišení a snímková frekvence integrovaného uživatelského rozhraní kamery MRC se můžou snížit oproti normálním hodnotám, když fotoaparát nebo videokameru používá jiná aplikace.

Přístup MRC pro vývojáře

Při používání MRC doporučujeme vždy požádat o výhradní kontrolu kamery. Tím zajistíte, že vaše aplikace bude mít plnou kontrolu nad nastavením kamery, pokud víte o výše uvedených omezeních.

Upozornění

Než budete pokračovat, nezapomeňte si pečlivě přečíst poznámky sharingmode .

  • Nastavte kameru požadovaným způsobem.
  • Spusťte aplikaci, zachyťte snímky videa pomocí spouštěcího rozhraní API a pak povolte MRC.

Upozornění

Pokud spustíte MRC před spuštěním aplikace, nemůžeme zaručit, že funkce bude fungovat podle očekávání.

Úplný vzorek výše uvedeného procesu najdete ve vzorové ukázce holografického sledování obličeje.

Poznámka

Před aktualizací Windows 10 z dubna 2018 se vlastní záznam MRC aplikace vzájemně vylučoval se systémem MRC (pořizování fotek, pořizování videí nebo streamování z Portálu zařízení s Windows).

Viz také