VebXR omogućava programerima da kreiraju impresivna iskustva koja se pokreću direktno u pretraživaču Meta Kuest. Izgrađen je na standardnim veb tehnologijama, čineći "VR na vebu" lakim za pristup kao veb sajt.
Zašto izabrati VebXR?
- Frictionless Access: Korisnici ne moraju da preuzimaju velike datoteke iz Meta Store-a; oni jednostavno kliknu na URL i pritisnu "Enter VR."
- Okviri: Koristi moćne JavaScript biblioteke kao što su Three.js, A-Frame (zasnovan na HTML-u) ili Babylon.js.
- Cross-Platform: Jedna VebXR aplikacija često može da radi na Kuest KSNUMKS, Android telefonu (AR režim) ili desktop računaru.

7.1 Analiza biblioteke
Three.js (Render motor)
Three.js se bavi teškim podizanjem VebGL-a. Upravlja scenom, kamerom i rendererom. U vašem kodu, renderer je postavljen na alfa: true, što je od vitalnog značaja za AR jer omogućava "praznim" delovima pretraživača da postanu prozor u stvarni svet.
TensorFlow.js & COCO-SSD
COCO-SSD (Common Objects in Context - Single Shot MultiBok Detector) je model obučen da prepozna 80 klasa objekata. Lepota TF.js je njegov VebGL backend, koji osigurava da se AI proračuni izvode na GPU-u Kuest-a, a ne na CPU-u, sprečavajući pregrevanje uređaja.
7.2 Matematička projekcija (2D do 3D)
Ovo je najtehničkiji deo scenarija. AI model vraća bbok (bounding box) u pikselima (npr. x = 100, i = 200).
Funkcija detectionTo3D vrši un-projekciju:
- Normalizacija: Pretvara koordinate ekrana u rasponu od $ -KSNUMKS $ do $ + KSNUMKS $.
- FOV Obračun: To faktori u vidnom polju kamere.
- Vektorski zrak: Stvara vektor pravca od položaja glave korisnika prema objektu.
- Plasman: Postavlja 3D oznaku na taj vektor na definisanoj udaljenosti (DIST).

7.3 Implementacija testiranja pogodaka
Hit-testiranje omogućava aplikaciji da "ispaljuje" nevidljivi zrak (raicast) u stvarni prostor kako bi otkrio raskrsnice sa podovima ili stolovima. Kada hitTestSource vrati rezultat, kursor (zeleni prsten) se prebacuje na tu pozu (položaj i orijentacija).
7.4 AI Pipeline: Detekcija i označavanje
U kodu, detekcija se ne vrši svaki kadar (što bi zaostajalo slušalice), već svakih $ 2000ms $ (DETECT_INTERVAL_MS).
- Label Sprite: Pošto Three.js ne može da renderuje standardne HTML fontove direktno u KSNUMKSD sceni, koristimo CanvasTekture. Tekst "crtamo" na nevidljivom 2D HTML platnu i primenjujemo ga kao teksturu na 3D Sprite koji je uvek okrenut prema korisniku (bilbord).
7.5 Neophodnost HTTPS-a
VebXR i pristup kameri (getUserMedia) su klasifikovani kao "moćne funkcije" od strane proizvođača pretraživača. Oni će raditi samo u sigurnom kontekstu .
- Izuzetak lokalnog hosta: Možete testirati na računaru koristeći http://localhost, ali čim pokušate da pristupite tom serveru sa slušalica Kuest KSNUMKS, pretraživač će blokirati KSR funkcije jer vidi nesigurnu mrežnu IP adresu (npr. http://192.168.1.10).
- Rešenje: Morate koristiti uslugu tuneliranja ili siguran hosting.
7.6 Meta Kuest Link & Developer Mode
Da biste efikasno pokrenuli i otklonili greške u kodu, vaš Kuest 3 mora biti prepoznat kao uređaj za programere.
Aktivacija korak po korak:
- Nalog programera: Registrujte se na dashboard.oculus.com. Moraćete da kreirate "Organizaciju" (to može biti bilo koje ime).
- Mobilna aplikacija: Otvorite aplikaciju Meta Kuest na svom telefonu, idite na Meni > Uređaji > Podešavanja slušalica > Režim za programere i uključite ga.
- Link: Povežite Kuest 3 sa računarom pomoću visokokvalitetnog USB-C 3.0 kabla ili preko Air Link (velike brzine Vi-Fi 6).
7.7 Fondacija Three.js (The Boilerplate)
Pre ulaska u AR, moramo inicijalizovati standardno 3D okruženje. Međutim, za Kuest 3, dva podešavanja se ne mogu pregovarati:
- Alfa i Antialias:
- KSR aktivacija:
Ovo Three.js govori da slušaju podatke o praćenju glave Kuest-a ($ 6DOF $) i automatski ga primenjuju na objekat "kamere".
KSNUMKS Upravljanje AR sesijom (životni ciklus)
Dugme "Enter AR" pokreće navigator.kr.rekuestSession. Ovo je mesto gde definišemo šta "supersile" naša aplikacija treba od Kuest 3 hardvera.
Potrebne i opcione karakteristike:
- local-floor: Ovo govori Quest-u da postavi koordinatu $Y=0$ na stvarnom nivou fizičkog poda.
- hit-test: Omogućava mogućnost raicast protiv geometrije u stvarnom svetu.
- plane-detection: Zahteva "semantičke" podatke (znajući koja mreža je 'tabela' u odnosu na 'zid').
