Megosztás a következőn keresztül:


QR-kódkövetés áttekintése

A QR-kódmintához tartozó GitHub-adattár elérése:

A Windows Mixed Reality és a HoloLens headsetek segítségével az alkalmazás képes észlelni a QR-kódokat a headset körüli környezetben, és koordinátarendszert hoz létre az egyes kódok valós helyén. A hologramokat ugyanazon a helyen több eszközön is megjelenítheti a megosztott felület létrehozásához. Miután engedélyezte az eszköz webkameráját, felismeri a QR-kódokat a projektek legújabb verzióiban. Az éles környezetben elért legjobb eredmények érdekében javasoljuk, hogy tekintse át az ajánlott eljárásokat ismertető szakaszt .

Ebben a cikkben a következőkkel ismerkedhet meg:

Eszköztámogatás

Termék HoloLens 1. gen HoloLens 2 Modern fejhallgatók
OpenXR ✔️ (Az OpenXR Runtime 113-es verziójával és az OpenXR XR_MSFT_scene_marker kiterjesztéssel)
Mixed Reality Unity beépülő modul ✔️ (Az OpenXR Runtime 113-es verziójával és a Mixed Reality Unity beépülő modullal ARMarkerManager)
Örökölt QR SDK ✔️ ✔️ ✔️

Feljegyzés

Az alábbiak az örökölt QR-kód API-kra vonatkoznak. Javasoljuk, hogy inkább az OpenXR implementációt használja QR-kódokhoz.

Az örökölt QR-kód SDK használatával a QR-kódkövetés modern Windows Mixed Reality headsetekkel asztali számítógépeken a Windows 10 2004-es és újabb verzióiban támogatott. Microsoft.MixedReality.QRCodeWatcher.IsSupported() Az API használatával állapítsa meg, hogy a funkció támogatott-e az aktuális eszközön.

Támogatott QR-kódverziók

Az alábbi táblázat a QR-kód támogatott és nem támogatott verzióit sorolja fel:

  QR-kódverziók
Támogatott:
  • QR Code 1– 10-10-s verziók
  • Mikro QR-kódok M1-M4
  • Minden kódolás
Nem támogatott:
  • QR-kódok 10 – 20 (nem teljes mértékben támogatott)
  • QR-kódok 21+-os verziók
  • Finomított modulok, például: körkörös modulok, tükröződések, fordított (fekete/fehér).
  • Logók
  • Strukturált hozzáfűzések

    Ajánlott eljárások a QR-kódészleléshez

    Csendes zónák a QR-kódok körül

    A helyes olvasáshoz a QR-kódokhoz a kód minden oldala körül margó szükséges. Ez a margó nem tartalmazhat nyomtatott tartalmat, és négy modulból (a kód egyetlen fekete négyzete) szélesnek kell lennie.

    A QR-kód hivatalos dokumentációja további információkat tartalmaz a csendes zónákról.

    Világítás és háttérrendszer

    A QR-kódészlelés minősége érzékeny a különböző megvilágításra és háttérrendszerre.

    • Normál megvilágítási körülmények között biztosítson elegendő kontrasztot a fekete-fehér modulokhoz a jobb teljesítmény érdekében.

    • Szélsőséges, világos megvilágítással vagy sötét háttérrendszerrel rendelkező megvilágítás esetén megpróbálhatja csökkenteni és beállítani a kontrasztot, ami javíthatja a QR-kódok észlelésének sebességét. A QR-kód fehér háttere 255-ről lefelé csökkenthető.

    QR-kódok mérete

    A Windows Mixed Reality és a HoloLens rendszerű eszközök nem működnek 5 cm-nél kisebb oldalú QR-kódokkal.

    Az 5 cm és 10 cm közötti oldalakat tartalmazó QR-kódok esetében az eszköznek elég közel kell lennie a kód észleléséhez. A kód észlelése az átlagosnál hosszabb időt is igénybe vehet.

    A kódok észlelésének pontos ideje nem csak a QR-kódok méretétől függ, hanem attól is, hogy milyen messze van a kódtól. Ha közelebb kerül a kódhoz, az segít eltűnni a méretproblémákat.

    Távolság és szög pozíció a QR-kódtól

    A nyomkövető kamerák csak bizonyos részletességi szintet képesek észlelni. Kis kódok esetén (az oldalak 10 cm-nél kisebb mentén) meglehetősen közel kell lennie. Az 1- es verziójú QR-kód 10 cm-től 25 cm-es méretig terjed, a minimális észlelési távolság 0,15 méter és 0,5 méter között van.

    A méret észlelési távolsága lineárisan nő, de a QR támogatott verziójától vagy modulméretétől is függ. Minél magasabb a verzió, annál kisebbek a modulok, amelyek csak közelebbről észlelhetők. A mikro-QR-kódokat is kipróbálhatja, ha azt szeretné, hogy az észlelés távolsága hosszabb legyen. A QR-észlelés a += 45 deg szögtartományban működik, így biztosítjuk, hogy megfelelő felbontással rendelkezzünk a kód észleléséhez.

    Egyéb észlelési szempontok:

    • Az íves felületek QR-kódjai nem támogatottak.
    • A síkon belüli tájolás támogatott. A jobb észlelés érdekében a síkon kívül = +-45 értéknek kell lennie <.
    • A QR-kód fizikai méretének legalább 2/3 képpontos modulokkal kell rendelkeznie. Megjegyzés: A QR-kódok magasabb verzióinak kisebb moduljai lesznek.

    A QR-kód távolsága és mérete közötti kompromisszumos kapcsolat az optimális észleléshez lásd a következő grafikont:

    QR-kód távolságdiagramja

    Fontos

    Mindig győződjön meg arról, hogy elegendő kontraszttal és megfelelő szegélyrel rendelkezik.

    QR-kódadatok kezelése

    A Windows Mixed Reality és a HoloLens rendszerű eszközök rendszerszinten észlelik a QR-kódokat az illesztőprogramban. Amikor az eszköz újraindul vagy az illesztőprogram újraindul, az észlelt QR-kódok előzményei törlődnek. Az újra felfedezett QR-kódok új objektumokként lesznek kezelve.

    Javasoljuk, hogy úgy konfigurálja az alkalmazást, hogy figyelmen kívül hagyja az adott időbélyegnél régebbi QR-kódokat, amelyek az alkalmazásban megadhatóak. A QR Code API megadja az utolsó észlelés időpontját. A legtöbb alkalmazásfejlesztő a rendszeridőt fogja használni az alkalmazás elindításakor a QR-kód észlelésének időpontjának meghatározásához.

    A QR-kód adatai nem alkalmazásspecifikusak. Az alkalmazás indításakor megjelenik a rendelkezésre álló QR-kódok listája. Az alkalmazás fejlesztője határozza meg, hogy mely QR-kódok relevánsak ehhez az alkalmazáshoz.

    QR-kód elhelyezése egy térben

    A QR-kódok helyére és elhelyezésére vonatkozó javaslatokért tekintse meg a HoloLens környezeti szempontjait.

    Hibaelhárítás és gyakori kérdések

    Milyen képességekre van szükség?

    Ha engedélyezni szeretné a QR-kódkövetést a HoloLens-alkalmazásban, adja hozzá a webkamera képességét az alkalmazás jegyzékfájljához. Ha a Unityben fejleszt, ezt a lejátszó beállításai alapján konfigurálhatja.

    Emellett előfordulhat, hogy a felhasználókat az engedélyek párbeszédpanelje kéri az alkalmazás webkamera engedélyeinek megadásához. Ez csak egyszer történik egy alkalmazás élettartama alatt. Olyan esetekben, amikor az alkalmazás kifejezetten webkamera-hozzáférést kér, a párbeszédpanel nem jelenik meg újra.

    A WebCam képességgel rendelkező Unity-alkalmazások esetében a jelenetben való ARMarkerManager engedélyezés aktiválhatja a webkamera engedély párbeszédpaneljének megjelenítését.

    Natív OpenXR C++ alkalmazások esetén az xrComputeNewSceneMSFT és a benne lévő XrNewSceneComputeInfoMSFT::requestedFeatures XR_SCENE_COMPUTE_FEATURE_MARKER_MSFT kezdeti hívások aktiválhatják az engedélyek párbeszédpanelt.

    Feljegyzés

    Az alábbiak az örökölt QR-kód API-kra vonatkoznak. Javasoljuk, hogy inkább az OpenXR implementációt használja QR-kódokhoz.

    Hozzá kell adnia a webkamerás képességet a jegyzékhez (a Unity Capabilities jelölőnégyzetében). Ha standard UWP-projektként készül, az a megoldásprojekt package.appxmanifestjében is megtalálható.

    Az örökölt QR-kód SDK-ban kérjen hozzáférést a következő metódus meghívásával:

    #if WINDOWS_UWP
    
    async QRCodeWatcher.RequestAccessAsync();
    
    #endif
    

    A hozzáférési állapotnak a következőnek kell lennie (status == QRCodeWatcherAccessStatus::Allowed): .

    Ha a hozzáférés megtagadva van, akkor a szolgáltatás a hozzáférés megtagadva lesz a QRTrackingkezdéskor.

    Ezt az API-t az objektum létrehozása QRCodeWatcher előtt kell meghívni.

    Ha a projektet a Unityből futtatja, arról is gondoskodnia kell, hogy a felhasználói felületi szálról hívjon. Ellenkező esetben az API mindig megtagadva jelenik meg. További információ: AppCallbacks osztály a Unity Kézikönyvben.

    A unity-projekt beállításával kapcsolatos további információkért lásd a Unity konfigurálását a Windows Mixed Realityhez.

    Hogyan a QR-kódkövetési funkció működését HoloLens 2-eszközökön?

    A QR-nyomkövetés automatikus a HoloLens 2-ben, és hozzá kell adnia az alkalmazáshoz a "webkamera" funkciót.

    Hol találhatók az API beépülő modul fájljai?

    Az alkalmazásoknak a HoloLen OpenXR-futtatókörnyezetét kell használniuk a QR-kódok észleléséhez. Az OpenXR for Windows Mixed Reality (113.2403.5001 vagy újabb) QR-kódtámogatást biztosít HoloLens-eszközökön.

    A Unity-alkalmazások esetében a QR-kód támogatása a ARMarkerManager Mixed Reality OpenXR beépülő modullal biztosított összetevőn keresztül történik.

    A nem Unity-alkalmazások QR-kódjának támogatásához használja az OpenXR XR_MSFT_scene_marker bővítményt.

    Feljegyzés

    Az alábbiak az örökölt QR-kód API-kra vonatkoznak. Javasoljuk, hogy inkább az OpenXR implementációt használja QR-kódokhoz.

    Az összes szükséges fájlt és dokumentációt itt találja a NuGetben:

    Microsoft.MixedReality.QR

    Hogyan előkészíteni egy Unity-alkalmazást az ARMarkerManager qR-kódok észlelésére?

    A Unity-alkalmazásokban az összetevő a ARMarkerManager QR-kódok fizikai környezetben való észlelésének egy jelenetben való ábrázolására szolgál. ARMarkerManager Biztosít:

    • Események az előfizetők értesítésére, ha egy észlelt QR-kódot hozzáadtak a kezelőhöz, frissítve vagy eltávolítva.

    • Nyomon követhető kódgyűjtemény ARMarker az észlelés alatt álló QR-kódokhoz.

    • A nyomon követhető azonosító által megadott QR-kódok adatait visszaadó metódusok.

    ARMarkerManager Az alkalmazás használatához importálnia kell a Mixed Reality OpenXR beépülő modulcsomagot.

    A csomag importálása:

    1. Töltse le és futtassa a Mixed Reality szolgáltatáseszközt.
    2. Telepítse az OpenXR beépülő modult.

    Az eszköz használatáról részletes útmutatást a Vegyes valóság funkció eszköz üdvözli.

    A következő általános eljárás a következő:

    1. A Unity-projektben engedélyezze a WebCam képességeit.
    2. Hozzon létre egy előfabot, és csatolja az összetevőt az ARMarker alábbi módon:
      Prefab konfigurálva
    3. Nyisson meg egy jelenetet, amelyet futás közben QR-kódok észlelnek.
    4. Csatoljon ARMarkerManager egy GameObject-et a jelenetben, és állítsa be a Marker Prefab elemet a létrehozott előfabhoz.
      Előfab megadva

    Részletesebb utasításokért és információkért tekintse meg a Unity QR-kódjait.

    A QR-kódok Unity-alkalmazásban való használatára vonatkozó példa a GitHubon található QR-kód mintaforgatókönyvében található.

    Hogyan előkészíteni egy nem Unity-alkalmazást, hogy az OpenXR használatával észlelje a QR-kódokat?

    A QR-kódészlelés az OpenXR-ben a XR_MSFT_scene_marker bővítményen keresztül történik. Ez a bővítmény lehetővé teszi több QR-kód nyomon követését, és képes méretet, pozíciót, utolsó észlelési időbélyeget, UUID-t és pufferelt QR-kódadatokat biztosítani az észlelt QR-kódokhoz.

    A QR-kód támogatásának engedélyezéséhez engedélyezni kell a XR_MSFT_scene_marker és XR_MSFT_scene_understanding bővítményeket is.

    Részletes részletes információkért tekintse meg a XR_MSFT_scene_marker bővítmény áttekintését az OpenXR 1.0 specifikációjában.

    A QR-kódok használatára példa: Scene_QRCode.cpp a SceneUnderstandingUwp mintában a GitHubon.

    Hogyan előkészíteni egy UWP-t a Microsoft.MixedReality.QR.QRCodeWatcher használatára?

    Feljegyzés

    Az alábbiak az örökölt QR-kód API-kra vonatkoznak. Javasoljuk, hogy inkább az OpenXR implementációt használja QR-kódokhoz.

    • A NuGet-csomaggal csomagolja ki a szükséges fájlokat.

    • Adjon hozzá egy hivatkozást a Microsoft.MixedReality.QR.winmd projekthez, és kezdje el használni az API-t.

    • Adja hozzá a beépülő modulok megfelelő architektúraverzióit, és ennek megfelelően használja őket a buildben.

    Hogyan előkészíteni a Unityt a Microsoft.MixedReality.QR.QRCodeWatcherrel?

    Feljegyzés

    Az alábbiak az örökölt QR-kód API-kra vonatkoznak. Javasoljuk, hogy inkább az OpenXR implementációt használja QR-kódokhoz.

    Használja a NuGet for Unityt, és mutasson a fenti NuGet-csomagra.

    Hogyan készíthetek QR-kódokat?

    Tekintse meg a QR-kódgenerátorokat.

    Ha a QR-kódkövetés általában nem működik, mit tegyek?

    • A QR Code verziója támogatott verzió? Nem támogatjuk a nagy sűrűségű verziókat, például a 40-es verziót. A 10-es verziónál semmi sem garantált; A 20 feletti verziók nem támogatottak.

    • Elég közel van a QR-kódhoz? A QR-kód távolságának és szögének megjelenítése.

    • Milyen a világítás? Van egy ismert probléma, amely miatt az észlelés nehézkessé válik, ha a QR-kód sötét környezeti háttérrel rendelkezik – a QR-kód a nagy kontraszt miatt ki lesz mosva a kamerából. További információkért lásd a világítást és a háttérrendszert.

    Mi a pontosság?

    Ha egyetlen keretben észlelik, a méret várhatóan legfeljebb 1%-os hibát jelez a tényleges méretből. Egy 10 cm-es kód például akár +/- 1 mm-rel is ki lehet kapcsolva mért méretben. Folyamatos észlelés esetén a kód helyzete akár +/- 2,5 mm-rel is eltolódhat. Miután kilépett az észlelési tartományból, az előző észlelés pozíciója a leképezési hiba kegyének felel meg.

    Milyen közel kell lennem a QR-kódhoz az észleléséhez?

    A távolság nyilvánvalóan a QR-kód méretétől és annak verziójától függ. További információ: távolság és szög pozíció a QR-kódtól.

    • A HoloLens 2 esetében az 1- es verziójú QR-kód 5 cm-től 25 cm-es oldalig terjed, a minimális észlelési távolság 0,25 métertől 0,5 méterig terjed. Ezek a legtávolabbiak körülbelül 0,5 m-től a legkisebb kódtól két méterig észlelhetők a nagyobbak számára.

    • A Windows Mixed Realityben ezek a távolságok felére csökkennek a méretekhez.

    • Minden nagyobb kód esetén extrapoláljuk – a méret észlelési távolsága lineárisan nő. Bármilyen kisebb kód esetén az észlelés egyszerűen nem történik meg – a 4-5 cm a legkisebb, amit észlelni tudunk.

    Miért nem tudok QR-kódokat olvasni emblémákkal?

    Az emblémákkal ellátott QR-kódok nem támogatottak.

    A QR-kódok észlelhetők, miért nem kapok adatokat?

    • Ha a platform nem tudja dekódolni a QR-kódot, nem lesznek adatok. A streamet használhatja, és nyílt forráskódú kóddal értelmezheti az adatokat.

    • Egyes funkciók, például a struktúra hozzáfűzése nem támogatottak.

    További információ: milyen QR-kódverziók támogatottak?

    A QR-kódok a "szóköz" vagy az alkalmazás szintjén vannak mentve?

    A QR-kódok rendszerszinten vannak mentve az illesztőprogram-munkamenetben, vagy a Rendszerindítási munkamenet a HoloLensben. További információ: QR-kódadatok kezelése.

    Hogyan működik ez a mögöttes platformmal? Hol maradnak?

    Az észlelt QR-kódokat az illesztőprogram megőrzi a memóriában.

    Hogyan hibakeresést a Visual Studióban, amikor a "Microsoft.MixedReality.QR.pdbnem található" hibaüzenet jelenik meg?

    Feljegyzés

    Az alábbiak az örökölt QR-kód API-kra vonatkoznak. Javasoljuk, hogy inkább az OpenXR implementációt használja QR-kódokhoz.

    A szimbólum betöltése Microsoft.MixedReality.QR.dll kihagyva, mert nincs megadva a belefoglalt modulok listájában.

    Reprodukálás

    Feljegyzés

    Az alábbiak az örökölt QR-kód API-kra vonatkoznak. Javasoljuk, hogy inkább az OpenXR implementációt használja QR-kódokhoz.

    Kövesse az alábbi lépéseket a viselkedés reprodukálásához:

    1. A Microsoft.MixedReality.QR (NuGet) és az MRTK telepítése
    2. Hibakeresési kísérlet

    Képesnek kell lennie az alkalmazás hibakeresésére Microsoft.MixedReality.QR.dll, de a DLL nem található:

    A Microsoft.MixedReality.QR.pdb nem található hibaüzenet

    Feljegyzés

    Az alábbiak az örökölt QR-kód API-kra vonatkoznak. Javasoljuk, hogy inkább az OpenXR implementációt használja QR-kódokhoz.

    Dolgozunk a szimbólumok hozzáadásán a következő kiadáshoz. Addig is képesnek kell lennie az alkalmazás hibakeresésére, ha kizárja a DLL-t a Visual Studio beállításai közül:

    a DLL kizárása a Visual Studio beállításaiban

    További információ: A Visual Studio beállításainak konfigurálása.

    Van-e korlátja annak, hogy hány QR-kód vizsgálható be egy munkamenetben?

    Az illesztőprogram rendszerszinten mentett QR-kódjai legfeljebb 100 perc alatt menthetők.

    Módosult a QR-kód simítási folyamata?

    A QR-kód simítási folyamata 20H2 után módosult, a póz simításától a méretsimításig. Az előző simítási folyamat viselkedésének visszaállításához egy simító algoritmust alkalmazunk, ha az új QR-kód a korábban észlelt keret 5 másodpercén vagy 10 cm-én belül észleli az adatokat. Az átalakító adatok az aktuális keret 90%-ának súlyozott arányával és az előző keret 10%-ával keverednek.

    Lásd még