From 9e31979798054ea84bb7033fa98a3618ca5330d2 Mon Sep 17 00:00:00 2001 From: norangebit Date: Mon, 31 Dec 2018 17:22:46 +0100 Subject: [PATCH 1/4] mv caratteristiche from chapter1 --- src/chapter2.md | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 src/chapter2.md diff --git a/src/chapter2.md b/src/chapter2.md new file mode 100644 index 0000000..b5066d5 --- /dev/null +++ b/src/chapter2.md @@ -0,0 +1,35 @@ +# Capito 2 + +## ARCore + +### Caratteristiche + +ARCore è stata costruita intorno a tre caratteristiche principali[@googlear:FundamentalConceptsARCore:2019]: + +- **Motion tracking**: + Grazie ad un processo chiamato *concurrent odometry and mapping*(COM), ARCore è in grado di capire come il telefono si posiziona rispetto all'ambiente circostante. + ARCore riesce ad estrapolare dall'immagine proveniente dalla fotocamera una serie di ***feature points***, ed usa questi punti per calcolare il proprio movimento rispetto all'ambiente. + Queste informazioni, combinate con quelle provenienti dall'*inertial measurement unit*[^imu] permettono alla libreria di determinare la ***pose*** ovvero la posizione e l'orientamento del devices. +- **Environmental understanding**: + ARCore ottiene continuamente nuove informazione sull'ambiente tramite i *feature points*, grazie ai quali è in grado di determinare le superfici piane(sia orizzontali che verticali) e i bordi di quest'ultime. + Visto che le superfici piane sono determinate attraverso i *feature points* la libreria incontra non poche difficoltà nel riconoscimento di superfici piane verticali monocromatiche come, ad esempio, i muri. +- **Light estimation**: + ARCore è in grado di comprendere come la luce illumina gli oggetti reali, mettendo a disposizione del programmatore una serie di informazioni per poter correggere l'immagine proveniente dalla fotocamera. + Queste informazioni permettono di integrare meglio gli oggetti virtuali nella scena ed avere un maggiore foto-realismo + +### Perché ARCore + +La scelta di ARCore rispetto ad altri ambienti di sviluppo non è stata determinata da una supremazia tecnica. +La costruzione di una rappresentazione interna dell'ambiente e il posizionamento in questo sono le caratteristiche su cui si erigono tutte le librerie di realtà aumentata. +Tant'è non è possibile notare una sostanziale differenza tra ARCore e la già citata ARKit, o l'altrettanto valida Vuforia[@vuforia:VuforiaAugmentedReality:2019]. +Il campo in cui ARCore eccelle rispetto alla concorrenza invece è la gestione della luce. +Questo punto di forza, però, viene abbondantemente compensato dall'impossibilità di riconoscere un oggetto reale(sia esso statico[^image-recognition] che dinamico) dato un modello 3D. +Funzione disponibile sia su Vuforia, sia, dalla versione 2.0, su ARKit. + +La prima ragione per cui si è scelto di approfondire lo studio di ARCore è la sua natura multi piattaforma, con buona parte dell'API condivisa dai due maggiori sistemi operativi mobili. +Ma ciò che rende veramente unica la soluzione di Google è la licenza, Apache 2.0, che le conferisce il titolo di unico SDK per la realtà virtuale ad essere rilasciato sotto una licenza open source. + +Scopo della tesi sarà, mediante applicazioni d'esempio, esplorare potenzialità e limiti nello sviluppo di progetti dell'AR mediante tecnologie open source. + +[^image-recognition]: Google ha preferito relegare il riconoscimento di oggetti ad altre sue librerie di deep learnig. +[^imu]: Anche nota con l'acronimo di IMU è un dispositivo elettronico che misura, mediante l'accelerometro, il giroscopio e là dove presente il magnetometro, la forza specifica che agisce sul dispositivo. From b66de4c0404c4d52a704804145afe1fcae49bcd1 Mon Sep 17 00:00:00 2001 From: norangebit Date: Thu, 3 Jan 2019 18:21:54 +0100 Subject: [PATCH 2/4] add Sceneform --- src/chapter2.md | 44 ++++++++++++++++++++++++++++++++++++++------ 1 file changed, 38 insertions(+), 6 deletions(-) diff --git a/src/chapter2.md b/src/chapter2.md index b5066d5..69643af 100644 --- a/src/chapter2.md +++ b/src/chapter2.md @@ -1,4 +1,4 @@ -# Capito 2 +# ARCore e Sceneform ## ARCore @@ -12,24 +12,56 @@ ARCore è stata costruita intorno a tre caratteristiche principali[@googlear:Fun Queste informazioni, combinate con quelle provenienti dall'*inertial measurement unit*[^imu] permettono alla libreria di determinare la ***pose*** ovvero la posizione e l'orientamento del devices. - **Environmental understanding**: ARCore ottiene continuamente nuove informazione sull'ambiente tramite i *feature points*, grazie ai quali è in grado di determinare le superfici piane(sia orizzontali che verticali) e i bordi di quest'ultime. - Visto che le superfici piane sono determinate attraverso i *feature points* la libreria incontra non poche difficoltà nel riconoscimento di superfici piane verticali monocromatiche come, ad esempio, i muri. + Dato che le superfici piane sono determinate attraverso i *feature points* la libreria incontra non poche difficoltà nel riconoscimento di superfici piane verticali monocromatiche come, ad esempio, i muri. - **Light estimation**: - ARCore è in grado di comprendere come la luce illumina gli oggetti reali, mettendo a disposizione del programmatore una serie di informazioni per poter correggere l'immagine proveniente dalla fotocamera. + ARCore è in grado di comprendere come la luce illumina gli oggetti reali, mettendo a disposizione del programmatore un'API per poter correggere l'immagine proveniente dalla fotocamera. Queste informazioni permettono di integrare meglio gli oggetti virtuali nella scena ed avere un maggiore foto-realismo + +Risulta importante notare che ARCore non offre alcun supporto alle tecnologie di mixed reality. +A fronte di ciò è evidente che l'unica modalità di interazione tra l'utente e gli oggetti virtuali sia lo smartphone. ### Perché ARCore La scelta di ARCore rispetto ad altri ambienti di sviluppo non è stata determinata da una supremazia tecnica. -La costruzione di una rappresentazione interna dell'ambiente e il posizionamento in questo sono le caratteristiche su cui si erigono tutte le librerie di realtà aumentata. +La costruzione di una rappresentazione interna dell'ambiente e il posizionamento in questo sono le caratteristiche su cui si erigono tutte le librerie di realtà aumentata markerless. Tant'è non è possibile notare una sostanziale differenza tra ARCore e la già citata ARKit, o l'altrettanto valida Vuforia[@vuforia:VuforiaAugmentedReality:2019]. + Il campo in cui ARCore eccelle rispetto alla concorrenza invece è la gestione della luce. Questo punto di forza, però, viene abbondantemente compensato dall'impossibilità di riconoscere un oggetto reale(sia esso statico[^image-recognition] che dinamico) dato un modello 3D. Funzione disponibile sia su Vuforia, sia, dalla versione 2.0, su ARKit. La prima ragione per cui si è scelto di approfondire lo studio di ARCore è la sua natura multi piattaforma, con buona parte dell'API condivisa dai due maggiori sistemi operativi mobili. -Ma ciò che rende veramente unica la soluzione di Google è la licenza, Apache 2.0, che le conferisce il titolo di unico SDK per la realtà virtuale ad essere rilasciato sotto una licenza open source. +Però ciò che rende veramente unica la soluzione di Google è la licenza, Apache 2.0, che le conferisce il titolo di unico SDK per la realtà virtuale su dispositivi mobili ad essere rilasciato sotto una licenza open source. Scopo della tesi sarà, mediante applicazioni d'esempio, esplorare potenzialità e limiti nello sviluppo di progetti dell'AR mediante tecnologie open source. -[^image-recognition]: Google ha preferito relegare il riconoscimento di oggetti ad altre sue librerie di deep learnig. +## Sceneform + +In qualsiasi applicazione di augmented reality è possibile distinguere due aree ben distinte: + +- **riconoscimento dell'ambiente reale**: + Questa risulta essere la parte più strettamente di AR. + ARCore ci fornisce tutti gli strumenti per adempiere a questo compito. +- **renderizzazione degli oggetti virtuali** + Consiste nella generazione e visualizzazione degli oggetti virtuali. + ARCore, come d'altronde gli altri SDK, non forniscono alcun supporto diretto per questo compito. + +Sebbene ARCore non ci fornisca un supporto diretto, ci nette a disposizione una serie di facilitazioni. +Infatti ARCore viene distribuito in cinque SDK differenti. +Nelle versioni per Android, sia esso standard o NDK[^ndk] e nella versione versione per dispositivi iOS, la gestione del comparto grafico è delegata completamente allo sviluppatore. +Quindi per la gestione degli oggetti tridimensionali si è **costretti** ad usare API di basso livello come OpenGL ES[^opengl]. + +Oltre alle due soluzioni platform-specific sono disponibili altre due versioni di ARCore; una per l'ambiente Unity 3D e l'altra per Unreal Engine. +In questo modo è possibile appoggiarsi ad un motore grafico per la gestione del rendering e quindi rendere più semplice e veloce il compito dello sviluppatore. +Per quanto i vantaggi di queste soluzioni siano innegabile, bisogna considera che facendo ricorso ad esse si sta introducendo un ulteriore strato di software nel processo di sviluppo; software distribuito tramite license proprietarie che comportano costi di licenza. + +Inoltre per lo sviluppo in ambiente Android Google mette a disposizione Sceneform[@googlear:SceneformSDKAndroid:2019]; +un framework per la gestione del rendering di oggetti 3D, ottimizzato per dispositivi mobili che permette di creare velocemente applicazioni in AR sfruttando Java. + +Per lo sviluppo delle applicazioni di esempio si è scelto di fare affidamento proprio su quest'ultima soluzione, in quanto offre un ottimo trade-off tra facilità di accesso e potenzialità. +Inoltre vista la natura open source di Sceneform non si viene meno all'intento della tesi di mostrare le possibilità offerte da tecnologie aperte nel campo dell'AR per smartphone. + +[^image-recognition]: Google ha preferito relegare il riconoscimento di oggetti ad altre sue librerie di deep learning. [^imu]: Anche nota con l'acronimo di IMU è un dispositivo elettronico che misura, mediante l'accelerometro, il giroscopio e là dove presente il magnetometro, la forza specifica che agisce sul dispositivo. +[^ndk]: Acronimo di Native Development Kit, è un insieme di strumenti che permettono di scrivere parti di applicazioni Android in C o C++. +[^opengl]: Acronimo di Open Graphics Library for Embedded Systems From 19f8d61101020529cea634561a9be002a642dfe5 Mon Sep 17 00:00:00 2001 From: norangebit Date: Fri, 4 Jan 2019 11:33:45 +0100 Subject: [PATCH 3/4] add altre caratteristiche - add altre caratteristiche - fixs --- src/chapter2.md | 37 ++++++++++++++++++++++++------------- 1 file changed, 24 insertions(+), 13 deletions(-) diff --git a/src/chapter2.md b/src/chapter2.md index 69643af..dced2ba 100644 --- a/src/chapter2.md +++ b/src/chapter2.md @@ -2,7 +2,7 @@ ## ARCore -### Caratteristiche +### Caratteristiche principali ARCore è stata costruita intorno a tre caratteristiche principali[@googlear:FundamentalConceptsARCore:2019]: @@ -17,8 +17,20 @@ ARCore è stata costruita intorno a tre caratteristiche principali[@googlear:Fun ARCore è in grado di comprendere come la luce illumina gli oggetti reali, mettendo a disposizione del programmatore un'API per poter correggere l'immagine proveniente dalla fotocamera. Queste informazioni permettono di integrare meglio gli oggetti virtuali nella scena ed avere un maggiore foto-realismo +### Altre caratteristiche + +Altri due concetti importati di ARCore sono le ***Anchor*** e i ***Trackable***. + + +I punti e i piani sono oggetti speciali che implementano l'interfaccia `Trackable` e come risulta evidente dal nome, questi oggetti possono essere tracciati da ARCore nel corso del tempo. +La possibilità di ottenere informazioni su questi oggetti è molto importante perché ci permette di aggiornare la posa di essi man man che ARCore apprende informazione sull'ambiente esterno. +Per questo, quando si vuole posizionare un oggetto virtuale, è necessario definire un'*ancora* ad un trackable, così facendo ARCore è in grado di tracciare e aggiornare la posizione dell'oggetto renderizzato. +Inoltre per ridurre lo sforzo della CPU le ancore possono essere riutilizzate o messe in pausa quando non sono più parte della scena. + Risulta importante notare che ARCore non offre alcun supporto alle tecnologie di mixed reality. A fronte di ciò è evidente che l'unica modalità di interazione tra l'utente e gli oggetti virtuali sia lo smartphone. +Quando l'utente tocca lo schermo dello smartphone ARCore proietta un raggio nella visuale della fotocamera, restituendo tutti i punti caratteristici e i piani del mondo reale intersecati dal raggio. +Questa operazione prende il nome di *hit test*. ### Perché ARCore @@ -27,7 +39,7 @@ La costruzione di una rappresentazione interna dell'ambiente e il posizionamento Tant'è non è possibile notare una sostanziale differenza tra ARCore e la già citata ARKit, o l'altrettanto valida Vuforia[@vuforia:VuforiaAugmentedReality:2019]. Il campo in cui ARCore eccelle rispetto alla concorrenza invece è la gestione della luce. -Questo punto di forza, però, viene abbondantemente compensato dall'impossibilità di riconoscere un oggetto reale(sia esso statico[^image-recognition] che dinamico) dato un modello 3D. +Questo punto di forza, però, viene abbondantemente compensato dall'impossibilità di riconoscere un oggetto reale[^image-recognition](sia esso statico che dinamico) dato un modello 3D. Funzione disponibile sia su Vuforia, sia, dalla versione 2.0, su ARKit. La prima ragione per cui si è scelto di approfondire lo studio di ARCore è la sua natura multi piattaforma, con buona parte dell'API condivisa dai due maggiori sistemi operativi mobili. @@ -37,7 +49,7 @@ Scopo della tesi sarà, mediante applicazioni d'esempio, esplorare potenzialità ## Sceneform -In qualsiasi applicazione di augmented reality è possibile distinguere due aree ben distinte: +In qualsiasi applicazione di augmented reality è possibile distinguere due macro aree: - **riconoscimento dell'ambiente reale**: Questa risulta essere la parte più strettamente di AR. @@ -46,17 +58,16 @@ In qualsiasi applicazione di augmented reality è possibile distinguere due aree Consiste nella generazione e visualizzazione degli oggetti virtuali. ARCore, come d'altronde gli altri SDK, non forniscono alcun supporto diretto per questo compito. -Sebbene ARCore non ci fornisca un supporto diretto, ci nette a disposizione una serie di facilitazioni. -Infatti ARCore viene distribuito in cinque SDK differenti. -Nelle versioni per Android, sia esso standard o NDK[^ndk] e nella versione versione per dispositivi iOS, la gestione del comparto grafico è delegata completamente allo sviluppatore. -Quindi per la gestione degli oggetti tridimensionali si è **costretti** ad usare API di basso livello come OpenGL ES[^opengl]. +Nelle versioni dell'SDK per Android, sia esso standard o NDK[^ndk] e per dispositivi iOS, la gestione del comparto grafico è delegata completamente allo sviluppatore. +Quindi per la renderizzazione degli oggetti tridimensionali si è *costretti* ad usare API di basso livello come OpenGL ES[^opengl] o la più moderna Vulkan. -Oltre alle due soluzioni platform-specific sono disponibili altre due versioni di ARCore; una per l'ambiente Unity 3D e l'altra per Unreal Engine. -In questo modo è possibile appoggiarsi ad un motore grafico per la gestione del rendering e quindi rendere più semplice e veloce il compito dello sviluppatore. -Per quanto i vantaggi di queste soluzioni siano innegabile, bisogna considera che facendo ricorso ad esse si sta introducendo un ulteriore strato di software nel processo di sviluppo; software distribuito tramite license proprietarie che comportano costi di licenza. +Oltre alle soluzioni platform-specific sono disponibili altre due versioni di ARCore, una per l'ambiente Unity 3D e una per Unreal Engine. +Con queste ultime è possibile appoggiarsi ad un motore grafico per la gestione del rendering e quindi rendere più semplice e veloce il compito dello sviluppatore. +Per quanto i vantaggi di queste soluzioni siano innegabile, bisogna considera che facendo ricorso ad esse si sta introducendo un ulteriore strato di software nel processo di sviluppo; +software distribuito tramite license proprietarie che comportano costi di licenza. -Inoltre per lo sviluppo in ambiente Android Google mette a disposizione Sceneform[@googlear:SceneformSDKAndroid:2019]; -un framework per la gestione del rendering di oggetti 3D, ottimizzato per dispositivi mobili che permette di creare velocemente applicazioni in AR sfruttando Java. +Oltre alle soluzioni elencate in precedenza, per lo sviluppo in ambiente Android, Google mette a disposizione Sceneform[@googlear:SceneformSDKAndroid:2019] un framework per la gestione del rendering di oggetti 3D, ottimizzato per dispositivi mobili che permette di creare velocemente applicazioni in AR sfruttando Java. +Inoltre essendo pensato specificamente per Android e ARCore offre una serie di ulteriori vantaggi, come la gestione del ciclo di vita dell'activity o la gestione automatica delle ombre. Per lo sviluppo delle applicazioni di esempio si è scelto di fare affidamento proprio su quest'ultima soluzione, in quanto offre un ottimo trade-off tra facilità di accesso e potenzialità. Inoltre vista la natura open source di Sceneform non si viene meno all'intento della tesi di mostrare le possibilità offerte da tecnologie aperte nel campo dell'AR per smartphone. @@ -64,4 +75,4 @@ Inoltre vista la natura open source di Sceneform non si viene meno all'intento d [^image-recognition]: Google ha preferito relegare il riconoscimento di oggetti ad altre sue librerie di deep learning. [^imu]: Anche nota con l'acronimo di IMU è un dispositivo elettronico che misura, mediante l'accelerometro, il giroscopio e là dove presente il magnetometro, la forza specifica che agisce sul dispositivo. [^ndk]: Acronimo di Native Development Kit, è un insieme di strumenti che permettono di scrivere parti di applicazioni Android in C o C++. -[^opengl]: Acronimo di Open Graphics Library for Embedded Systems +[^opengl]: Acronimo di Open Graphics Library for Embedded Systems, è una specifica che permette di avere un API condivisa su hardware differente. From d0dc8d1570aca6e6015d2b588daa2867ff8e07f6 Mon Sep 17 00:00:00 2001 From: norangebit Date: Wed, 9 Jan 2019 19:04:07 +0100 Subject: [PATCH 4/4] correzione errori --- src/chapter2.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/chapter2.md b/src/chapter2.md index dced2ba..4212e81 100644 --- a/src/chapter2.md +++ b/src/chapter2.md @@ -9,10 +9,10 @@ ARCore è stata costruita intorno a tre caratteristiche principali[@googlear:Fun - **Motion tracking**: Grazie ad un processo chiamato *concurrent odometry and mapping*(COM), ARCore è in grado di capire come il telefono si posiziona rispetto all'ambiente circostante. ARCore riesce ad estrapolare dall'immagine proveniente dalla fotocamera una serie di ***feature points***, ed usa questi punti per calcolare il proprio movimento rispetto all'ambiente. - Queste informazioni, combinate con quelle provenienti dall'*inertial measurement unit*[^imu] permettono alla libreria di determinare la ***pose*** ovvero la posizione e l'orientamento del devices. + Queste informazioni, combinate con quelle provenienti dall'*inertial measurement unit*[^imu], permettono alla libreria di determinare la ***pose*** ovvero la posizione e l'orientamento del device. - **Environmental understanding**: ARCore ottiene continuamente nuove informazione sull'ambiente tramite i *feature points*, grazie ai quali è in grado di determinare le superfici piane(sia orizzontali che verticali) e i bordi di quest'ultime. - Dato che le superfici piane sono determinate attraverso i *feature points* la libreria incontra non poche difficoltà nel riconoscimento di superfici piane verticali monocromatiche come, ad esempio, i muri. + Dato che le superfici piane sono determinate attraverso i *feature points*, la libreria incontra non poche difficoltà nel riconoscimento di superfici piane verticali monocromatiche come, ad esempio, i muri. - **Light estimation**: ARCore è in grado di comprendere come la luce illumina gli oggetti reali, mettendo a disposizione del programmatore un'API per poter correggere l'immagine proveniente dalla fotocamera. Queste informazioni permettono di integrare meglio gli oggetti virtuali nella scena ed avere un maggiore foto-realismo @@ -23,7 +23,7 @@ Altri due concetti importati di ARCore sono le ***Anchor*** e i ***Trackable***. I punti e i piani sono oggetti speciali che implementano l'interfaccia `Trackable` e come risulta evidente dal nome, questi oggetti possono essere tracciati da ARCore nel corso del tempo. -La possibilità di ottenere informazioni su questi oggetti è molto importante perché ci permette di aggiornare la posa di essi man man che ARCore apprende informazione sull'ambiente esterno. +La possibilità di ottenere informazioni su questi oggetti è molto importante perché ci permette di aggiornare la posa di essi man mano che ARCore apprende informazione sull'ambiente esterno. Per questo, quando si vuole posizionare un oggetto virtuale, è necessario definire un'*ancora* ad un trackable, così facendo ARCore è in grado di tracciare e aggiornare la posizione dell'oggetto renderizzato. Inoltre per ridurre lo sforzo della CPU le ancore possono essere riutilizzate o messe in pausa quando non sono più parte della scena. @@ -63,10 +63,10 @@ Quindi per la renderizzazione degli oggetti tridimensionali si è *costretti* ad Oltre alle soluzioni platform-specific sono disponibili altre due versioni di ARCore, una per l'ambiente Unity 3D e una per Unreal Engine. Con queste ultime è possibile appoggiarsi ad un motore grafico per la gestione del rendering e quindi rendere più semplice e veloce il compito dello sviluppatore. -Per quanto i vantaggi di queste soluzioni siano innegabile, bisogna considera che facendo ricorso ad esse si sta introducendo un ulteriore strato di software nel processo di sviluppo; -software distribuito tramite license proprietarie che comportano costi di licenza. +Per quanto i vantaggi di queste soluzioni siano innegabile, bisogna considerare che facendo ricorso ad esse si sta introducendo un ulteriore strato di software nel processo di sviluppo; +software distribuito tramite licenze proprietarie che comportano costi di utilizzo. -Oltre alle soluzioni elencate in precedenza, per lo sviluppo in ambiente Android, Google mette a disposizione Sceneform[@googlear:SceneformSDKAndroid:2019] un framework per la gestione del rendering di oggetti 3D, ottimizzato per dispositivi mobili che permette di creare velocemente applicazioni in AR sfruttando Java. +Oltre alle soluzioni elencate in precedenza, per lo sviluppo in ambiente Android, Google mette a disposizione Sceneform[@googlear:SceneformSDKAndroid:2019], un framework per la gestione del rendering di oggetti 3D, ottimizzato per dispositivi mobili che permette di creare velocemente applicazioni in AR sfruttando Java. Inoltre essendo pensato specificamente per Android e ARCore offre una serie di ulteriori vantaggi, come la gestione del ciclo di vita dell'activity o la gestione automatica delle ombre. Per lo sviluppo delle applicazioni di esempio si è scelto di fare affidamento proprio su quest'ultima soluzione, in quanto offre un ottimo trade-off tra facilità di accesso e potenzialità.