Title: 7. VebXR: Alternativa zasnovana na pretraživaču
Course: AI Projects for Students (SR) > Section: AI SA AR/VR

7. VebXR: Alternativa zasnovana na pretraživaču

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').