3.2.1 Analisi del dominio applicativo e di soluzioni esistenti
Per individuare i vari requisiti corrispondenti alle diverse funzionalità del prodotto, è necessario effettuare un’analisi del suo dominio di appartenenza. Per effettuare tale analisi è necessario comprendere cosa si intende per realtà aumentata e capire il suo contesto d’utilizzo all’interno del progetto, confrontandolo anche con soluzioni già esistenti.
Realtà aumentata
Per realtà aumentata si intende, come anche il termine suggerisce, una qualsiasi visione della realtà con l’aggiunta di informazioni, spesso contenuti multimediali, aumentando quindi il livello di percezione della realtà di un utente.
Il metodo in cui ciò avviene è tramite la sovrapposizione di uno strato, corrispondente alle informazioni virtuali, (spesso immagini o oggetti 3D) all’ambiente circostante, ovvero il mondo reale.
Pertanto la sfida più grande non è l’inserimento di un oggetto virtuale all’interno del mondo reale, bensì il suo posizionamento al fine da farlo sembrare parte dell’ambiente, aggiungendogli quindi un certo grado di realismo.
Per ottenere questi risultati sono nate nel tempo diverse tecniche:
∗ Utilizzo di marcatori: questa tecnica utilizza marcatori presenti nel mondo reale, come ad esempio codici QR[g]. Tramite la la loro lettura è possibile effettuare diverse azioni tra cui il posizionamento di oggetti virtuali. Nonostante questa tecnica sia semplice e non richieda particolare potenza computazionale, essa richiede che siano presenti marcatori nell’ambiente per funzionare e per tanto non è utilizzabile in ogni situazione;
∗ Proiezione: questa tecnica consiste nel proiettare luci artificiali nell’ambiente.
L’interazione con esse avviene tramite tocchi i quali alterano la proiezione di luce;
∗ Sovrapposizione: questa tecnica consiste nel riconoscimento dell’ambiente circostante al fine di crearne una rappresentazione per poi aggiungerci tramite sovrapposizione un oggetto virtuale. Per fare ciò è quindi molto importante che questa tecnica sia in grado di riconoscere l’ambiente reale nel modo più dettagliato possibile al fine di posizionare l’oggetto virtuale nella scena creata e che inoltre possieda la potenza computazionale per effettuare tali operazioni.
Per lo svolgimento del progetto la tecnica più indicata risulta essere la terza, tecnica utilizzata daARKit, in quanto utilizzabile nella maggior parte degli ambienti e dalla maggior parte dei dispositivi che possiedano la capacità di calcolo necessaria per effettuare tali operazioni.
Il funzionamento di ARKit può essere descritto nei seguenti passaggi:
∗ all’avvio dell’applicazione, o della parte dell’applicazione che utilizza ARKit, viene creata una sessione per il riconoscimento dell’ambiente;
∗ tramite l’uso di sensori di movimento e la fotocamera di un dispositivo ARKit riconosce punti e superfici appartenenti all’ambiente circostante;
3.2. ANALISI DEI REQUISITI 19
∗ utilizzando queste informazioni e le differenze tra le immagini ottenute dalla fotocamera viene costruito un sistema di coordinate che riconosce la posizione e il movimento del dispositivo;
∗ utilizzando le superfici riconosciute è possibile posizionare contenuti virtuali all’interno del sistema di coordinate costruito.
Contesto d’utilizzo
Lo scopo di quest’applicazione è quello di poter confrontare modelli 3D appartenenti ad elettrodomestici con il mondo reale, al fine di simulare la loro presenza nell’ambiente.
Pertanto i principali utilizzatori sono utenti generici che desiderano poter utilizzare le seguenti funzionalità:
∗ possibilità di posizionare l’oggetto virtuale all’interno di uno spazio reale ricono-sciuto dall’applicazione;
∗ possibilità di spostare e ruotare l’oggetto virtuale;
∗ possibilità di selezionare tra diversi oggetti virtuali;
Tramite quest’analisi e quella appartenente al punto precedente, è stato individuato il principale flusso che l’applicazione deve seguire, insieme all’individuazione di diversi requisiti nonchè tecniche di posizionamento dell’oggetto virtuale.
Analisi di soluzioni esistenti
Alcune ore sono state dedicate all’analisi di applicazioni di terze parti presenti sul mercato appartenenti allo stesso dominio applicativo.
Particolare attenzione è stata posta alle tecniche utilizzate per descrivere all’utente le proprie funzionalità e le azioni da eseguire per usarle, al fine di aumentarne il grado di usabilità.
Quest’analisi ha portato all’inserimento delle seguenti funzionalità:
∗ visualizzazione di una serie di messaggi al primo avvio dell’applicazione atti a spiegare le varie funzionalità;
∗ inserimento di una schermata che ha lo scopo di spiegare la procedura da seguire per far riconoscere all’applicazione l’ambiente circostante;
∗ inserimento di messaggi d’errore che descrivano all’utente la presenza di particolari condizioni che impediscano all’applicazione il riconoscimento dell’ambiente.
3.2.2 Requisiti individuati
Grazie all’analisi del dominio applicativo, del contesto d’utilizzo e delle varie soluzio-ni esistenti, è stato possibile individuare le principali funzionalità che l’applicazione dovrà possedere. Partendo da queste è stata stilata la lista dei principali requisiti da soddisfare.
I requisiti, riportati nella seguente tabella, assumono la seguente forma:
Importanza Tipologia - Identificativo Descrizione Dove:
20 CAPITOLO 3. LO STAGE
∗ Importanza: denota il peso del requisito di riferimento e ne stabilisce una priorità. Assume i valori:
– O: Obbligatorio, il requisito deve essere soddisfatto per considerare il progetto completo;
– D: Desiderabile, se il requisito viene implementato porta valore aggiunto al progetto, ma non è strettamente necessario.
∗ Tipologia: indica la natura del requisito e assume i seguenti valori:
– F: Funzionale, rappresenta una funzionalità che il prodotto finale dovrà fornire, che sia essa espressa in forma generale a livello di sistema o espressa nel dettaglio delle componenti;
– V: Di vincolo, specifica un vincolo che il software deve rispettare;
∗ Identificativo: un numero, generato per incremento, che identifica il requisito in modo univoco se considerato assieme alla codifica della sua importanza e tipologia;
∗ Descrizione: una breve descrizione del requisito e dei suoi riferimenti.
Nella tabella3.1vengono riportati i requisiti principali individuati mentre in Figura 3.1è rappresentata la loro suddivisione per tipologia.
Codice identificativo Descrizione
OF-1 Riconoscimento di superfici nell’ambiente OF-2 Selezione di un oggetto 3D
OF-3 Posizionamento di un oggetto 3D
OF-4 Spostamento orizzontale di un oggetto 3D OF-5 Rotazione di un oggetto 3D
OF-6 Visualizzazione di messaggi d’aiuto che spieghino le funzioni dell’app OF-7 Visualizzazione di messaggi d’errori in caso di problemi di
riconoscimento dell’ambiente
OF-8 Visualizzazione di una schermata che spieghi come far riconoscere nuove superfici all’app
OF-9 Visualizzazione di messaggi d’aiuto che spieghino le funzioni dell’app OF-10 Visualizzazione lista oggetti 3D
OF-11 Visualizzazione lista colori oggetto 3D
OV-12 Sviluppo del front-end tramite Apache Cordova OV-13 Sviluppo del back-end tramite linguaggio nativo iOS OV-14 Ricezione dati appartenenti ai modelli 3D tramite JSON[g]
DF-15 Spostamento verticale di alcuni oggetti 3D
DF-16 Visualizzazione di effetti al riconoscimento di una superficie
DF-17 Scatto foto dell’oggetto 3D nell’ambiente con salvataggio e condivisione
Tabella 3.1: Requisiti principali individuati