correzione errori

This commit is contained in:
Raffaele Mignone 2019-01-24 13:09:05 +01:00
parent 7a036a554b
commit 23f6c1aa65
Signed by: norangebit
GPG Key ID: 4B9DF72AB9508845

View File

@ -2,43 +2,63 @@
Nel corso di questo elaborato e in particolar modo durante lo sviluppo dei vari progetti d'esempio è stato possibile analizzare nel dettaglio ARCore e Sceneform e scoprirne limiti e potenzialità. Nel corso di questo elaborato e in particolar modo durante lo sviluppo dei vari progetti d'esempio è stato possibile analizzare nel dettaglio ARCore e Sceneform e scoprirne limiti e potenzialità.
Nelle seguenti sezioni sono riportate le considerazioni finali su entrambe le librerie utilizzate. Nelle seguenti sezioni sono riportate alcune considerazioni finali su entrambe le librerie utilizzate.
## ARCore ## ARCore
ARCore si è dimostrata una soluzione potente ed efficace. ARCore si è dimostrata una soluzione potente ed efficace.
Inoltre la disponibilità dell'SDK per i due ecosistemi più utilizzati e il supporto ad Unity 3D, lo standard *de facto* nello sviluppo di contenuti multimediali in ambiente mobile, la rende anche una soluzione flessibile e capace di adattarsi a tutte le esigenze. La disponibilità dell'SDK per i due ecosistemi più utilizzati e il supporto ad Unity 3D, lo standard *de facto* nello sviluppo di contenuti multimediali in ambiente mobile, la rendono una soluzione flessibile e capace di adattarsi a tutte le esigenze.
Nonostante i chiari ed evidenti punti a favore, nel corso dello sviluppo delle applicazioni, sono emersi anche una serie di mancanze e limitazioni. Nonostante i chiari ed evidenti punti a favore, nel corso dello sviluppo delle applicazioni, sono emersi anche una serie di mancanze e limitazioni.
### AR marker based ### AR marker based
La natura di soluzione orientata all'AR markerless risulta evidente già dall'origini del progetto. ARCore e il suo predecessore, *project tango*, hanno puntato da sempre a soluzioni orientate all'AR markerless, conferendo un ruolo secondario all'AR marker based.
Infatti, a differenza di altre soluzioni, nel campo dell'AR marker based offre esclusivamente il riconoscimento di immagini. Infatti, a differenza di altre soluzioni, ARCore presenta alcune limitazioni in questo campo, come ad esempio il solo riconoscimento di immagini.
Sebbene si possa pensare ad una lacuna della libreria, in realtà, si tratta più di una scelta progettuale, infatti Google ha preferito delegare il riconoscimento di pattern alle altre numerose soluzioni offerte da essa stessa. Nonostante questo, non si può parlare di una vera e propria lacuna, ma più di una scelta progettuale.
Tramite la libreria open source TensorFlow[@googlebrain:TensorFlow:2019] o alle soluzioni in cloud, come il machine learning kit di Firebase[@firebase:IntroducingMLKit:2018] è possibile adempiere perfettamente a questi compiti. Google ha preferito delegare il riconoscimento di pattern alle altre, e numerose, soluzioni offerte da essa stessa.
Infatti tramite la libreria open source TensorFlow[@googlebrain:TensorFlow:2019] o le soluzioni in cloud, come il machine learning kit di Firebase[@firebase:IntroducingMLKit:2018] è possibile adempiere perfettamente a questi compiti.
### Riconoscimento delle superfici verticali ### Riconoscimento delle superfici verticali
Il più grosso limite riscontrato nell'utilizzo della libreria si ha senza dubbio nel riconoscimento delle superfici verticali, sopratutto se queste superfici sono senza soluzioni di continuità. Il più grosso limite riscontrato nell'utilizzo della libreria si ha senza dubbio nel riconoscimento delle superfici verticali, sopratutto se queste si presentano senza soluzioni di continuità.
Questi problemi sono intrinsechi alla tecnologia stessa del tracking basato su features points, infatti ARCore non riesce a trovare nessun punto caratteristico a cui agganciarsi per svolgere le operazioni di tracking. Questi problemi sono intrinsechi alla tecnologia stessa del tracking basato su features points, infatti ARCore non riesce a trovare nessun punto caratteristico a cui agganciarsi per svolgere le operazioni di tracking.
Se da un lato è vero che nella maggior parte dei casi si opera con piani orizzontali e che alcuni miglioramenti siano stati apportati con la versione 1.6, ad oggi, se si necessita di un uso esclusivo e massiccio di piani verticali, è consigliabile ricorrere ad altre soluzioni.
Se è vero che nella maggior parte dei casi si opera con piani orizzontali e che alcuni miglioramenti siano stati apportati con la versione 1.6, ad oggi, se si necessita di un uso esclusivo o massiccio di piani verticali, è consigliabile ricorrere ad altre soluzioni.
### Cloud Anchors ### Cloud Anchors
Una caratteristica peculiare di ARCore sono le cloud anchors che si presentano senza dubbio come una soluzione innovativa e dalle molte potenzialità, ma nonostante ciò presentano anche evidenti limitazioni tecniche. Una caratteristica peculiare di ARCore sono le Cloud Anchors che si presentano senza dubbio come una soluzione innovativa e dalle molte potenzialità, presentando però, limitazioni prevalentemente di natura tecnica.
Il ripristino di un'ancora remota non sempre avviene in modo corretto e in alcuni casi si ottengono vere e proprie anomalie, come oggetti in bilico o sospesi a mezz'aria. Il ripristino di un'ancora remota non sempre avviene in modo corretto e in alcuni casi si ottengono vere e proprie anomalie visive, come oggetti in bilico o sospesi a mezz'aria.
Per ottenere risultati migliori è consigliabile, sia in fase di creazione, sia in fase di ripristino, posizionarsi ad una distanza non inferiore al metro dal punto in cui verrà creata/ripristinata l'ancora. Per ottenere risultati migliori è consigliabile, sia in fase di creazione, sia in fase di ripristino, posizionarsi ad una distanza non inferiore al metro dal punto in cui verrà creata/ripristinata l'ancora.
Inoltre si è notato un ripristino migliore se quest'ultimo viene eseguito dalla medesima prospettiva dalla quasi si è effettuata la creazione. Inoltre si è notato un ripristino migliore se quest'ultimo viene eseguito dalla medesima prospettiva dalla quale è stata effettuata la creazione.
Infine nella documentazione ufficiale, le cloud anchors, vengono presentate come una soluzione in grado di permettere la condivisione di un'esperienza AR, ma allo stato attuale si tratta più di una soluzione per lo storage di ancore. Nella documentazione ufficiale, le Cloud Anchors, vengono presentate come una soluzione in grado di abilitare la condivisione di un'esperienza AR, ma allo stato attuale si tratta più di una soluzione per lo storage di ancore.
Infatti per ottenere una condivisione trasparente all'utente sono richiesti servizi aggiuntivi e un notevole di lavoro extra da parte dello sviluppatore. Infatti per ottenere una condivisione trasparente all'utente, sono richiesti servizi aggiuntivi e un notevole lavoro extra da parte dello sviluppatore.
### Mancanza di listener ### Mancanza di listener
Un'altra limitazione emersa prepotentemente durante lo sviluppo è l'impossibilità di associare listener a molti eventi d'interesse. Un'altra limitazione emersa prepotentemente durante lo sviluppo è l'impossibilità di associare listener a molti eventi d'interesse.
Quasi tutti gli eventi più complicati del semplice tocco su una superficie piana non possono essere trattati direttamente, ma ci si deve appoggiare all'evento di aggiornamento della scena. Quasi tutti gli eventi più complicati del semplice tocco su una superficie piana non possono essere trattati direttamente, ma ci si deve appoggiare all'evento di aggiornamento della scena.
Questa situazione comporta che in qualsiasi esempio non giocattolo, il listener sull'aggiornamento della scena abbia molti compiti e percorsi di esecuzione distinti. Questa situazione, in *problemi non giocattolo*, comporta l'utilizzo eccessivo del listener e l'assegnazione ad esso di numerosi compiti eterogenei e quindi la nascita di un codice meno leggibile e manutenibile, con una conseguente maggiore propensione all'errore.
Tutto questo comporta un codice meno leggibile e manutenibile ed una maggiore propensione all'errore.
## Sceneform
La natura *platform specific* di Sceneform permette agli sviluppatori di sfruttare una serie di facilitazioni che rendono il processo di sviluppo di applicazioni AR più veloce ed immediato.
Tra le più importanti troviamo sicuramente:
- **Gestione delle ombre**:
Sceneform, sfruttando le informazioni fornite da ARCore, riesce a gestire in maniera automatica le ombre degli oggetti virtuali piazzati sulla scena.
Ottenendo così risultati soddisfacenti sia con oggetti semplici, sia con oggetti in movimento, che con oggetti dotati di varie appendici.
- **Gestione del ciclo dell'applicazione**:
Grazie a Sceneform, allo sviluppatore, è sufficiente dichiarare l'`ArFragment` per avere un ambiente AR a portata di mano che gestisce quasi perfettamente il ciclo di vita dell'applicazione.
Sebbene questi vantaggi siano tangibili e innegabili, sono presenti anche molte limitazioni, come già ampiamente discusso in precedenza.
Le animazioni e il movimento o, più in generale, l'assenza di un motore grafico vero e proprio, pesano come una spada di Damocle sull'affidabilità della libreria.
Durante l'utilizzo di Sceneform si ha sempre l'impressione di star utilizzando un prodotto ancora acerbo e incompleto, per cui l'utilizzo di questa soluzione deve essere attentamente valutata da parte dello sviluppatore.