Atraskite „WebXR“ plokštumų klasifikavimo galią. Šis išsamus vadovas kūrėjams aprašo, kaip atpažinti grindis, sienas ir stalus, kad sukurtumėte įtraukiančias ir kontekstą suprantančias AR patirtis internete.
Išmanesnės AR atvėrimas: išsami „WebXR“ plokštumų klasifikavimo analizė
Papildytoji realybė (AR) jau nebėra tik paprasta naujovė ir sparčiai tampa sudėtingu įrankiu, sklandžiai sujungiančiu mūsų skaitmeninį ir fizinį pasaulius. Ankstyvosios AR programos leido mums svetainėje pastatyti 3D dinozauro modelį, tačiau jis dažnai nepatogiai sklandydavo ore arba nenatūraliai kirsdavosi su baldais. Patirtis buvo magiška, tačiau trapi. Trūkstama dalis buvo kontekstas. Kad AR būtų tikrai įtraukianti, ji turi suprasti pasaulį, kurį papildo. Čia į pagalbą ateina „WebXR Device API“, o ypač plokštumų aptikimas. Bet net ir to nepakanka. Viena yra žinoti, kad yra paviršius; visai kas kita – žinoti, koks tai paviršius.
Būtent tokį šuolį į priekį siūlo „WebXR“ plokštumų klasifikavimas, taip pat žinomas kaip semantinis paviršių atpažinimas. Tai technologija, leidžianti internetinėms AR programoms atskirti grindis, sieną, stalą ir lubas. Šis, atrodytų, paprastas skirtumas yra paradigmos pokytis, leidžiantis kūrėjams kurti realistiškesnes, protingesnes ir naudingesnes patirtis tiesiogiai interneto naršyklėje, prieinamas milijardams įrenginių visame pasaulyje, nereikalaujant atsisiųsti specialios programėlės. Šiame išsamiame vadove išnagrinėsime plokštumų aptikimo pagrindus, gilinsimės į klasifikavimo galią, aptarsime praktinį įgyvendinimą ir apžvelgsime jaudinančią ateitį, kurią ji atveria įtraukiančiam internetui.
Pirmiausia – pagrindai: kas yra plokštumų aptikimas „WebXR“?
Prieš klasifikuodami paviršių, pirmiausia turime jį rasti. Tai yra plokštumų aptikimo – pagrindinės modernių AR sistemų funkcijos – užduotis. Iš esmės plokštumų aptikimas yra procesas, kurio metu įrenginys, naudodamas savo kamerą ir judesio jutiklius (technika, dažnai vadinama SLAM – vienalaikė lokalizacija ir kartografavimas), nuskaito fizinę aplinką, kad nustatytų plokščius paviršius.
Kai įjungiate 'plane-detection' funkciją „WebXR“ sesijoje, naršyklės pagrindinė AR platforma (pvz., „Google“ ARCore „Android“ sistemoje arba „Apple“ ARKit „iOS“ sistemoje) nuolat analizuoja pasaulį. Ji ieško ypatybių taškų grupių, esančių bendroje plokštumoje. Kai tokią randa, ji ją pateikia jūsų interneto programai kaip XRPlane objektą. Kiekvienas „XRPlane“ suteikia svarbios informacijos:
- Padėtis ir orientacija: matrica, nurodanti, kur plokštuma yra 3D erdvėje ir kaip ji orientuota (pvz., horizontaliai ar vertikaliai).
- Daugiakampis: viršūnių rinkinys, apibrėžiantis aptikto paviršiaus 2D ribą. Paprastai tai nėra tobulas stačiakampis; tai dažnai netaisyklingas daugiakampis, vaizduojantis tą paviršiaus dalį, kurią įrenginys patikimai nustatė.
- Paskutinio atnaujinimo laikas: laiko žyma, nurodanti, kada plokštumos informacija buvo paskutinį kartą atnaujinta, leidžianti sekti pokyčius, kai sistema sužino daugiau apie aplinką.
Ši pagrindinė informacija yra nepaprastai galinga. Ji leido kūrėjams pereiti nuo sklandančių objektų prie patirčių, kuriose virtualus turinys galėjo būti realistiškai pririštas prie realaus pasaulio paviršių. Galėjote pastatyti virtualią vazą ant tikro stalo, ir ji ten liktų, kai vaikščiotumėte aplinkui. Tačiau išliko didelis apribojimas: jūsų programa nežinojo, kad tai stalas. Tai buvo tiesiog „horizontali plokštuma“. Negalėjote sutrukdyti vartotojui pastatyti vazos ant „sienos plokštumos“ ar „grindų plokštumos“, o tai lemdavo beprasmiškus scenarijus, griaunančius realybės iliuziją.
Ateina plokštumų klasifikavimas: suteikiant paviršiams prasmę
Plokštumų klasifikavimas yra kitas logiškas evoliucijos žingsnis. Tai plokštumų aptikimo funkcijos plėtinys, pridedantis semantinę žymę kiekvienai atrastai plokštumai. Užuot tiesiog pasakius: „Štai horizontalus paviršius“, ji sako: „Štai horizontalus paviršius, ir aš esu labai tikras, kad tai grindys.“
Tai pasiekiama naudojant sudėtingus algoritmus, dažnai pagrįstus mašininio mokymosi modeliais, veikiančiais įrenginyje. Šie modeliai buvo apmokyti naudojant didžiulius patalpų aplinkų duomenų rinkinius, kad atpažintų būdingas bendrų paviršių savybes, pozicijas ir orientacijas. Pavyzdžiui, didelė, žema, horizontali plokštuma greičiausiai yra grindys, o didelė vertikali plokštuma – siena. Mažesnė, pakelta horizontali plokštuma tikriausiai yra stalas.
Kai prašote „WebXR“ sesijos su plokštumų aptikimu, sistema gali pateikti semanticLabel ypatybę kiekvienam „XRPlane“. Oficialioje specifikacijoje nurodytas standartizuotų žymių rinkinys, apimantis dažniausiai pasitaikančius paviršius patalpų aplinkoje:
floor: pagrindinis kambario grindų paviršius.wall: vertikalūs paviršiai, kurie riboja erdvę.ceiling: viršutinis kambario paviršius (lubos).table: plokščias, pakeltas paviršius, paprastai naudojamas daiktams dėti.desk: panašus į stalą, dažnai naudojamas darbui ar mokslui.couch: minkštas, apmuštas sėdėjimo paviršius. Aptikta plokštuma gali atstovauti sėdėjimo zonai.door: judama užtvara, naudojama sienoje esančiai angai uždaryti.window: anga sienoje, paprastai dengta stiklu.other: bendra žymė aptiktoms plokštumoms, kurios neatitinka kitų kategorijų.
Ši paprasta eilutės žymė paverčia geometrinių duomenų dalį kontekstinio supratimo dalimi, atverdama daugybę galimybių kurti protingesnes ir labiau įtikinančias AR sąveikas.
Kodėl plokštumų klasifikavimas yra revoliucinis pokytis įtraukiančioms patirtims
Gebėjimas atskirti paviršių tipus yra ne tik nedidelis patobulinimas; tai iš esmės keičia, kaip galime kurti ir kurti AR programas. Tai pakelia jas nuo paprastų peržiūros priemonių iki protingų, interaktyvių sistemų, kurios reaguoja į vartotojo realią aplinką.
Padidintas realizmas ir įsitraukimas
Pati tiesioginė nauda – dramatiškai padidėjęs realizmas. Virtualūs objektai dabar gali elgtis pagal realaus pasaulio logiką. Virtualus krepšinio kamuolys turėtų atšokti nuo paviršiaus, pažymėto floor, o ne nuo wall. Skaitmeninis paveikslo rėmelis turėtų būti dedamas tik ant wall. Virtualus kavos puodelis turėtų natūraliai stovėti ant table, o ne ant ceiling. Laikydamiesi šių paprastų taisyklių, pagrįstų semantinėmis žymėmis, išvengsite įsitraukimą griaunančių momentų, kurie primena vartotojui, kad jis yra simuliacijoje.
Protingesnės vartotojo sąsajos (UI)
Tradicinėje AR vartotojo sąsajos elementai dažnai sklando priešais kamerą („heads-up display“ arba HUD) arba yra nepatogiai išdėstyti pasaulyje. Su plokštumų klasifikavimu UI gali tapti aplinkos dalimi. Įsivaizduokite architektūrinės vizualizacijos programą, kurioje matavimo įrankiai automatiškai pritraukiami prie sienų, arba produkto vadovą, kuris rodo interaktyvias instrukcijas tiesiai ant objekto paviršiaus, kurį jis identifikuoja kaip desk ar table. Meniu ir valdymo pultai galėtų būti projektuojami ant netoliese esančios tuščios wall, atlaisvinant vartotojo centrinį matymo lauką.
Pažangi fizika ir uždengimas
Aplinkos struktūros supratimas leidžia atlikti sudėtingesnes ir realistiškesnes fizikos simuliacijas. Virtualus personažas žaidime galėtų protingai naršyti po kambarį, vaikščiodamas ant floor, šokdamas ant couch ir vengdamas walls. Be to, šios žinios padeda su uždengimu (okliuzija). Nors uždengimas paprastai tvarkomas gylio jutikliais, žinojimas, kad table yra priešais floor, gali padėti sistemai priimti geresnius sprendimus, kurios virtualaus objekto, stovinčio ant grindų, dalys turėtų būti paslėptos.
Kontekstą suprantančios programos
Čia slypi tikroji galia. Programos dabar gali pritaikyti savo funkcionalumą atsižvelgiant į vartotojo aplinką.
- Interjero dizaino programa galėtų nuskenuoti kambarį ir, identifikavusi
floorirwalls, automatiškai apskaičiuoti plotą bei pasiūlyti tinkamus baldų išdėstymus. - Fitneso programa galėtų nurodyti vartotojui daryti atsispaudimus ant
floorarba pastatyti vandens butelį ant netoliese esančiotable. - AR žaidimas galėtų dinamiškai generuoti lygius pagal vartotojo kambario išdėstymą. Priešai galėtų išlįsti iš po aptikto
coucharba prasiveržti prowall.
Prieinamumas ir navigacija
Žvelgiant į ateitį, semantinis paviršių atpažinimas yra pagrindinė technologija pagalbinėms programoms. „WebXR“ programa galėtų padėti regėjimo negalią turinčiam asmeniui naršyti naujoje erdvėje, žodžiu perteikdama išdėstymą: „Priešais yra laisvas takas ant floor, dešinėje yra table, o priešais ant wall – door.“ Tai paverčia AR iš pramogų priemonės į gyvenimą gerinančią priemonę.
Praktinis vadovas: „WebXR“ plokštumų klasifikavimo įgyvendinimas
Pereikime nuo teorijos prie praktikos. Kaip iš tikrųjų naudoti šią funkciją savo kode? Nors detalės gali šiek tiek skirtis priklausomai nuo naudojamos 3D bibliotekos (pvz., Three.js, Babylon.js ar A-Frame), pagrindiniai „WebXR“ API iškvietimai yra universalūs. Savo pavyzdžiuose naudosime Three.js, nes tai populiarus pasirinkimas „WebXR“ kūrimui.
Būtinosios sąlygos ir naršyklių palaikymas
Pirma, svarbu pripažinti, kad „WebXR“, o ypač jos pažangesnės funkcijos, yra pažangiausia technologija. Palaikymas dar nėra universalus.
- Įrenginys: Jums reikia modernaus išmaniojo telefono ar ausinių, palaikančių AR (suderinamų su ARCore „Android“ sistemai, suderinamų su ARKit „iOS“ sistemai).
- Naršyklė: Palaikymas daugiausia prieinamas „Chrome“ naršyklėje, skirtoje „Android“. Visada tikrinkite išteklius, tokius kaip caniuse.com, dėl naujausios suderinamumo informacijos.
- Saugus kontekstas: „WebXR“ reikalauja saugaus konteksto (HTTPS arba localhost).
1 žingsnis: XR sesijos užklausa
Norėdami naudoti plokštumų klasifikavimą, turite aiškiai to paprašyti, kai prašote savo 'immersive-ar' sesijos. Tai daroma pridedant 'plane-detection' į requiredFeatures masyvą. Nors semantinės žymės yra šios funkcijos dalis, joms nėra atskiros vėliavėlės; jei sistema palaiko klasifikavimą, ji pateiks žymes, kai bus įjungtas plokštumų aptikimas.
async function activateXR() { if (navigator.xr) { try { const session = await navigator.xr.requestSession('immersive-ar', { requiredFeatures: ['local', 'hit-test', 'plane-detection'] }); // Sesijos nustatymo kodas eina čia... } catch (e) { console.error("Nepavyko paleisti AR sesijos:", e); } } }
2 žingsnis: prieiga prie plokštumų atvaizdavimo cikle
Kai jūsų sesija veikia, turėsite atvaizdavimo ciklą (funkciją, kuri vykdoma kiekvienam kadrui, paprastai naudojant `session.requestAnimationFrame`). Šiame cikle `XRFrame` objektas suteikia jums dabartinės AR pasaulio būsenos momentinę nuotrauką. Čia galite pasiekti aptiktų plokštumų rinkinį.
Plokštumos pateikiamos `XRPlaneSet`, kuris yra panašus į JavaScript `Set` objektą. Galite iteruoti per šį rinkinį, kad gautumėte kiekvieną atskirą `XRPlane`. Svarbiausia yra patikrinti `semanticLabel` ypatybę kiekvienoje plokštumoje.
function onXRFrame(time, frame) { const pose = frame.getViewerPose(referenceSpace); if (pose) { // ... atnaujinti kamerą ir kitus objektus const planes = frame.detectedPlanes; // Tai yra XRPlaneSet planes.forEach(plane => { // Patikrinkite, ar matėme šią plokštumą anksčiau if (!scenePlaneObjects.has(plane)) { // Aptikta nauja plokštuma console.log(`Rasta nauja plokštuma su žyme: ${plane.semanticLabel}`); createPlaneVisualization(plane); } }); } session.requestAnimationFrame(onXRFrame); }
3 žingsnis: klasifikuotų plokštumų vizualizavimas (Three.js pavyzdys)
Dabar smagioji dalis: klasifikavimo naudojimas, norint pakeisti, kaip vizualizuojame paviršius. Įprasta derinimo ir kūrimo technika yra spalvoti plokštumas pagal jų tipą. Tai suteikia jums tiesioginį vizualinį grįžtamąjį ryšį apie tai, ką sistema identifikuoja.
Pirmiausia sukurkime pagalbinę funkciją, kuri grąžina skirtingos spalvos medžiagą, atsižvelgiant į semantinę žymę.
function getMaterialForLabel(label) { switch (label) { case 'floor': return new THREE.MeshBasicMaterial({ color: 0x00ff00, transparent: true, opacity: 0.5 }); // Žalia case 'wall': return new THREE.MeshBasicMaterial({ color: 0x0000ff, transparent: true, opacity: 0.5 }); // Mėlyna case 'table': case 'desk': return new THREE.MeshBasicMaterial({ color: 0xffff00, transparent: true, opacity: 0.5 }); // Geltona case 'ceiling': return new THREE.MeshBasicMaterial({ color: 0xff00ff, transparent: true, opacity: 0.5 }); // Purpurinė default: return new THREE.MeshBasicMaterial({ color: 0x808080, transparent: true, opacity: 0.5 }); // Pilka } }
Toliau parašysime funkciją, kuri sukuria 3D objektą plokštumai. `XRPlane` objektas suteikia mums daugiakampį, apibrėžtą viršūnių rinkiniu. Galime naudoti šias viršūnes, kad sukurtume `THREE.Shape`, tada šiek tiek jį ištemptume, kad suteiktume jam storio ir padarytume jį matomą.
const scenePlaneObjects = new Map(); // Kad galėtume sekti savo plokštumas function createPlaneVisualization(plane) { // Sukurkite geometriją iš plokštumos daugiakampio viršūnių const polygon = plane.polygon; const shape = new THREE.Shape(); shape.moveTo(polygon[0].x, polygon[0].z); for (let i = 1; i < polygon.length; i++) { shape.lineTo(polygon[i].x, polygon[i].z); } shape.closePath(); const geometry = new THREE.ShapeGeometry(shape); geometry.rotateX(-Math.PI / 2); // Pasukite, kad atitiktų horizontalią/vertikalią orientaciją // Gaukite tinkamą medžiagą pagal žymę const material = getMaterialForLabel(plane.semanticLabel); const mesh = new THREE.Mesh(geometry, material); // Nustatykite tinklo padėtį ir orientaciją naudodami plokštumos pozą const pose = new THREE.Matrix4(); pose.fromArray(plane.transform.matrix); mesh.matrix.copy(pose); mesh.matrixAutoUpdate = false; scene.add(mesh); scenePlaneObjects.set(plane, mesh); }
Nepamirškite, kad plokštumų rinkinys gali keistis. Gali būti pridėta naujų plokštumų, esamos gali būti atnaujintos (jų daugiakampis gali padidėti), o kai kurios gali būti pašalintos, jei sistema pakeičia savo supratimą. Jūsų atvaizdavimo ciklas turi tai tvarkyti, sekdamas, kuriems `XRPlane` objektams jau sukūrėte tinklus, ir pašalindamas tinklus toms plokštumoms, kurios dingsta iš `detectedPlanes` rinkinio.
Realaus pasaulio naudojimo atvejai ir įkvėpimas
Turint techninį pagrindą, grįžkime prie to, ką tai leidžia pasiekti. Poveikis apima daugybę pramonės šakų.
Elektroninė prekyba ir mažmeninė prekyba
Tai viena iš komerciškai reikšmingiausių sričių. Įmonės, tokios kaip IKEA, jau pademonstravo virtualių baldų išdėstymo galią. Plokštumų klasifikavimas tai pakelia į kitą lygį. Vartotojas gali pasirinkti kilimą, ir programa leis jį dėti tik ant paviršių, pažymėtų floor. Jie gali išbandyti naują sietyną, ir jis prisitvirtins prie ceiling. Tai pašalina vartotojo trikdžius ir virtualaus pasimatavimo patirtį daro daug intuityvesnę ir realistiškesnę, o tai didina pasitikėjimą pirkiniu.
Žaidimai ir pramogos
Įsivaizduokite žaidimą, kuriame virtualūs augintiniai supranta jūsų namus. Katė galėtų miegoti ant couch, šuo vytis kamuolį per floor, o voras ropoti siena wall. Bokštų gynybos žaidimus būtų galima žaisti ant jūsų table, o priešai gerbtų kraštus. Šis aplinkos sąveikos lygis sukuria giliai asmeniškas ir begalę kartų peržaidžiamas žaidimų patirtis.
Architektūra, inžinerija ir statyba (AEC)
Profesionalai gali naudoti „WebXR“, kad vizualizuotų projektus vietoje su didesniu tikslumu. Architektas gali projektuoti virtualų sienos prailginimą ir tiksliai pamatyti, kaip jis dera su esama fizine wall. Statybų vadovas gali pastatyti 3D modelį didelės įrangos ant floor, kad įsitikintų, jog ji telpa, ir planuotų logistiką. Tai sumažina klaidų skaičių ir pagerina bendravimą tarp suinteresuotųjų šalių.
Mokymai ir simuliacija
Pramoniniams mokymams „WebXR“ gali sukurti saugias ir ekonomiškas simuliacijas. Stažuotojas gali išmokti valdyti sudėtingą mašiną, pastatydamas virtualų modelį ant tikro desk. Instrukcijos ir įspėjimai gali atsirasti ant gretimų -wall paviršių, sukuriant turtingą, kontekstą suprantančią mokymosi aplinką be brangių fizinių simuliatorių.
Iššūkiai ir kelias į priekį
Nors „WebXR“ plokštumų klasifikavimas yra nepaprastai perspektyvus, tai vis dar besivystanti technologija, turinti savo iššūkių.
- Tikslumas ir patikimumas: Klasifikavimas yra tikimybinis, o ne deterministinis. Žemas kavos staliukas iš pradžių gali būti neteisingai identifikuotas kaip
floordalis, o netvarkingas stalas gali būti visai neatpažintas. Tikslumas labai priklauso nuo įrenginio techninės įrangos, apšvietimo sąlygų ir aplinkos sudėtingumo. Kūrėjai turi kurti patirtis, kurios būtų pakankamai tvirtos, kad atlaikytų retkarčiais pasitaikančius klaidingus klasifikavimus. - Ribotas žymių rinkinys: Dabartinis semantinių žymių rinkinys yra naudingas, bet toli gražu ne baigtinis. Jame nėra tokių įprastų objektų kaip laiptai, stalviršiai, kėdės ar knygų lentynos. Technologijai bręstant, galime tikėtis, kad šis sąrašas plėsis, siūlydamas dar detalesnį aplinkos supratimą.
- Našumas: Nuolatinis aplinkos nuskaitymas, tinklų kūrimas ir klasifikavimas yra skaičiavimo požiūriu intensyvus procesas. Jis naudoja bateriją ir procesoriaus galią, kurie yra kritiniai ištekliai mobiliuosiuose įrenginiuose. Kūrėjai turi atsižvelgti į našumą, kad užtikrintų sklandžią vartotojo patirtį.
- Privatumas: Savo prigimtimi aplinkos jutimo technologija fiksuoja išsamią informaciją apie vartotojo asmeninę erdvę. „WebXR“ specifikacija sukurta atsižvelgiant į privatumą – visas apdorojimas vyksta įrenginyje, ir jokie kameros duomenys nėra siunčiami į tinklalapį. Tačiau pramonei labai svarbu išlaikyti vartotojų pasitikėjimą per skaidrumą ir aiškius sutikimo modelius.
Ateities kryptys
Paviršių atpažinimo ateitis yra šviesi. Galime tikėtis pažangos keliose pagrindinėse srityse. Aptinkamų semantinių žymių rinkinys neabejotinai augs. Taip pat galime pamatyti individualių klasifikatorių atsiradimą, kai kūrėjas galėtų naudoti internetines mašininio mokymosi sistemas, tokias kaip TensorFlow.js, kad apmokytų modelį atpažinti konkrečius objektus ar paviršius, susijusius su jų programa. Įsivaizduokite elektriko programą, kuri galėtų identifikuoti ir pažymėti skirtingų tipų sieninius elektros lizdus. Plokštumų klasifikavimo integravimas su kitais „WebXR“ moduliais, tokiais kaip DOM Overlay API, leis dar glaudžiau integruoti 2D interneto turinį su 3D pasauliu.
Išvada: kuriant erdviškai sąmoningą internetą
„WebXR“ plokštumų klasifikavimas yra monumentalus žingsnis link galutinio AR tikslo: sklandaus ir protingo skaitmeninio ir fizinio pasaulių susiliejimo. Jis perkelia mus nuo paprasto turinio talpinimo pasaulyje prie patirčių kūrimo, kurios gali tikrai suprasti ir sąveikauti su pasauliu. Kūrėjams tai yra galingas naujas įrankis, atveriantis aukštesnį realizmo, naudingumo ir kūrybiškumo lygį. Vartotojams tai žada ateitį, kurioje AR yra ne tik naujovė, bet ir intuityvi bei nepakeičiama dalis to, kaip mes mokomės, dirbame, žaidžiame ir bendraujame su informacija.
Įtraukiantis internetas dar tik pradeda savo kelią, o mes esame jo ateities architektai. Priimdami tokias technologijas kaip plokštumų klasifikavimas, kūrėjai jau šiandien gali pradėti kurti naujos kartos erdviškai sąmoningas programas. Taigi, pradėkite eksperimentuoti, kurkite demonstracines versijas, dalinkitės savo atradimais ir padėkite formuoti internetą, kuris supranta erdvę aplink mus.