This is an old revision of the document!


Laboratorul 09. Meta Quest | Interacțiuni

Date de intrare

Headset-urile pe care le folosim se bazează pe Interaction SDK, care se ocupă de procesarea fluxului de date oferit de către hardware – în esență, datele de interes care pot fi folosite în aplicații sunt poziția și rotația atât a headset-ului cât și a controller-elor sau mâinilor. În implementări mai recente, există funcționalități ce permit și realizarea body și face tracking-ului (face tracking doar pe Meta Pro).

Aceste data de intrare sunt procesate de către Interaction SDK. De exemply, pentru hand tracking, datele de intrare sunt trecute printr-un filtru (pentru a minimiza jitter-ul), se creează o mână “sintetică” ce constrânge poziția/rotația mâinii (de exemplu, pentru a nu trece prin anumite obiecte) iar în final se creează reprezentarea vizuală.

Aceste interacțiuni se bazează pe comunicarea dintre un interactor și un interactibil. Putem defini această “comunicare” ca și o interacțiune, așadar lanțul de elemente de interes devine:

Interactor ↔ Interaction ↔ Interactable

LINK DETALII AICI

Interactor & interacțiuni

Interactorul reprezintă o componentă atașată de controller-e sau de mâini ce are rolul de a iniția acțiuni. Orice interacor implementează interfața IInteractor, care dictază acțiunile posibile. Un interactor poate schimba evenimente cu alți interactibili (detalii în următoarea secțiune).

Un interactor există pentru a defini interacțiuni, care sunt de mai multe tipuri:

  • Grab și distance grab, pentru a ‘prinde’ și deplasa obiecte prin scenă
  • Poke, pentru interacțiuni de atingere, cum ar fi apăsarea unui buton
  • Ray, pentru interacțini la distanță bazate pe raze
  • Locomotion, ce permite deplasarea printr-o scenă

Fiecare dintre aceste interacțiuni se poate implementa (în forma de bază) folosind prefab-uri și configurarea în inspector.

Puteți studia mai în detaliu aceste interacțiuni plecând de la acest link

Interactibil

Reprezintă o componentă care răspunde la evenimentele unui interactor. Interactibilul poată să răspunde unei interacțiuni specifice. Orice interactibil implementează interfața IInteractable, care dictază acțiunile posibile.

De exemplu, un interactibil de tip poke nu va răspunde (interacționa) cu un interactor de tip grab.

Este important de știut că elementele interactibile se pot regăsi intr-una din 4 stări posibile:

  • Disabled (inactiv)
  • Normal
  • Hover (apropiere)
  • Select (intracțiune)

În următorul GIF puteți observa interactibilul în stările Normal, Hover și Select.

Pentru realizarea acestor interacțiuni este necesară configurarea ambelor părți. De exemplu, pentru o interacțiune de tip Poke folosing hand tracking-ul, obiectele de tip mână din ierarhie for avea atașate obiecte de tip HandPokeInteractor, iar elementele interactibile vor avea atașate o componentă de tip HandPokeInteractible.

Sumar interacțiuni

Un flow simplificat al Interaction SDK-ului poate fi următorul:

  • Se preia input-ului iar în urma procesării și filtrarii se randează controller-ele/mâinile
  • Controller-ele/mâinile sunt interactori care așteaptă/ascultă interacțiunea cu elemente interactibile
  • Dacă interactorul este în proximitatea unui interactibil, iar cele 2 elemente implementează o interacțiune comună (poke, grab), are loc evenimentul de hover
  • Interacțiunea efectivă are loc atunci când interactibilul este selectat de către interactor
irva/laboratoare/09.1704792128.txt.gz · Last modified: 2024/01/09 11:22 by andrei.lapusteanu
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0