Differences

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

Link to this comparison view

irva:laboratoare:03 [2023/10/22 11:56]
maria_anca.balutoiu [Hosting]
irva:laboratoare:03 [2024/10/07 09:32] (current)
maria_anca.balutoiu [Tasks]
Line 18: Line 18:
 <code c#> <code c#>
 public void HostAnchor() public void HostAnchor()
-    ​+
-        Debug.Log("​HostAnchor call in progress"​);​+    Debug.Log("​HostAnchor call in progress"​);​
  
-        ​/* TODO 3.1 Get FeatureMapQuality */ +    ​/* Get FeatureMapQuality */ 
-        FeatureMapQuality quality = arAnchorManager.EstimateFeatureMapQualityForHosting(GetCameraPose());​ +    FeatureMapQuality quality = arAnchorManager.EstimateFeatureMapQualityForHosting(GetCameraPose());​ 
-        Debug.Log(string.Format("​Feature Map Quality: {0}", quality));+    Debug.Log(string.Format("​Feature Map Quality: {0}", quality));
  
-        ​if (quality != FeatureMapQuality.Insufficient) +    ​if (quality != FeatureMapQuality.Insufficient) 
-        +    
-            /* TODO 3.2 Start the hosting process */ +        /* Start the hosting process */ 
-            HostCloudAnchorPromise cloudAnchor = arAnchorManager.HostCloudAnchorAsync(pendingHostAnchor,​ 365);+        HostCloudAnchorPromise cloudAnchor = arAnchorManager.HostCloudAnchorAsync(pendingHostAnchor,​ 365);
  
-            ​/* Wait for the promise to solve (Hint! Pass the HostCloudAnchorPromise variable to the coroutine) ​*/ +        ​/* Wait for the promise to solve */ 
-            StartCoroutine(WaitHostingResult(cloudAnchor));​ +        StartCoroutine(WaitHostingResult(cloudAnchor));​
-        }+
     }     }
 +}
     ​     ​
-    ​private IEnumerator WaitHostingResult(HostCloudAnchorPromise hostingPromise)+private IEnumerator WaitHostingResult(HostCloudAnchorPromise hostingPromise
 +
 +    /* Wait for the promise. Save the id if the hosting succeeded */ 
 +    yield return hostingPromise;​ 
 + 
 +    if (hostingPromise.State == PromiseState.Cancelled)
     {     {
-        ​/* TODO 3.3 Wait for the promise. Save the id if the hosting succeeded */ +        yield break; 
-        ​yield return ​hostingPromise;​+    } 
 +     
 +    var result = hostingPromise.Result;
  
-        if (hostingPromise.State == PromiseState.Cancelled) yield break; +    ​if (result.CloudAnchorState == CloudAnchorState.Success) 
-        var result = hostingPromise.Result;​ +    
- +        anchorIdToResolve = result.CloudAnchorId;​ 
-        ​if (result.CloudAnchorState == CloudAnchorState.Success) +        Debug.Log("​Anchor hosted successfully!"​);​ 
-        +    
-            anchorIdToResolve = result.CloudAnchorId;​ +    else 
-            Debug.Log("​Anchor hosted successfully!"​);​ +    
-        +        Debug.Log(string.Format("​Error in hosting the anchor: {0}", result.CloudAnchorState));​
-        else +
-        +
- +
-            ​Debug.Log(string.Format("​Error in hosting the anchor: {0}", result.CloudAnchorState));​ +
-        }+
     }     }
 +}
 </​code>​ </​code>​
 ===== Resolving ===== ===== Resolving =====
Line 65: Line 68:
  
 ===== 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 **Project Settings -> XR -> 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**.
  
 <note warning>​API-ul ARCore Cloud Anchor necesită instalarea **ARCore Extensions for AR Foundation**.</​note>​ <note warning>​API-ul ARCore Cloud Anchor necesită instalarea **ARCore Extensions for AR Foundation**.</​note>​
Line 82: Line 85:
   - În Unity deschidem **File -> Build Settings**.   - În Unity deschidem **File -> Build Settings**.
   - Deschidem **Player Settings -> Publishing Settings**.   - Deschidem **Player Settings -> Publishing Settings**.
-  - **Keystore Manager -> 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.
   - Completăm un alias.   - Completăm un alias.
Line 91: Line 94:
  
 <​code>​ <​code>​
-.\keytool ​-exportcert ​-alias <numele aliasului setat anterior>​ -keystore <calea către fișierul creat de Unity>​\user.keystore -list -v+.\keytool -alias <numele aliasului setat anterior>​ -keystore <calea către fișierul creat de Unity>​\user.keystore -list -v
 </​code>​ </​code>​
  
Line 97: Line 100:
  
 <note warning> <note warning>
-Atenție! Odată setată parola, de fiecare dată când pornim Unity, va fi necesar să scriem parola în **Player Settings**. ​Atfel, build-ul nu se va putea face.+Atenție! Odată setată parola, de fiecare dată când pornim Unity, va fi necesar să scriem parola în **Player Settings**. ​Altfel, build-ul nu se va putea face. De asemenea, prima dată după ce ați făcut acești pași va fi nevoie sa ștergeți ultima versiune a aplicației de pe telefon înainte de a încerca să puneți aplicația iar pe telefon.
 </​note>​ </​note>​
 </​note>​ </​note>​
Line 113: Line 116:
  
 ===== 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/​unity-arf/cloud-anchors/​developer-guide-ios#​token-authentication|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 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 pe dispozitive **Android**. Aceasta permite salvarea unei ancore pentru **o singură zi**.
Line 120: Line 123:
   - Creăm o cheie pentru API pe Google Cloud Platform.   - Creăm o cheie pentru API pe Google Cloud Platform.
   - Adăugăm noua cheie API proiectului:​   - Adăugăm noua cheie API proiectului:​
-  * În Unity: **Edit -> Project Settings -> XR -> ARCore Extensions**.+  * În Unity: **Edit -> Project Settings -> XR Plug-in Management ​-> ARCore Extensions**. 
 +  * 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 =====
Line 131: Line 135:
 <note tip> ​ <note tip> ​
  
-Vom folosi scena **Cloud Anchors** din scheletul de laborator. Acesta poate fi descărcat de [[https://​github.com/​Maria-Anca-Balutoiu/​IRVA.git|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/​Maria-Anca-Balutoiu/​IRVA_AR|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 153: Line 157:
   - Ștergeți cubul de pe ecran la apăsarea butonului **Delete**.   - Ștergeți cubul de pe ecran la apăsarea butonului **Delete**.
   - Folosind ancora din cloud, afișați cubul în poziția în care l-ați plasat inițial.   - Folosind ancora din cloud, afișați cubul în poziția în care l-ați plasat inițial.
-  - **Bonus:** Laboratorul este configurat să accepte o singură ancoră cloud. Modificați astfel încât să puteți adăuga, ​host și rezolva oricâte ancore cloud.+  - **Bonus:** Laboratorul este configurat să accepte o singură ancoră cloud. Modificați astfel încât să puteți adăuga, ​hostui ​și rezolva oricâte ancore cloud.
  
  
irva/laboratoare/03.1697964971.txt.gz · Last modified: 2023/10/22 11:56 by maria_anca.balutoiu
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