Differences

This shows you the differences between two versions of the page.

Link to this comparison view

irva:laboratoarear:03 [2024/12/10 13:20]
andrei.lapusteanu typos
irva:laboratoarear:03 [2025/09/29 23:17] (current)
maria_anca.balutoiu [Tasks]
Line 2: Line 2:
 O ancoră cloud este un tip special de ancoră care permite salvarea și reluarea experiențelor AR. Folosind Cloud Anchors API, putem crea spații interactive pe care să le ancorăm în locații din lumea reală și pe care să le distribuim și altor persoane. Practic, spre deosebire de o ancoră clasică, orice obiect cu o ancoră cloud atașată va fi vizibil simultan și oricând altcândva de oricâte device-uri. Ancorele cloud sunt disponibile atât pentru device-uri Android, cât și pentru iOS. O ancoră cloud este un tip special de ancoră care permite salvarea și reluarea experiențelor AR. Folosind Cloud Anchors API, putem crea spații interactive pe care să le ancorăm în locații din lumea reală și pe care să le distribuim și altor persoane. Practic, spre deosebire de o ancoră clasică, orice obiect cu o ancoră cloud atașată va fi vizibil simultan și oricând altcândva de oricâte device-uri. Ancorele cloud sunt disponibile atât pentru device-uri Android, cât și pentru iOS.
  
-===== Cum funcționează Ancorele Cloud =====+==== Cum funcționează Ancorele Cloud ====
 ARCore se conectează la serviciul ARCore Cloud Anchor pentru hosting și resolving. Deci, avem nevoie de conexiune la internet pentru a putea folosi ancore Cloud. ARCore se conectează la serviciul ARCore Cloud Anchor pentru hosting și resolving. Deci, avem nevoie de conexiune la internet pentru a putea folosi ancore Cloud.
  
Line 11: Line 11:
   - **Resolving.** Utilizatorii care au primit acel id unic pot recrea aceiași ancoră folosind serviciul ARCore Cloud Anchor.   - **Resolving.** Utilizatorii care au primit acel id unic pot recrea aceiași ancoră folosind serviciul ARCore Cloud Anchor.
  
-===== Hosting ​=====+==== Hosting ====
 Pentru a crea și a hosta o ancoră, ARCore folosește o hartă de feature-uri 3D a spațiului înconjurător. Pentru a obține această hartă, camera telefonului trebuie să mapeze mediul înconjurător din jurul punctului de interes din cât mai multe unghiuri și poziții diferite înainte de hosting-ul propriu-zis. Serviciul ARCore Cloud Anchor crează pe urmă o hartă de caracteristici 3D ale spațiului și întoarce id-ul unic. Pentru a crea și a hosta o ancoră, ARCore folosește o hartă de feature-uri 3D a spațiului înconjurător. Pentru a obține această hartă, camera telefonului trebuie să mapeze mediul înconjurător din jurul punctului de interes din cât mai multe unghiuri și poziții diferite înainte de hosting-ul propriu-zis. Serviciul ARCore Cloud Anchor crează pe urmă o hartă de caracteristici 3D ale spațiului și întoarce id-ul unic.
  
Line 58: Line 58:
 } }
 </​code>​ </​code>​
-===== Resolving ​=====+==== Resolving ====
 Când un alt utilizator aflat în același mediu îndreaptă camera telefonului către zona unde a fost salvată ancora cloud, serviciul ARCore Cloud Anchor compară periodic caracteristicile vizuale din scenă cu harta de caracteristici 3D care a fost creată anterior. ARCore folosește aceste comparații pentru a determina poziția și orientarea utilizatorului relative la ancora cloud. Când un alt utilizator aflat în același mediu îndreaptă camera telefonului către zona unde a fost salvată ancora cloud, serviciul ARCore Cloud Anchor compară periodic caracteristicile vizuale din scenă cu harta de caracteristici 3D care a fost creată anterior. ARCore folosește aceste comparații pentru a determina poziția și orientarea utilizatorului relative la ancora cloud.
  
Line 67: Line 67:
 {{ :​irva:​laboratoare:​cloud-anchor-part-2.gif?​600 |}} {{ :​irva:​laboratoare:​cloud-anchor-part-2.gif?​600 |}}
  
-===== Folosirea Ancorelor Cloud =====+==== Folosirea Ancorelor Cloud ====
 Pentru a putea folosi ancore cloud este nevoie de o formă de autentificare. În cazul Android, ARCore Extensions oferă suport pentru Keyless și API Key pentru autentificare. Pentru iOS, ARCore Extensions oferă suport pentru Authentication token și API Key. Autentificarea trebuie activată manual în **Edit -> Project Settings -> XR Plug-in Management -> ARCore Extensions**. Pentru a putea folosi ancore cloud este nevoie de o formă de autentificare. În cazul Android, ARCore Extensions oferă suport pentru Keyless și API Key pentru autentificare. Pentru iOS, ARCore Extensions oferă suport pentru Authentication token și API Key. Autentificarea trebuie activată manual în **Edit -> Project Settings -> XR Plug-in Management -> ARCore Extensions**.
  
Line 75: Line 75:
   * Adăugați în ierarhie componenta **ARCore Extensions**.   * Adăugați în ierarhie componenta **ARCore Extensions**.
   * În inspector **ARCore Extensions**,​ mapați variabilele **Session**,​ **XR Origin** și **Camera Manager**.   * În inspector **ARCore Extensions**,​ mapați variabilele **Session**,​ **XR Origin** și **Camera Manager**.
-  * **Assets** -> **Create** -> **XR** -> **ARCore Extensions Config**.+  * **Assets** -> **Create** -> **XR** -> **ARCore Extensions Config** ​și activați ancorele cloud.
   * **Assets** -> **Create** -> **XR** -> **Camera Config Filter**.   * **Assets** -> **Create** -> **XR** -> **Camera Config Filter**.
   * Deschideți **ARCore Extensions Config** și activați ancorele cloud.   * Deschideți **ARCore Extensions Config** și activați ancorele cloud.
Line 81: Line 81:
 </​note>​ </​note>​
  
-===== Activare API ARCore Cloud Anchor ​=====+==== Activare API ARCore Cloud Anchor ====
 Înainte de a putea utiliza ancore cloud în aplicațiile noastre, trebuie mai întâi să activăm API-ul ARCore Cloud Anchor într-un proiect nou sau deja existent de pe [[https://​console.cloud.google.com/​|Google Cloud Platform]]. Activarea API-ului se face [[https://​console.cloud.google.com/​apis/​library/​arcore|aici]]. ​ Înainte de a putea utiliza ancore cloud în aplicațiile noastre, trebuie mai întâi să activăm API-ul ARCore Cloud Anchor într-un proiect nou sau deja existent de pe [[https://​console.cloud.google.com/​|Google Cloud Platform]]. Activarea API-ului se face [[https://​console.cloud.google.com/​apis/​library/​arcore|aici]]. ​
  
Line 92: Line 92:
  
 <note important>​În cazul OAuth 2.0 Client IDs va trebui specificat SHA-1 certificate fingerprint al aplicației. Pentru a afla acest lucru, trebuie să facem următorii pași: <note important>​În cazul OAuth 2.0 Client IDs va trebui specificat SHA-1 certificate fingerprint al aplicației. Pentru a afla acest lucru, trebuie să facem următorii pași:
-  - În Unity deschidem **File -> Build Settings**. +  - În Unity deschidem **File -> Build Profiles**. 
-  - Deschidem **Player Settings -> Publishing Settings**+  - Deschidem **Player Settings -> Publishing Settings**.
   - **Keystore Manager -> Keystore... -> Create new -> In dedicated location**.   - **Keystore Manager -> Keystore... -> Create new -> In dedicated location**.
   - Completăm parola fișierului nou creat.   - Completăm parola fișierului nou creat.
Line 114: Line 114:
  
  
-===== Activarea Ancorelor Cloud în Aplicație ​===== +==== Activarea Ancorelor Cloud în Aplicație ==== 
-==== Keyless Authentication ​====+=== Keyless Authentication ===
 Opțiunea de autentificare keyless este disponibilă pentru dispozitivele **Android**. Aceasta permite salvarea unei ancore cloud pentru **maxim 365 de zile**. ​ Opțiunea de autentificare keyless este disponibilă pentru dispozitivele **Android**. Aceasta permite salvarea unei ancore cloud pentru **maxim 365 de zile**. ​
  
Line 124: Line 124:
 {{ :​irva:​laboratoare:​settingscloudanchors.png?​700 |}} {{ :​irva:​laboratoare:​settingscloudanchors.png?​700 |}}
  
-==== Token authentication ​====+=== Token authentication ===
 Opțiunea de autentificare pe bază de token este disponibilă pentru dispozitivele **iOS**. Aceasta permite salvarea unei ancore cloud pentru **maxim 365 de zile**. Pentru setare, urmați pașii de [[https://​developers.google.com/​ar/​develop/​authorization?​platform=unity-arf#​keyless-unity-ios|aici]]. Opțiunea de autentificare pe bază de token este disponibilă pentru dispozitivele **iOS**. Aceasta permite salvarea unei ancore cloud pentru **maxim 365 de zile**. Pentru setare, urmați pașii de [[https://​developers.google.com/​ar/​develop/​authorization?​platform=unity-arf#​keyless-unity-ios|aici]].
-==== API Key Authentication ​====+=== API Key Authentication ===
 Autentificarea pe bază de cheie API este disponibilă atât pe dispozitive **iOS**, cât și pe dispozitive **Android**. Aceasta permite salvarea unei ancore pentru **o singură zi**. Autentificarea pe bază de cheie API este disponibilă atât pe dispozitive **iOS**, cât și pe dispozitive **Android**. Aceasta permite salvarea unei ancore pentru **o singură zi**.
  
Line 135: Line 135:
   * Setăm **Android Authentication Strategy** la valoarea **API key**.   * Setăm **Android Authentication Strategy** la valoarea **API key**.
   * Adăugăm cheia în câmpul **Cloud Anchor API Keys**.   * Adăugăm cheia în câmpul **Cloud Anchor API Keys**.
-===== Calitatea Mapării Feature Points ​=====+==== Calitatea Mapării Feature Points ====
 **FeatureMapQuality** indică gradul de calitate al punctelor caracteristice detectate de ARCore de la o anumită poziție. Ancorele cloud care sunt salvate folosind puncte caracteristice de o calitate înaltă vor avea în general rezultate cât mai bune. Dacă gradul de calitate al hărții de puncte caracteristice nu poate fi estimat pentru o anumită poziție și orientare, atunci **EstimateFeatureMapQualityForHosting** loghează un mesaj de avertizare și are rezultatul **FeatureMapQuality.Insufficient**. Acest rezultat indică faptul că ARCore va avea cel mai probabil dificultăți în rezolvarea ancorei cloud. Deci, pentru rezultate optime, trebuie să ne asigurăm că **FeatureMapQuality** indică un rezultat suficient de bun. **FeatureMapQuality** indică gradul de calitate al punctelor caracteristice detectate de ARCore de la o anumită poziție. Ancorele cloud care sunt salvate folosind puncte caracteristice de o calitate înaltă vor avea în general rezultate cât mai bune. Dacă gradul de calitate al hărții de puncte caracteristice nu poate fi estimat pentru o anumită poziție și orientare, atunci **EstimateFeatureMapQualityForHosting** loghează un mesaj de avertizare și are rezultatul **FeatureMapQuality.Insufficient**. Acest rezultat indică faptul că ARCore va avea cel mai probabil dificultăți în rezolvarea ancorei cloud. Deci, pentru rezultate optime, trebuie să ne asigurăm că **FeatureMapQuality** indică un rezultat suficient de bun.
  
Line 141: Line 141:
 FeatureMapQuality quality = arAnchorManager.EstimateFeatureMapQualityForHosting(GetCameraPose());​ FeatureMapQuality quality = arAnchorManager.EstimateFeatureMapQualityForHosting(GetCameraPose());​
 </​code>​ </​code>​
-===== Tasks =====+==== Tasks ====
 <note tip> ​ <note tip> ​
- +Vom folosi scena **L3_CloudAnchors** din scheletul de laborator. Acesta poate fi descărcat de [[https://​github.com/​UPB-Graphics/​IRVA|aici]]. Scripturile necesare pentru rezolvarea laboratorului se află în **Assets->​Scripts**:​ **ARCloudAnchorManager.cs** și **CloudAnchorObjectPlacement.cs**.
-Vom folosi scena **Cloud Anchors** din scheletul de laborator. Acesta poate fi descărcat de [[https://​github.com/​UPB-Graphics/​IRVA|aici]]. Scripturile necesare pentru rezolvarea laboratorului se află în **Assets->​Scripts**:​ **ARCloudAnchorManager.cs** și **CloudAnchorObjectPlacement.cs**.+
  
 Inițial în scenă aveți 3 butoane: Inițial în scenă aveți 3 butoane:
Line 160: Line 159:
 </​note>​ </​note>​
  
 +<note important>​Importați ultima versiune a pachetului ''​IRVA_L3_AR''​ care se găsește în folder-ul **UnityPackages** din folderul root al proiectului.</​note>​
  
 +  - Adăugați în scenă și configurați ARCore extensions astfel încât să aveți suport pentru ancore cloud.
   - Implementați una din cele 3 metode pentru activarea API-ului ARCore Cloud Anchor și faceți setările corespunzătoare și în interfața Unity.   - Implementați una din cele 3 metode pentru activarea API-ului ARCore Cloud Anchor și faceți setările corespunzătoare și în interfața Unity.
   - Adăugați un cub pe ecran la poziția degetului. Atașați cubului o ancoră.   - Adăugați un cub pe ecran la poziția degetului. Atașați cubului o ancoră.
irva/laboratoarear/03.1733829659.txt.gz · Last modified: 2024/12/10 13:20 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