Hit-teszt a mesternél · magával ragadó-webhit-teszt · GitHub
A GitHub több mint 50 millió fejlesztőnek ad otthont, amelyek együttesen működnek együtt kódok befogadásában és felülvizsgálatában, projektek kezelésében és szoftverek építésében.
A GitHub az, ahol a világ szoftvereket épít
Fejlesztők és vállalatok milliói építik, szállítják és tartják karban szoftverüket a GitHubon - a világ legnagyobb és legfejlettebb fejlesztői platformján.
hit-test/hit-testing-explainer.md
WebXR Device API - Találati tesztelés
Ezt a dokumentumot eredetileg az Immersive Web munkacsoportban tervezték, hogy a WebXR Device API-ra építsen. A tartalom tulajdonjogát az Immersive Web Community csoportba helyezték át további inkubálás céljából.
A dokumentum célja egy olyan terv leírása, amely lehetővé teszi a fejlesztők számára, hogy teszteljék a valós környezetet. A kontextus szempontjából hasznos lehet, ha először elolvastuk a WebXR munkamenet létrehozását, a térbeli nyomon követést, a beviteli mechanizmusokat és a kiterjesztett valóság modult.
A "találati teszt" (más néven "sugárzás") a 3D geometria és egy sugár kereszteződésének megtalálásának folyamata, amely eredetből és irányból áll. Fogalmilag a találati tesztek elvégezhetők a virtuális 3D geometria vagy a valós 3D geometria ellen. Mivel a WebXR semmilyen ismerettel nem rendelkezik a fejlesztő 3D-s jelenetdiagramjáról, nem biztosít API-kat a virtuális találati teszteléshez. Ugyanakkor rendelkezik információkkal a való világról, és módszert biztosít a fejlesztők számára, hogy teszteljék őket. A WebXR-ben a fejlesztők leggyakrabban az XRInputSource s vagy a "viewer" típusú XRReferenceSpace használatával találják meg a tesztet annak nyomon követésére, hogy hol kell rajzolni a kurzort a kézi eszközökön, vagy akár egy virtuális objektumot visszaverni a valós geometriától. A WebXR-ben az 'inline' és az 'immersive-vr' munkamenetek virtuális találati tesztek végrehajtására korlátozódnak, míg az 'immersive-ar' munkamenetek virtuális és valós találati teszteket egyaránt képesek végrehajtani.
A találati tesztelési API által engedélyezett főbb esetek a következők:
- Olyan objektum megjelenítése, amely látszólag követi a valós felületeket, amelyekre az eszköz vagy a vezérlő mutat.
- Az AR alkalmazások gyakran olyasmit akarnak megjeleníteni, amely a valós felületekhez tapad, amikor a felhasználó mozgatja a mutatóeszközt. Az objektum helyzetének tükröznie kell a valós világ legfrissebb ismereteit a megjelenített keretben.
- Gyakoriság: ezt a műveletet minden egyes képkockán elvégzik.
- Virtuális objektum elhelyezése a való világban.
- Annak érdekében, hogy a virtuális tárgyak lehorgonyzódjanak a való világban, azokat a valós tárgyakkal azonos magasságban kell elhelyezni (padló, asztal, fal, stb.).
- Gyakoriság: ez a művelet általában a felhasználói bevitelre válaszul történik, és minden képkockán előfordulhat.
Az alkalmazás virtuális jelenetelemeivel szembeni találatteszt kifejezetten kívül esik ezen API-n.
A találat-teszteléssel potenciálisan fel lehet használni a valós geometria elhelyezkedésének becslését az alkalmazás segítségével (például azzal, hogy több tucat sugár felhasználásával próbálunk meg találati tesztet végrehajtani) - ezt a felhasználási esetet az API nem támogatja közvetlenül, de nem fogja használni. aktívan blokkolva.
Mivel a találati teszt API potenciálisan felhasználható a felhasználói környezetre vonatkozó adatok kinyerésére, hasonlóan a valós geometriai API-khoz (bár alacsonyabb hűséggel), az UA-knak óvatosnak kell lenniük az API-hoz való hozzáférés ellenőrzésében - ennek konkrét mechanizmusai elért eredmények nem tartoznak ennek a magyarázónak a hatálya alá.
A találati teszt API alternatívájaként az alkalmazások megpróbálhattak tetszőleges találati teszteket végrehajtani, felhasználva a valós-geometriai API-kból nyert adatokat. Emiatt nem világos, hogy hasznos lenne-e egy webes expozíciós teszt, és különösen fontos lesz az API korai alkalmazóinak visszajelzése.
Valós sikertesztelés
A valós találati tesztek WebXR-ben való engedélyezésének egyik legfontosabb kihívása az, hogy a valós találati teszt eredményeinek kiszámítása teljesítmény-befolyásoló lehet, és függhet a másodlagos szálaktól számos mögöttes megvalósításban. Fejlesztői szempontból azonban az elavult aszinkron találati teszt eredményei gyakran kevésbé hasznosak.
A WebXR ezt a kihívást az XRHitTestSource & XRTransientInputHitTestSource interfészek használatával oldja meg, amelyek a tesztelőfizetés elérésének fogantyúiként szolgálnak. A találati tesztforrás jelenléte jelzi a felhasználói ügynök számára, hogy a fejlesztő a találati teszt eredményeit kívánja lekérdezni a következő XRFrame-ekben. A felhasználói ügynök ezután előre kiszámíthatja a találati teszt eredményeit a találati teszt forrása tulajdonságai alapján úgy, hogy minden XRFrame együtt lesz az összes "feliratkozott" találati teszt eredményével.
Találati tesztforrás kérése
XRHitTestSource létrehozásához a fejlesztők hívják meg az XRSession.requestHitTestSource () függvényt. Ez a függvény elfogad egy XRHitTestOptionsInit szótárt a következő kulcs-érték párokkal:
- hely szükséges, és az XRStér a nyomonkövetési forrás által követendő. Mivel ez az XRSpace minden képkockáját frissíti, az XRHitTestSource együtt fog mozogni vele.
- entityTypes - lásd az eredmények korlátozását egy adott entitásra.
- Az offsetRay opcionális, és ha rendelkezésre áll, akkor az az XRRay, amelyből a találati tesztet el kell végezni. A sugár koordinátáit a tér definiálja kiindulópontként. Ha nincs megadva egy offsetRay, akkor a találati tesztet egy olyan sugár segítségével hajtják végre, amely egybeesik az űr eredetével és "előre" irányban mutat (lásd: Sugárzás szakasz).
Ebben a példában egy XRHitTestSource jön létre kissé a "néző" XRReferenceSpace közepe felett. A fejlesztő ugyanis azt tervezi, hogy felhasználói felület elemeket rajzol a kézi AR eszköz magával ragadó nézete aljára, miközben továbbra is egy középre mutató kurzort szeretne érzékeltetni. További információ: Kurzorok és kiemelések megjelenítése az Input Explainer részben.
Előzetes regisztráció tranziens bemeneti forrásokhoz
Míg az aszinkron találati tesztforrás létrehozása sok esetben hasznos, átmeneti bemeneti források esetében problematikus. Ha XRHitTestSource-t kérnek az XRSession.requestHitTestSource () API-t használó bemeneti források cseréje eseményre válaszolva, akkor több képkockát is igénybe vehet, mire a válaszként létrehozott találati tesztforrás képes lesz találati teszt eredményeinek biztosítására, mire a bemeneti forrás már nem biztos, hogy megfelel létezik. Ez még akkor is így lehet, ha egy képkockás késleltetés van a találati tesztforrás létrehozási kérelme és létrehozása között. A valós találati tesztelés részben említett lehetséges teljesítményhatások miatt azonban fontos, hogy a WebXR ne végezzen találati teszteket a fejlesztőnek nem szükséges bemeneti forrásoknál.
A probléma megoldása érdekében, és továbbra is lehetővé téve a webalkalmazások számára, hogy átmeneti bemeneti forrásokhoz lekérési tesztforrásokat kérjenek, az alkalmazások használhatják az XRSession.requestHitTestSourceForTransientInput ():
Az XRSession.requestHitTestSourceForTransientInput () metódus elfogadja a szótárat a következő kulcs-érték párokkal:
- profil szükséges, és meghatározza a bemeneti profil nevét (lásd a bemeneti profil nevét), amelynek az átmeneti bemeneti forrásnak meg kell egyeznie ahhoz, hogy a létrehozásakor találati tesztként vegyék figyelembe (például válaszként a felhasználói bemenetre).
- entityTypes - lásd az eredmények korlátozását egy adott entitásra.
- Az offsetRay opcionális, és meghatároz egy XRRay-t, amelyhez a találati tesztet el kell végezni. A sugarat úgy értelmezzük, mintha a fent említett profilnak megfelelő átmeneti bemeneti forrás a targetRaySpace-hez viszonyulna.
Találati teszt eredményei
Ahhoz, hogy szinkron találati teszt eredményeket kapjon egy adott keretről, a fejlesztők az XRFrame.getHitTestResults () függvényt hívják meg, amely egy XRHitTestSource-t ad át hitTestSource paraméterként. Ez a funkció egy FrozenArray-t ad vissza, amelyben az XRHitTestResult s távolságot rendezi a találati teszt elvégzéséhez használt XRRay mentén, a legközelebbi a 0. pozícióban. Ha nincs eredmény, a tömbnek nulla lesz a hossza. Az XRHitTestResult felület feltár egy olyan módszert, getPose (XRSpace baseSpace), amely felhasználható az eredmény jelentésének lekérdezésére. Ha az aktuális keretben az baseSpace paraméternek átadott XRSpace kapcsolata nem található a találati teszt eredményéhez viszonyítva, akkor a függvény nullát ad vissza .
Az átmeneti bemeneti forrás találati teszt-előfizetésének találati teszt eredményeinek megszerzéséhez egy adott keretben a fejlesztők az XRFrame.getHitTestResultsForTransientInput () -t hívják meg, amely az XRTransientInputHitTestSource paramétert adja át hitTestSource paraméterként. Ez a funkció egy FrozenArray-t ad vissza. A tömb minden eleme tartalmazni fogja a bemeneti forrás egy példányát, amelyet az eredmények megszerzéséhez használtak, és a tényleges találati teszt eredményei a FrozenArray eredményekben lesznek feltüntetve, a találati teszt végrehajtásához használt sugár távolsága szerint rendezve. legközelebbi eredmény a 0. pozíciónál.
Az eredmények korlátozása meghatározott entitásokra
Az alapul szolgáló platformról visszaküldött találati teszt eredményei információt hordozhatnak a valós entitásról, amely a találati teszt eredményét okozta. Példák az entitásokra: síkok és jellemző pontok. Az alkalmazás meghatározhatja, hogy milyen entitásokat kell használni egy adott találati teszt-előfizetéshez azáltal, hogy beállítja az entitásTípusok kulcs értékét az XRHitTestOptionsInit/XRTransientInputHitTestOptionsInit mezőben:
Ha több értéket használ az entitásTypes kulcs tömbjében, logikai "vagy" szűrőként kezeljük. Például az entitásTípusok: ["sík", "pont"] azt jelentené, hogy az XRFrame.getHitTestResults ()/XRFrame.getHitTestResultsForTransientInput () eredményeként visszakapott tömbök tartalmazzák a valós síkokon kívüli találati teszteket, valamint a a felhasználó környezetében észlelt jellemző pontok; ezek azok a találati teszt eredmények, amelyek entitásai megfelelnek egy feltételnek (type == "sík") vagy (type == "point"), feltételezve, hogy a típus tartalmazza az adott entitás egy típusát. Ha az alkalmazás nem talál értéket az entitásTypes kulcshoz a találati tesztforrás kérésekor, akkor a ["sík"] alapértelmezett értéke lesz használva.
A találati teszt leiratkozása
Annak érdekében, hogy az alkalmazások leiratkozhassanak a találati tesztforrásokról, a találati tesztforrás és az átmeneti bemenethez használt tesztforrás egy Cancel () metódust tesznek lehetővé:
Az XRRay objektum mind origót, mind irányt tartalmaz, mindkettő DOMPointReadOnly s néven megadva. Az origó egy 3D koordinátát képvisel a térben, aw komponenssel, amelynek egyenlőnek kell lennie 1-nek, az irány pedig egy normalizált 3D irányú vektor, amelynek aw komponense 0-nak kell lennie. Az XRRay meghatároz egy mátrixot is, amely a sugárból származó transzformációt ábrázolja. a [0, 0, 0] pontnál kezdődik és a negatív Z tengelyen lefelé nyúlik az XRRay eredete és iránya által leírt sugárig. Ez hasznos a sugár grafikus ábrázolásának pozícionálásához.
A virtuális és a valós slágerteszt kombinálása
Az XR-élmények reális jelenlétének megteremtésének egyik kulcsfontosságú eleme azon a képességen alapszik, hogy megtudja, hogy a találati teszt keresztezi-e a virtuális vagy a valós geometriát. Például a fejlesztők egy virtuális objektumot el akarnak helyezni a való világba, de csak akkor, ha egy másik virtuális objektum még nincs jelen. A jövőbeli specifikációk felülvizsgálatakor, amikor a valós elzáródás lehetséges a WebXR használatával, a fejlesztők valószínűleg képesek virtuális gombokat létrehozni, amelyek csak "kattinthatók", ha nincs fizikai objektum.
Van egy csomó technika, amellyel meghatározható a kombinált találati teszt eredménye. Például a fejlesztő dönthet úgy, hogy másként súlyozza a találati teszt eredményeit, ha a felhasználó már interakcióba lép egy adott objektummal. Ebben a magyarázóban egy egyszerű példa található a találati teszt eredményeinek ötvözésére: ha találunk virtuális találati tesztet, akkor azt visszaküldjük, különben a minta a legközelebbi valós találati teszt eredményt adja. Mivel a WebXR semmilyen ismerettel nem rendelkezik a fejlesztő 3D jelenetdiagramjáról, ez a minta az XRFrame.getPose () függvényt használja egy sugár létrehozására, és átadja azt a 3D motor virtuális találati teszt funkciójának.
Biztonsági és adatvédelmi szempontok
Ez a funkció segít a webhelynek a felhasználó fizikai környezetének kissé alacsony pontossággal történő feltérképezésében. A specifikáció lehetővé teszi az UA számára, hogy korlátozza a találati teszt-előfizetések használatát egy XRRay alapján. A sok sugár használata lehetővé tenné, hogy az oldal részletesebben lássa a környezetet, és az UA dönthet úgy, hogy egy bizonyos szám után a kérések feleslegesek.
Ez a szolgáltatás alapértelmezés szerint blokkolva van harmadik fél környezetében, és egy Szolgáltatás-házirend jelzőn keresztül vezérelhető.
A. függelék: Javasolt részleges IDL
Ez egy részleges IDL, és additívnak tekinthető a fő magyarázatban található alapvető IDL-hez.
Jelenleg nem hajthatja végre ezt a műveletet.
Egy másik füllel vagy ablakkal jelentkezett be. Töltse be újra a munkamenet frissítéséhez. Kijelentkezett egy másik fülön vagy ablakban. Töltse be újra a munkamenet frissítéséhez.
- A Master Cleanse Ultimate Recept a leghatékonyabb méregtelenítőt 2020-ra!
- Mester Tisztítsa meg a fogyást - Öblítse le a testzsírt
- Japán színész mindent belead a sogi mester alakításában; Satoshi
- Houston fogyás - The Body Master Fitness Stúdió
- Mérsékelt gondolkodású diétázóként kezelje a zsírvesztését (10 lépés)