Licenta Anghel Alexandru Bogdan Ism 2017 [310198]
PROIECT DE DIPLOMĂ
Alexandru Bogdan Anghel
COORDONATOR ȘTIINȚIFIC
Șef lucrări dr. Ing. Ionuț Cristian Resceanu
Iulie, 2017
CRAIOVA
APLICAȚIE MUZEU ÎN REALITATE AUGMENTATĂ
Alexandru Bogdan Anghel
COORDONATOR ȘTIINȚIFIC
Șef lucrări dr. Ing. Ionuț Cristian Resceanu
Iulie, 2017
CRAIOVA
„[anonimizat]. [anonimizat]”
[anonimizat]: [anonimizat], Calculatoare și Electronică a [anonimizat], [anonimizat]:
cu titlul APLICAȚIE MUZEU ÎN REALITATE AUGMENTATĂ
coordonată de Șef lucrări dr. Ing. Ionuț Cristian Resceanu
prezentată în sesiunea Iulie 2017
[anonimizat]:
reproducerea exactă a [anonimizat]-o [anonimizat]-o [anonimizat],
[anonimizat], [anonimizat] a unor aplicații realizate de alți autori fără menționarea corectă a [anonimizat] a [anonimizat].
Pentru evitarea acestor situații neplăcute se recomandă:
plasarea între ghilimele a citatelor directe și indicarea referinței într-o [anonimizat] a [anonimizat] a sursei originale de la care s-a [anonimizat] s-[anonimizat], figuri, imagini, statistici, [anonimizat], a căror paternitate este unanim cunoscută și acceptată.
Data, Semnătura candidat: [anonimizat],
PROIECTUL DE DIPLOMĂ
REFERATUL CONDUCĂTORULUI ȘTIINȚIFIC
În urma analizei lucrării candidat: [anonimizat]:
[anonimizat]:
Data, [anonimizat] a oferi vizitatorilor Muzeului de Artă Craiova o [anonimizat] a se bucura de facilitățile și exponatele puse la dispoziția lor de către muzeu. [anonimizat] a oferii atât detalii despre exponate cât și posibilitatea vizualizării unor monumente 3D direct pe dispozitivul mobil. Am pus accentul atât pe funcționalitate și compatibilitate cât și pe estetica aplicației pentru a oferi o experiență vizuală de înaltă calitate. Toate elementele grafice au fost realizate integral în Photoshop. Aplicația a [anonimizat] C# am folosit MonoDevelop ce vine integrat în Unity.
Aplicația cuprinde:
– 6 scene principale:
StartAplicație
Meniu
Contact
SelectareLimba
Camera AR_RO
SelectareModel
-5 scene secundare :
3D_Castel
3D_Stonehenge
3D_Templu
Camera AR_IT
Camera AR_FR
!!! O scenă reprezintă locul în care se pozitionează elementele(imagini,modele 3d, scripturi etc ) folosite de o aplicație sau un joc. O aplicație complexă poate să cuprindă zeci astfel de scene !!!
Scena StartAplicație
Este scena cu care pornește aplicația. Ea cuprinde o imagine de întâmpinare cu numele muzeului care apare si dispare la interval de 2.5 secunde.
Scena Meniu
Reprezintă scena centrală a aplicației. Din această putem să ajungem în 3 părți diferite ale aplicației : CameraAR , Contact și Muzeul Virtual.
Scena Contact
Această scenă cuprinde diferite detalii despre personalul Muzeului de Artă Craiova precum și 3 butoane de tip “Social Media” către Facebook,Instagram și Wikipedia. Mai regăsim și un buton ce cuprinde coordonatele GPS către locația muzeului.
Scena SelectareLimba
În această scenă ajungem prin intermediului butonului “Scanează” din meniul principal. Aici putem să selectăm limba în care vrem să folosim aplicația. ( Romana, Italiană , Franceză )
Scena Camera AR
Această scenă cuprinde 3 elemente esențiale : camera de realitate augmentată ( care o să caute imaginea definită ) , imaginea ținta ( este imaginea de referință a camerei ) și elementul grafic ( este modelul/poza care o să fie afișată deasupra imaginii țintă ) . De asemenea această scenă o să cuprindă trei variante diferite , în funcție de limba selectată.
Scena SelectareModel
Reprezintă scena ce ne oferă posibilitatea alegerii unuia dintre cele trei modele 3D pe care să le vizualizăm cu ajutorul camerei AR. (3D_Stonehenge, 3D_Castel , 3D_Templu ). Scena 3D_Stonehenge cuprinde de asemenea si o functie de restaurare al monumentului prin simpla apasare a butonului aflat în partea stanga a ecranului
Primul capitol al documentații cuprinde scopul cu care am realizat aceasta aplicație precum și motivația ce m-a împins să o realizez
Al doilea capitol cuprinde la rândul lui trei subcapitole: primul capitol cuprinde o scurtă prezentare a limbajului c# , precum și câteva avantaje ale acestuia față de alte limbaje de programare. Mai regăsim aici și detalii despre tipurile de date întâlnite în C#, structura unui program C#, și sintaxa limbajului.În partea a doua a acestui capitol întalnim de asemenea si informații despre motorul grafic Unity. Ultimul capitol al lucrării descrie pe scurt programul Photoshop și câteva unelte și pluginuri disponibile.
Cel de-al treilea capitol al lucrării cuprinde procesul de dezvoltare al aplicației. Aici putem observa cum sunt create elementele grafice în Photoshop și apoi importate în Unity precum și felul cum este aplicația realizată,configurată si construita intr-un pachet de tip Android (APK).
În capitolul patru este prezentată aplicația, descrierea scenelor ce o alcătuiesc cât și modul de funcționare al acestora.Tot aici am prezentat în detaliu fiecare funcționalitate a fiecarei scene în parte. Putem de asemenea să observăm și rezultatele obținute în urma unei scanări reușite.
Lucrarea se încheie prin prezentarea concluziilor care reiau o serie de idei din cuprinsul acesteia, concluzii care sunt confirmarea rezumatului și a temei tratate în lucrare.
Termenii cheie: C#,Unity,Photoshop,Android,MonoDevelop,Vuforia
MULȚUMIRI
Vreau să îi mulțumesc în primul rând domnului profesor Resceanu Ionuț pentru cunoștințele de C# dobândite în urma cursurilor sale precum și pentru sfaturile și ideile cu privire la aplicație.
De asemenea vreau să-i mulțumesc și domnului profesor Dan Andrițoiu pentru că mi-a creat curiozitatea de a mă interesa cum funcționează realitatea augmentată și cum aș putea să o folosesc în cadrul aplicației mele.
În ultimul rând vreau să le mulțumesc colegilor Oprean Alexandru și Răducanu Lucian pentru suportul și sfaturile oferite cu privire la Unity.
PROLOG
CUPRINSUL
Capitolul I – Introducerea 3
1.1 Scopul 3
1.2 Motivația 3
Capitolul II – Tehnologii folosite 4
2.1 Descrierea limbajului C# 4
2.1.1 Avantajele limbajului de programare C# față de limbajul Java 4
2.1.2 Avantajele limbajului de programare C# față de limbajul C++ 5
2.1.3 Structura unui program C# 5
2.1.4 Tipuri de date în C# 6
2.2 Descrierea motorului grafic Unity 7
2.2.1 Motorul grafic 8
2.2.2 Exemple de motoare grafice 9
2.2.3 Midleware 9
2.2.4 Vuforia 10
2.3 Descrierea Photoshop-ului 11
2.3.1 Plugin-uri/Addon-uri 12
2.3.2 Instrumente Photoshop 15
Capitolul III – Dezvoltarea 18
3.1 Schema aplicației 18
3.2 Dezvoltarea Grafică 20
3.2.1 Iconița Aplicației 20
3.2.2 Pagina de contact 21
3.2.3 Pagina meniului principal 22
3.2.4 Pagina de selectare a modelului 3D 24
3.2.5 Butoanele de acțiune 25
3.3 Importarea fișierelor grafice si a pachetului de date vuforia 26
3.4 Configurarea scenelor 28
3.4.1 Meniul principal 28
3.4.2 Pagina de contact 31
3.4.3 CameraAR 33
3.4.4 Scena model 3D 38
3.4.5 Componentele audio 40
3.4.6 Imaginea de intro 44
3.4.7 Setarea ancorelor 45
3.4.8 Construirea APK-ului 46
Capitolul IV – Prezentarea aplicației 48
4.1 Informații generale 48
4.2 Startul aplicației 48
4.3 Meniul principal 49
4.4 Meniul de selectare a limbii 49
4.5 CameraAR – Descriere tablou 50
4.6 Meniul de contact 53
4.7 Meniul de selectare a modelului 3D 54
4.8 CameraAR – Muzeul Virtual 54
5 Concluzii 58
6 Bibliografie 59
7 Referințe web 60
A. Codul sursă 61
B. CD / DVD 68
Index 69
LISTA FIGURILOR
Figura 1 – Cuvinte cheie regăsite în limbajul C# 6
Figura 2 – Logo-ul Unity 7
Figura 3 – Fereastra de lucru Unity 7
Figura 4 – Logo-ul Vuforia 10
Figura 5 – Logo-ul Photoshop 11
Figura 6 – AlphaPlugins Engraver III 12
Figura 7 – Alien Skin Eye Candy 5 : Impact 13
Figura 8 – Auto FX Gen1 Plugins 14
Figura 9 – Bara de instrumente 15
Figura 10 – Intstrumentul de selecție 16
Figura 11 – Instrumentul de forme 16
Figura 12 – Instrumentul de feliere 17
Figura 13 – Instrumentul de tăiere 17
Figura 14 – Schema meniului aplicaței 18
Figura 15 – Icon-ul aplicației 20
Figura 16 – Straturile Iconiței 21
Figura 17 – Pagina de contact 21
Figura 18 – Straturile paginii de contact 22
Figura 19 – Meniul principal 22
Figura 20 – Straturile paginii principale 23
Figura 21 – Pagina de selectare a modelului 3D 24
Figura 22 – Straturile paginii de selectare a modelului 3D 25
Figura 24 – Butonul de lanternă 25
Figura 23 – Butonul inapoi 25
Figura 25 – Butonul de autofocus 25
Figura 26 – Setari importare 26
Figura 27 – Crearea bazei de date 27
Figura 28 – Continutul bazei de date 27
Figura 29 – Canvasul (înainte) 28
Figura 30 – Canvasul(după) 29
Figura 31 – Atașarea scriptului 30
Figura 32 – Selectarea clasei și a funcției 30
Figura 33 – Selectarea clasei și a celor patru funcții 32
Figura 34 – Configurare Vuforia si activare baza de date 34
Figura 35 – Imaginea țintă configurată 34
Figura 36 – Imaginea tinta si descrierea tabloului 35
Figura 37 – Imagine instrucțiuni 38
Figura 38 – Configurare scena model 3D + buton restaurare 39
Figura 39 – Configurarea sunet butoane 41
Figura 40 – Configurare sunet detecțe țintă 42
Figura 41 – Creare sursă audio 43
Figura 42 – Setări sursă audio 43
Figura 43 – Ancorele setate pe butonul de autofocus 45
Figura 44 – Fereastra de construire 46
Figura 45 – Setari rezoluție si prezentare 47
Figura 46 – Setari iconiță 47
Figura 47 – Setari Identification 47
Figura 48 – Imaginea de intâmpinare 48
Figura 49 – Meniul principal 49
Figura 50 – Meniul de selectare a limbii 50
Figura 51 – Imagine informativă 50
Figura 52 – Țintă tablou 3 51
Figura 53 – Țintă tablou 2 51
Figura 54 – Țintă tablou 1 51
Figura 55 – Scanarea tabloului 1 în limba romană 51
Figura 56 – Scanarea tabloului 2 în limba italiană 52
Figura 57 – Scanarea tabloului 3 în limba franceză 52
Figura 58 – Meniul de contact 53
Figura 59 – Acțiune buton e-mail 53
Figura 60 – Acțiune buton apelare 53
Figura 61 – Meniul de selectare a modelului 3D 54
Figura 62 – Model Stonehenge original 55
Figura 63 – Model Stonehenge restaurat 55
Figura 64 – Model Templu 56
Figura 65 – Model Castel 56
Figura 66 – Imaginea țintă pentru modelele 3D 57
Capitolul I – Introducerea
Scopul
Scopul aplicației este de a ajuta muzeele să se adapteze la era digitală păstrându-și astfel patrimoniul de valori culturale dar în același adaptând noi tehnici de atracție a vizitatorilor și de educare a acestora cu ajutorul dispozitivului mobil.
Motivația
Totul a început de la o mică căutare pe internet. După ce am însușit câteva cunoștințe despre realitatea augmentată și cum funcționează mi-am propus să realizez aceasta aplicație. Deoarece nu am avut experiența în platformă Unity și programarea ce ține de Unity, mi-am dat seama că este o foarte bună oportunitate de a-mi însuși noi cunoștințe ce sigur îmi vor fi de folos pe viitor. Astfel, patru luni mai târziu, aplicația mea este 100% funcțională iar eu am dobândit o cantitate semnificativă de cunoștințe.
Capitolul II – Tehnologii folosite
Descrierea limbajului C#
Limbajul de programare C# este un limbaj de tip POO ( programare orientată pe obiecte ) simplu dar modern, el fiind conceptul de compania Microsoft în anii 90' . Limbajul C# a fost derivat din limbajul C++. Acesta a fost realizat cu scopul de a rivaliza cu limbajul Java.
Modernitatea limbajului C# cuprinde un suport de tip "Built In" care ajută la transformarea componetelor în serviciu web, astfel accesul realizandu-se mai ușor .
Simplitatea limbajului C# redată de absența pointerilor, de managementul automat al memoriei realizat de catre integrarea pe platforma .NET.
Portabilitatea: mai mult de 2 miliarde de dispozitive ruleaza cod C#, printre acestea se numara si dispozitive ce ruleaza soft precum iOS,Android,Windows,Linux. C# este de asemenea un limbaj de programare mobil, ce se gaseste în diferite domenii : telefonia mobila, Servere si Desktopuri, Embeded.
În cadrul unei aplicații Windows, formularele sunt elementele de bază ale interfeței cu utilizatorul. În C# formularele sunt complet orientate pe obiecte, ele reprezentând de fapt clase.
Avantajele limbajului de programare C# față de limbajul Java
Limbajul C# prezintă în componența sa o serie de avantaje față de limbajul Java:
C# are constructori proprii care sunt destul de ușor de folosit ( Events, Propierties );
Java 7 v-a suporta expresia “using”;
Vine deja integrat în Windows;
Variabilele sunt dinamice;
Avantajele limbajului de programare C# față de limbajul C++
Limbajul C# prezintă în componența sa o serie de avantaje față de limbajul C++:
Prezintă o bibliotecă standard impresionantă cu lucruri bine realizate și ușor de utilizat;
Clasele și metodele pot fi setate să fie interne în ansamblul în care sunt declarate;
Limbajul C# permite folosirea blocurilor de cod cât și a blocurilor native
Permite tratarea semnăturilor de clasă-metode ca funcții libere și creează astfel relații mai dinamice și flexibile între clase;
Codul C# este compilat în Intermediate Language în comparatie cu C++ care este compilat în asembly
Structura unui program C#
Cel mai cunoscut editor de cod C# il constituie Visual Studio. Acesta ofera un set larg de obiecte si instrumente folosite la crearea ,editarea si repararea codului. Insa programul folosit personal o sa fie MonoDevelop deoarece este integrat în platforma Unity.
Exemplu de program C#:
1 using System;
2
3 {
4 class Salut
5 {
6 static void Main()
7 {
8 Console.WriteLine (“Hello World!”);
9 }
10 }
11 }
Descrierea programului:
Linia 1: Este o librarie care specifică faptul că se vor folosi clase incluse în spațiul de nume System. În acest caz se va folosi clasa “Console”.
Linia 4: clasa programului C#
Linia 6: metoda Main, „punctul de intrare” în program.
Linia 8: avem clasă Console, care este folosită în cazul operațiilor de tip intrare/ieșire.Tot aici se observa metoda WriteLine care are ca scop afișarea unui mesaj pe ecran.
Tipuri de date în C#
In cadrul limbajului C# intâlnim mai multe tipuri de date:
Date de tip valoare:
Simple: int, float, char;
Structură : struct;
Enumerare: enum;
Date de tip referință:
Clasă: class;
Interfață: interface;
Delegate: delegate;
Tablou: array;
Descrierea motorului grafic Unity
Unity este un motor grafic de tip platformă multiplă dezvoltat de către compania Unity Technologies. Acesta este folosit în crearea și dezvoltarea de jocuri video, simulări pentru calculatoarea, console de jocuri și device-uri mobile. Acesta a fost prima dată anunțat în 2005 doar pentru platformă OS X, ajungând mai târziu să fie exportat pe 27 de platforme diferite.
Printre limbajele de programare folosite în dezvoltarea sa se enumeră: C, C++ și C#. De la data sa de lansare, 6 variante ale aplicației au fost lansate publicului, aceste variante sunt enumerate de la 1-6, ultima fiind în stadiul beta.
Figura 3 – Fereastra de lucru Unity
Motorul grafic
Un motor grafic este un sistem conceput pentru crearea și dezvoltarea de jocuri video. Pe piață se regăsesc numeroase astfel de motoare grafice. Acestea sunt concepute pentru a funcționa pe console de jocuri video, calculatoare personale dar și pe dispozitivele mobile.
Componentele unui motor grafic sunt urmatoarele:
Motor de randare ( 2D sau 3D );
Motor de detecție al coliziunii ( motor de fizică);
Motor audio ;
Motor de inteligență artificială;
Motor de randare
În loc să fie programate și compilate pentru a fi executate direct pe CPU sau GPU, motoarele de randare cel mai adesea sunt construite pe una sau mai multe interfețe de programare a aplicațiilor (API), cum ar fi Direct3D sau OpenGL, care oferă o abstractizare software a unității de procesare grafică GPU).
Motoarele de jocuri pot fi scrise în orice limbaj de programare, cum ar fi C ++, C sau Java, deși fiecare limbaj este diferit din punct de vedere structural și poate oferi diferite nivele de acces la anumite funcții.
Motor de detecție al coliziunii
Motorul fizic(de detecție al coliziunii) este responsabil pentru simularea legilor fizicii în mod realist în cadrul aplicației.Acesta este folosit pentru a calcula si simula interactiunea dintre doua corpuri din cadrul aplicatiei.
Motor audio
Motorul audio este componenta ce are ca rol rezolvarea algoritmilor ce țin de sunet. Procesarea calculelor se poate face atât pe un CPU cât și pe un ASIC dedicat.
Motor de inteligență artificială
Motorul de inteligență artificială este realizată de programatori cu cunoștințe speciale de programare. Ei se ocupa cu programarea elementelor ce interacționează cu diferite surse, și luarea de decizii pe baza unor algoritmi specifici.
Exemple de motoare grafice
Motoarele grafice au început să apară pe piață la începutul anilor 80. Acestea se grupează pe diferite categorii, în funcție de funcționalitate, grafică, implementări.
Cele mai populare exemple în acest sens sunt:
Unity Engine (ex: Gears of War, Batman: Arkham Asylum, Mass Effect )
Unreal Engine (ex: Lara Croft: Relic run, Hitman: Sniper, Unreal Tournament )
CryEngine 3 (ex: Crysis, Far Cry, Sniper: Ghost, Civilization Online)
Hero Engine (ex: Star Wars: The Old Republic )
Rage Engine (ex: Grand Theft Auto: Vice City )
Midleware
În sensul mai larg al termenului, motoarele de jocuri pot fi descrise ca middleware. În contextul jocurilor video, totuși, termenul "middleware" este adesea folosit pentru a se referi la subsistemele de funcționalitate ale unui motor de joc. Unele middleware pentru jocuri au un singur lucru, dar o fac mai convingător sau mai eficient decât middleware-ul de uz general. Spre exemplu, pentru a crea copaci cât mai realiști într-un anumit joc/aplicație, se poate folosi SpeedTree, sau putem folosi ForkParticle pentru o mai bună simulare în timp real a particulelor.
Pe măsură ce tehnologia motorului grafic se maturizează și devine mai ușor de utilizat, domeniul de aplicarea al motoarelor de jocuri a fost extinsă. Acestea sunt acum folosite pentru „jocuri” serioase: aplicații de vizualizare, instruire, medicale și simulare militară, CryEngine fiind un exemplu . Pentru a facilita această accesibilitate, noile platforme hardware sunt în prezent vizate de motoarele de jocuri, inclusiv telefoanele mobile (de exemplu, telefoanele Android,Windows, iPhone) și browserele web (de exemplu, Shockwave, Flash).
Vuforia
Vuforia este un kit de dezvoltare software pentru realitate augmentat (SDK) destinat dispozitivelor mobile care permite crearea de aplicații de tip Augmented Reality.Utilizează tehnologia Computer Vision pentru recunoașterea și urmărirea imaginilor plane (Imagine țintă) și obiecte 3D simple, cum ar fi cutii, în timp real. Această capacitate de înregistrare a imaginilor permite dezvoltatorilor să poziționeze și să orienteze obiecte virtuale, cum ar fi modele 3D și alte suporturi media, în legătură cu imaginile din lumea reală. Obiectul virtual urmărește apoi poziția și orientarea imaginii în timp real, astfel încât perspectiva spectatorului asupra obiectului să corespundă perspectivelor acestora asupra imaginii țintă astfel încât să creeze iluzia că obiectul virtual face parte din scena lumii reale.
SDK-ul Vuforia suportă o varietate de tipuri de referinte 2D și 3D, printre care se numără "Target-uri de imagine fără marcatori", configurații 3D de tip țintă multipla și o formă de marker Fiduciar adresabil, cunoscut sub denumirea de Marker de cadre. Caracteristicile suplimentare ale SDK includ detectarea ocluziei localizată folosind "Butoane virtuale", selectarea țintă a imaginii în timpul rulării și capacitatea de a crea și reconfigura seturile țintă programabil în timpul rulării.
SDK-ul suportă atât dezvoltarea nativă pentru iOS și Android, cât și dezvoltarea de aplicații AR în Unity, care sunt ușor de portabil la ambele platforme. Aplicațiile AR dezvoltate utilizând Vuforia sunt, prin urmare, compatibile cu o gamă largă de dispozitive mobile, inclusiv telefoanele și tabletele iPhone, iPad și Android, care rulează Android OS versiunea 2.2 sau o versiune superioară și un procesor ARMv6 sau v7 cu capabilități de procesare FPU (Floating Point Unit).
Descrierea Photoshop-ului
Adobe Photoshop este un software realizat de către frații Thomas și John Knoll în februarie 1990 cu scopul de editare și corectare a imaginilor digitale pe computer. Acest software a fost produs și distribuit de compania Adobe Systems și este categorizat ca fiind un program destinat profesioniștilor.
Schema de numire a lui Photoshop a fost inițial bazată pe numărul versiunii. Cu toate acestea, în octombrie 2002, după introducerea mărcii Creative Suite, fiecare nouă versiune Photoshop a fost desemnată cu "CS" plus un număr; Cea de-a opta versiune majoră a Photoshop-ului a fost Photoshop CS, iar noua versiune majoră a fost Photoshop CS2. Photoshop CS3 prin CS6 au fost de asemenea distribuite în două ediții diferite: Standard și Extended. În iunie 2013, odată cu introducerea branding-ului Creative Cloud, schema de licențiere a Photoshop-ului a fost schimbată cu cea a software-ului ca model de închiriere de servicii, iar sufixele "CS" au fost înlocuite cu "CC". Din punct de vedere istoric, Photoshop a fost asociat cu programe suplimentare precum Adobe ImageReady, Adobe Fireworks și Adobe Camera RAW.
Alături de Photoshop, Adobe a dezvoltat și publicat și Photoshop Elements, Photoshop Lightroom, Photoshop Express și Photoshop Touch. În mod colectiv, acestea sunt denumite "Familia Adobe Photoshop". În prezent, este un software licențiat.
Plugin-uri/Addon-uri
Plugin-urile Photoshop sunt programe adiționale menite să ofere efecte suplimentare de imagine sau să îndeplinească sarcini care sunt imposibile sau greu de îndeplinit utilizând numai Adobe Photoshop. Pluginurile pot fi deschise din Photoshop și din mai multe programe de editare a imaginilor (compatibile cu specificațiile Adobe) și se comportă ca niște mini-editoare care modifică imaginile.
Cateva exemple cunoscute de plugin-uri:
AlphaPlugins Engraver III
AlphaPlugins pluginul EngraverIII pentru Photoshop CS2-CC2017 vă permite să transformați orice imagine într-o impresionantă gravură în stil vechi cu doar câteva clicuri de mouse.
Alien Skin Eye Candy 5 : Impact
Eye Candy 5: Impact este o colecție de zece filtre Photoshop care creează efecte cum ar fi crom, metal periat, sticlă, teșituri, umbre și reflexii. De exemplu, Metal Brushed este destinat să simuleze suprafețe metalice texturate, cum ar fi aluminiul periat și alamatul lustruit; Super Star generează o varietate de forme, inclusiv stele, flori și unelte; Iar de fundal proiectează un fascicul de lumină și efecte de lumină reflectoare din spatele unei selecții. Majoritatea efectelor pot fi aplicate unui strat separat, oferind utilizatorilor controlul asupra efectului într-o manieră nedistructivă în cadrul aplicației gazdă.
Auto FX Gen1 Plugins
Pluginurile Photoshop de la Software-ul Auto FX exista încă din anii 94' și oferă artistului digital o multitudine de instrumente creative de îmbunătățire a imaginii vizuale. De la efectele atmosferice realiste cum ar fi fulgerul, zăpada, ploaia, ceață și ceața până la efecte creative, care transformă fotografiile în puzzle-uri, creează iluminare și umbre, reglează focalizarea sau adaugă granițe stilizate la sute de fundaluri și texturi noi de înaltă rezoluție. Presetările incluse facilitează aplicarea setărilor de efecte gata făcute cu un singur click.
.
Instrumente Photoshop
La pornirea Photoshop-ului, în partea stângă a ecranului apare o bară laterală cu o varietate de instrumente cu mai multe funcții de editare a imaginilor. Aceste instrumente se încadrează în mod obișnuit în categoriile de desen, pictură, măsurare și navigare, selecție, text, retușarea. Unele instrumente conțin un triunghi mic în colțul din dreapta jos al pictogramei de instrumente. Acestea pot fi extinse pentru a descoperi instrumente similare. În timp ce versiunile mai noi ale Photoshop sunt actualizate pentru a include noi instrumente și funcții, mai multe instrumente recurente care există în cele mai multe versiuni sunt prezentate mai jos:
Instrumentul de selecție (selection tool)
Instrumentele de selecție sunt utilizate pentru a selecta în întregime sau parțial orice parte a unei imagini pentru a efectua operații de tăiere, copiere, editare sau retușare.
Instrumentul de forme (shape tool)
Photoshop oferă o gamă de instrumente de formă, inclusiv dreptunghiuri, dreptunghiuri rotunjite, elipse, poligoane și linii. Aceste forme pot fi manipulate de instrumentul stilou, instrument de selecție directă etc. pentru a face grafică vectorială.
Instrumentul de feliere (slice tool)
Uneltele de tip feliere și feliere selectivă, cum ar fi instrumentul tăiere, sunt utilizate pentru izolarea unor părți ale imaginilor. Instrumentul de slice poate fi folosit pentru a împărți o imagine în diferite secțiuni, iar aceste părți separate pot fi folosite că piese ale unui design al paginii web odată ce sunt aplicate HTML și CSS. Instrumentul de tăiere selectivă permite secțiunilor tăiate din imagine să fie reglate și deplasate.
Instrumentul de taiere (crop tool)
Instrumentul de tăiere poate fi utilizat pentru a selecta o anumită zonă a imaginii și pentru a elimina porțiunile din afara secțiunii alese. Acest instrument ajută la crearea unui punct de focalizare asupra unei imagini și a spațiului inutil sau în exces. Decuparea permite îmbunătățirea compoziției unei fotografii în timp ce reduce dimensiunea fișierului. Instrumentul "taiere" se află în paleta de unelte, care se află în partea dreaptă a documentului. Plasând cursorul peste imagine, utilizatorul poate glisa cursorul în zona dorită. Odată ce tasta Enter este apăsată, zona din afara dreptunghiului va fi tăiată.
Capitolul III – Dezvoltarea
Schema aplicației
Primul pas al dezvoltării aplicației este de generare a schemei meniului pentru a observa totalitatea scenelor necesare pentru întregul conținut .
Putem observa din schema de mai sus faptul că aplicația o să cuprindă următoarele scene:
– 6 scene principale:
StartAplicație
Meniu
Contact
SelectareLimba
Camera AR_RO
SelectareModel
– 5 scene secundare :
3D_Castel
3D_Stonehenge
3D_Templu
Camera AR_It
Camera AR_Fr
Scena StartAplicație
Este scena cu care pornește aplicația. Ea cuprinde o imagine de întâmpinare cu numele muzeului care apare si dispare la interval de 2.5 secunde.
Scena Meniu
Reprezintă scena centrală a aplicației. Din această putem să ajungem în 3 părți diferite ale aplicației : CameraAR, Contact și Muzeul Virtual.
Scena Contact
Această scenă cuprinde diferite detalii despre personalul Muzeului de Artă Craiova precum și 3 butoane de tip “Social Media” către Facebook,Instagram și Wikipedia. Mai regăsim și un buton ce cuprinde coordonatele GPS către locația muzeului.
Scena SelectareLimbă
În această scenă ajungem prin intermediului butonului “Scanează” din meniul principal. Aici putem să selectăm limba în care vrem să folosim aplicația. ( Romana, Italiană, Franceză )
Scena Camera AR
Această scenă cuprinde 3 elemente esențiale : camera de realitate augmentată ( care o să caute imaginea definită ), imaginea ținta ( este imaginea de referință a camerei ) și elementul grafic ( este modelul/poza care o să fie afișată deasupra imaginii țintă ) . De asemenea această scenă o să cuprindă trei variante diferite , în funcție de limba selectată.
Scena SelectareModel
Reprezintă scena ce ne oferă posibilitatea alegerii unuia dintre cele trei modele 3D pe care să le vizualizăm cu ajutorul camerei AR. (3D_Stonehenge, 3D_Castel, 3D_Templu ). Scena 3D_Stonehenge cuprinde de asemenea si o functie de restaurare al monumentului prin simpla apasare a butonului aflat în partea stanga a ecranului
Dezvoltarea Grafică
Aceasta este etapa în care se crează elementele grafice ale aplicației. Acestea diferă de la o scenă la alta deoarece este necesar ca fiecare scenă să aibă un stil propriu în funcție de scopul si funcționalitatea ei.
Iconița Aplicației
Aceasta a fost realizată folosind următoarele componente( straturi ):
doua componente de tip text: “AR” și “guide”
Opțiuni folosite: TextTool, Text Warp, Transform și Blending Options > ColorOverlay
patru componente de tip strat folosite la design-ul interior al logo-ului
Opțiuni folosite: PenTool, ShapeTool>Circle și Blending Options > ColorOverlay
trei componente de tip strat folosite la design-ul exterior al logo-ului
Opțiuni folosite: ShapeTool>Rectangle și Blending Options > ColorOverlay
Figura 16 – Straturile Iconiței
Pagina de contact
Figura 17 – Pagina de contact
Aceasta a fost realizată folosind următoarele componente:
optsprezece componente de tip Text (paisprezece în partea stângă și patru în partea dreaptă);
Opțiuni folosite: TextTool, Transform și Blending Options > ColorOverlay
doua componente de tip strat folosite la design-ul fundalului;
Opțiuni folosite: ShapeTool>Rectangle și Blending Options > ColorOverlay
treisprezece componente de tip linie pentru a crea diferitele delimitări ale paginii;
Opțiuni folosite: ShapeTool>Line și Blending Options > ColorOverlay
Figura 18 – Straturile paginii de contact
Pagina meniului principal
Aceasta a fost realizată folosind următoarele componente:
cinci componente de tip Text (doua pentru titlu si trei pentru butoane);
Opțiuni folosite: TextTool, Transform și Blending Options > ColorOverlay, BevelAndEmboss, Stroke, DropShadow, GradientOverlay;
trei componente de tip strat folosite la design-ul fundalului;
Opțiuni folosite: Layer Contrast\Luminozitate
două componente de tip forma pentru a crea panoul din jurul titlului
Opțiuni folosite: ShapeTool>Line și Blending Options > ColorOverlay
trei componente de tip forma pentru a crea butoanele
Opțiuni folosite: ShapeTool>Rectangle, Blending Options > ColorOverlay, GradientOverlay, Stroke, BevelAndEmboss
Butoanele au fost exportate separat pentru a putea fi folosite în mod independent în Unity !
Figura 20 – Straturile paginii principale
Pagina de selectare a modelului 3D
Figura 21 – Pagina de selectare a modelului 3D
Aceasta a fost realizată folosind următoarele componente:
patru componente de tip Text (unul pentru titlu si trei pentru butoane);
Opțiuni folosite: TextTool, Transform și Blending Options > ColorOverlay, BevelAndEmboss, Stroke, DropShadow, GradientOverlay;
o componente de tip strat folosite la design-ul fundalului;
Opțiuni folosite: Layer Contrast\Luminozitate
trei componente de tip shape pentru a crea liniile dintre imagine si buton
Opțiuni folosite: ShapeTool>Line și Blending Options > ColorOverlay, Stroke
trei componente de tip shape pentru a crea butoanele
Opțiuni folosite: ShapeTool>Rectangle, Blending Options > ColorOverlay, GradientOverlay, Stroke, BevelAndEmboss
Figura 22 – Straturile paginii de selectare a modelului 3D
Butoanele de acțiune
Aceasta a fost realizată folosind următoarele componente:
trei componente de tip shape pentru butoane;
Opțiuni folosite:, Transform și Blending Options > ColorOverlay, BevelAndEmboss, Stroke
trei componente de tip strat folosite la design-ul butonului;
Opțiuni folosite: Blending Options > ColorOverlay
Importarea fișierelor grafice si a pachetului de date vuforia
Importul acestor fișiere se face cu un simplu drag an drop în meniul de resurse . Pentru a fi folosite pe post de imagine în cadrul butoanelor sau al fundalului, sunt necesare câteva modificări în fereastra de setări import:
Texture Type > Sprite (2D and UI)
De asemenea, pentru a spori calitatea imaginii se folosește următoarea setare:
Format > Truecolor
Pasul următor constituie din importarea SDK-ului vuforia care se descarcă după site-ul producătorului. Se dă dublu click pe packet și se selectează opțiunea "All" și apoi butonul "Import". Apoi se intra pe https://developer.vuforia.com/, se creaza un cont nou de logare si se intra la sectiunea Develop.
De aici se creaza o noua baza de date care o sa contina imaginile tinta ale aplicatiei:
Figura 27 – Crearea bazei de date
Următorul pas constă în încărcarea fișierelor tinta selectând tipul acesteia apoi adăugând numele, mărimea și destinația acesteia. După încărcarea fișierelor, acestea vor fi verificate de către website și li se v-a acorda o notă de la 1-5, în funcție de calitatea lor.
Figura 28 – Continutul bazei de date
După ce s-a creat și populat baza de date, se descarcă folosind butonul “Download Database(All)”, se deschide și se importa exact ca în cazul SDK-ului.
Configurarea scenelor
După ce s-a realizat importarea resurselor și configurarea lor pentru a fi utilizate că imagini/sunete/scripturi, se începe aranjarea lor în scenă si configurarea legaturilor dintre elemente.
Meniul principal
Primul pas în realizarea meniului principal este de creare și ajustare a canvasului, ce reprezintă interfața aplicației. Pentru crearea acestuia se selectează scena dorită, apoi în partea stângă (meniul de componente ale scenei), se dă click dreapta și se selectează UI > Canvas .Acest pas se repetă și în cazul butoanelor, folosind UI > Button. Următorul pas îl reprezintă crearea fundalului meniului folosind UI > Image. Rezultatul o să fie următorul:
Figura 29 – Canvasul (înainte)
Următorul pas este de a înlocui imaginile standard din fundalul și butoanele create cu imaginile realizate anterior în Photoshop. Acest pas se realizează selectând elementul dorit apoi cu drag în drop îl punem în secțiunea Source Image. Acest pas se repeta pentru toate elementele dorite.
În pasul următor se modifica poziția elementelor folosind marcatorii sau prin intermediul parametrilor Pos X și Pos Y (poziția pe verticală și orizontală). De asemenea se modifică și lățimea și înălțimea elementelor folosind parametrii Width și Heigh.Rezultatul o să fie următorul:
Figura 30 – Canvasul(după)
Ca butoanele să funcționeze ca un schimbător de scena se atașează următorul script unei componente din scenă sau unui obiect de tip GameObject gol:
using UnityEngine;
using System.Collections;
using UnityEngine.UI;
using UnityEngine.SceneManagement;
public class SchimbareScena : MonoBehaviour
{
public void SeteazaScena(string numeScena)
{
UnityEngine.SceneManagement.SceneManager.LoadScene (numeScena);
}
}
Scriptul definește o clasă publică numită SchimbareScena și apoi o funcție numită SeteazaScena cu un parametru de tip strâng denumit numeScena. Funcția definită mai sus include la rândul ei clasa standard de schimbare a scenei din Unity.
Dupa ce s-a atasat scriptul unui element, se selecteaza butonul respectiv, si folosind drag&drop se pune elementul ce contine scriptul în casuta None (object) din fereastra OnClick ().
Figura 31 – Atașarea scriptului
Următorul pas constă în selectarea butonului No Function și selectarea opțiunilor : SchimbareScena(clasa definită în script) și apoi selectarea opțiunii SeteazaScena (funcția definită în script). Ultimul pas îl constă în introducerea numelui scenei ce v-a fi deschisă în urma apăsării butonului în căsuța de text.
Figura 32 – Selectarea clasei și a funcției
! Acești pași se urmează și pentru configurarea scenelor SelectareLimba si SelectareModel !
Pagina de contact
In ceea ce priveste aranjarea si modificarea elementelor în scena, crearea paginii de contact este asemanatoare cu cea a meniului principal. Aceasta scena cuprinde 3 butoane de tip SocialMedia, unul pentru coordonate GPS si un buton “Inapoi” .Pentru butonul de back se foloseste scriptul de schimbare de scena folosit anterior.
Scriptul pentru butoanele de Social Media si gps este urmatorul:
using UnityEngine;
using System.Collections;
using Vuforia;
public class SocialMedia : MonoBehaviour {
private bool mFlashEnabled = false;
public void facebook(){
Application.OpenURL ("https://www.facebook.com/muzeuldearta.craiova/");
}
public void instagram(){
Application.OpenURL ("https://www.instagram.com/explore/locations/831950107/");
}
public void wikipedia(){
Application.OpenURL ("https://ro.wikipedia.org/wiki/Muzeul_de_Art%C4%83_din_Craiova");
}
public void GPS(){
Application.OpenURL ("https://www.google.ro/maps/place/Muzeul+de+Art%C4%83/@44.3191793,23.7950188,15z/data=!4m5!3m4!1s0x0:0xcdb638d9fdf576bf!8m2!3d44.3191793!4d23.7950188");
}
}
Acest script definește o clasă numit SocialMedia și 4 funcții ce conțin fiecare clasă de deschidere al unui URL . Cele 3 funcții social media ( facebook,instagram,wikipedia) sunt deschise în browser-ul nativ al telefonului iar funcția GPS deschide aplicația nativă de navigare a telefonului.
Figura 33 – Selectarea clasei și a celor patru funcții
Pentru butoanele de apelare si e-mail se folosesc scripturile urmatoare:
Apel.cs
using UnityEngine;
using System.Collections;
public class Apel : MonoBehaviour {
public void Apelare ()
{
Application.OpenURL ("tel://0251412342");
}
}
Email.cs
using UnityEngine;
using System.Collections;
public class Email : MonoBehaviour {
public void Mail()
{
string cod =
"mailto:muzeuartacv@gmail.com?subject=Merita aceasta licență o notă bună?”
Application.OpenURL(cod);
}
}
CameraAR
Următor pas al dezvoltării aplicației îl reprezintă folosirea SDK-ul Vuforia importat anterior. Pentru acest pas o să folosim două elementele prefabricate(prefabs) găsite în SDK: CameraAR și ImageTarget.
După ce am dat drag and drop la cele două elemente în scenă, se selectează CameraAR și apoi opțiunea “Open Vuforia Configuration” unde se completează câmpul “App licence key” cu licență obținută de pe site-ul developerului, și se bifează cele două opțiuni de la Datasets : LoadLicence Database și Activate.Aceste opțiuni ne v-a da posibilitatea să folosim pozele din baza de data creată și descărcată de pe site-ul Vuforia.
Figura 34 – Configurare Vuforia si activare baza de date
Dupa ce s-a configurat camera, trebuie sa configuram si imaginea tinta (ImageTarget) selecatand-o si apoi alegand baza de date din campul “Database”(reprezinta baza de data creata pe site-ul developerului) si unul dintre pozele incarcate în baza de date din campul “ImageTarget”, în cazul acesta Tablou1. Rezultatul v-a fi urmatorul:
Figura 35 – Imaginea țintă configurată
Urmatorul pas il constă în crearea unei componente de tip sprite ( 2D Object > Sprite ), să adăugăm poza realizată în Photoshop cu descrierea tabloului 1 în limba romana, și să fixăm aceasta componente fix deasupra imaginei ținta . Rezultatul v-a fi următorul :
Figura 36 – Imaginea tinta si descrierea tabloului
După ce s-au configurat și celelalte două tablouri urmează configurarea și aranjarea canvasului. Se crează trei butoane care se așează unul lângă altul în canvas. Pentru butonul de back folosim scriptul ce cuprinde clasa de schimbare a scenei(SchimbareScena.cs). Iar pentru celelalte două butoane se vor folosi următoarele scripturi :
Pentru lanterna:
using UnityEngine;
using System.Collections;
using Vuforia;
public class Lanterna : MonoBehaviour {
private bool mFlashEnabled = false;
public void Lanterna2 ()
{
{
if (!mFlashEnabled) {
// Se aprinde lanterna daca aceasta este oprita
CameraDevice.Instance.SetFlashTorchMode (true);
mFlashEnabled = true;
} else {
// Se stinge lanterna daca aceasta este pornita
CameraDevice.Instance.SetFlashTorchMode (false);
mFlashEnabled = false;
}
}
}
}
Acest script accesează blițul camerei și îl activează în caz că-i dezactivat și vice versa.
Pentru autofocus:
using UnityEngine;
using System.Collections;
using Vuforia;
public class Autofocus : MonoBehaviour {
public void focus ()
{
bool focusModeSet = CameraDevice.Instance.SetFocusMode (
CameraDevice.FocusMode.FOCUS_MODE_CONTINUOUSAUTO);
if (!focusModeSet) {
Debug.Log ("Eroare: dispozitiv necompatibil!).");
}
}
}
Acest script setează camera dispozitivului mobil pe modul autofocus.
Cele doua scripturi sunt atasate unui obiect de tip gameobject gol sau oricarui element din scenă si apoi atașate butoanelor.
Ultima componenta care trebuie configurată este imaginea ce apare la inceputul scenei . Astfel cream o noua imagine în canvas si creăm un gameobject nou căruia ii atașăm urmatorul script :
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.SceneManagement;
using System.Collections;
public class Incarcare_Scan : MonoBehaviour
{
public Image splashImage;
public string loadLevel;
IEnumerator Start()
{
splashImage.canvasRenderer.SetAlpha(0.0f);
FadeIn();
yield return new WaitForSeconds(2.5f);
FadeOut();
yield return new WaitForSeconds(2.5f);
UnityEngine.SceneManagement.SceneManager.LoadScene(loadLevel);
}
void FadeIn()
{
splashImage.CrossFadeAlpha(5.0f, 0.0f, false);
}
void FadeOut()
{
splashImage.CrossFadeAlpha(0.0f, 2.5f, false);
splashImage.enabled = false;
}
}
Acest script se folosește de caracteristica Alpha a unei imagini, astfel aceasta apare la începutul executării scenei și dispare după un număr prestabilit de secunde. La finalul scriptului se dezactivează imaginea pentru a avea acces asupra butoanelor.
Figura 37 – Imagine instrucțiuni
! Acești pași se urmează și pentru configurarea scenelor CameraAR_FR și CameraAR_IT !
Scena model 3D
Realizarea acestei scene este identică cu cea a CamereiAR cu mici adiții. După adăugarea butoanelor și imaginii țintă, se adăugă cele două modele 3D ale Stonehenge-ului (o versiune originală și una restaurată) și se suprapun . Se mai crează de asemenea un buton adițional numit Restaurare . Scopul acestuia v-a fi de a alterna cele două modele.
Figura 38 – Configurare scena model 3D + buton restaurare
Scriptul atașat butonului de restaurare:
using UnityEngine;
using System.Collections;
using UnityEngine.UI;
public class Restaurare : MonoBehaviour {
public GameObject Original;
public GameObject Restaurat;
public bool isActive = true ;
public Button buton;
private void Start (){
Restaurat.SetActive (false);
Button btn = buton.GetComponent<Button> ();
buton.onClick.AddListener (Change);
}
public void Change(){
if (isActive == true) {
Original.SetActive (false);
Debug.Log ("Conditia true");
Restaurat.SetActive (true);
isActive = false;
} else {
Original.SetActive (true);
Debug.Log ("Conditia false");
Restaurat.SetActive (false);
isActive = true;
}
}
}
Acesta ne v-a permite să activăm și să dezactivăm alternativ cele două modele 3D. Aplicatia se deschide cu modelul original prestabilit, la apasarea butonului se afiseaza modelul restaurat.
Componentele audio
Sunet butoane
Pentru a configura ca atunci cand se apasa un buton sa se auda sunetul specific de “click” se v-a folosi urmatorul script :
using UnityEngine;
using System.Collections;
using UnityEngine.UI;
[RequireComponent(typeof(Button))]
public class SunetClick : MonoBehaviour
{
public AudioClip sound;
private Button button { get { return GetComponent<Button>(); } }
private AudioSource source { get { return GetComponent<AudioSource>(); } }
void Start ()
{
gameObject.AddComponent<AudioSource>();
source.clip = sound;
source.playOnAwake = false;
button.onClick.AddListener(() => PlaySunet());
}
void PlaySunet ()
{
source.PlayOneShot (sound);
}
}
Acesta v-a fi atașat fiecărui buton în parte și apoi se va da drag and drop în câmpul “Sound” a sunetului de format .WAV. Rezultatul v-a fi redarea sunetului configurat mai sus la fiecare apăsare a butoanelor.
Figura 39 – Configurarea sunet butoane
Sunet detectare țintă
Vom folosi următorul script pentru a reda un sunet odată ce imaginea ținta este detectată cu succes:
using UnityEngine;
using System.Collections;
using Vuforia;
public class SunetSucces : MonoBehaviour, ITrackableEventHandler
{
private TrackableBehaviour mTrackableBehaviour;
void Start()
{
mTrackableBehaviour = GetComponent<TrackableBehaviour>();
if (mTrackableBehaviour)
{
mTrackableBehaviour.RegisterTrackableEventHandler(this);
}
}
public void OnTrackableStateChanged(
TrackableBehaviour.Status previousStatus,
TrackableBehaviour.Status newStatus)
{
if (newStatus == TrackableBehaviour.Status.DETECTED ||
newStatus == TrackableBehaviour.Status.TRACKED ||
newStatus == TrackableBehaviour.Status.EXTENDED_TRACKED)
{
// Pornire sunet la gasirea tintei
GetComponent<AudioSource>().Play();
}
else
{
// Oprire sunet la pierderea tintei
GetComponent<AudioSource>().Stop();
}
}
}
Scriptul se v-a atasa imaginii tinta sau a camerei si se v-a dat drag an drop la un sunt de tip .wav sau mp3 în sectiunea AudioSource.
Sunet imagine informativă
Pentru a seta sunetul ce se reda odată cu selectarea limbii ce reda forma vocală a textului se crează o componentă nouă de tip AudioSource(sursă audio). Se dă click dreapta în conținutul scenei și se aleg opțiunile Audio > Audio Source.
Figura 41 – Creare sursă audio
Odată creat elementul de tip sursa audio, se dă drag and drop la sunetul cu extensia .wav sau orice alt tip de sunet compatibil, și se bifează opțiunea Play on Awake. Această opțiune v-a începe redarea sunetului odată cu deschiderea scenei.
Figura 42 – Setări sursă audio
Imaginea introductivă
Pentru imaginea de intro se foloseste o imagine realizata în Photoshop, un gameobject gol si scriptul urmator:
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.SceneManagement;
using System.Collections;
public class Incarcare : MonoBehaviour
{
public Image splashImage;
public string loadLevel;
IEnumerator Start()
{
splashImage.canvasRenderer.SetAlpha(0.0f);
FadeIn();
yield return new WaitForSeconds(2.5f);
FadeOut();
yield return new WaitForSeconds(2.5f);
UnityEngine.SceneManagement.SceneManager.LoadScene(loadLevel);
}
void FadeIn()
{
splashImage.CrossFadeAlpha(1.0f, 1.5f, false);
}
void FadeOut()
{
splashImage.CrossFadeAlpha(0.0f, 2.5f, false);
}
}
La pornirea aplicației fundalul v-a fi negru, apoi la un interval setat în script imaginea v-a apărea încet apoi v-a dispărea.
Setarea ancorelor
Ultima etapă de dezoltare a aplicație o reprezintă setarea “ancorelor” . Acestea sunt folosite pentru a defini zona de “comfort” a componentei. Odată cu schimbarea rezoluției aplicației, butoanele și fundalul își vor păstra poziția cât și rația de aspect(aspect ratio) până la o anumită limită. Setarea se face atât prin selectarea obiectului din scenă și mutarea celor 4 săgeți în jurul obiectului, fie folosind una dintre opțiunile prestabilite oferite de unity în partea dreaptă a meniului.
Figura 43 – Ancorele setate pe butonul de autofocus
Construirea APK-ului
Dupa ce aplicatia este gata de construire(build), trebuie sa cream APK-ul aplicatiei care v-a fi transferat pe un dispozitiv mobil si instalat.
Figura 44 – Fereastra de construire
Primul pas este de a intra în meniul de construire(File>BuildSettings). Odată ajunși în acest meniu se selectează platforma Android și se adăugă fiecare scenă prin intermediul butonului “Add opened scene”. Următorul pas este de configurare a plicatiei folosind butonul “Player Settings”. Aici vom avea următoarele setări:
Resolution and Presentation:
Default Orientation : Landscape Left
Figura 45 – Setari rezoluție si prezentare
Icon: se va da drag and drop la iconița creată în Photoshop
Figura 46 – Setari iconiță
Identification: la opțiunea Bundle Indentifier se scrie Compania.Username.Nume_aplicație și se alege versiunea minimă necesară de android din căsuța Minimum API Level.
Figura 47 – Setari Identification
Odată ce setările au fost făcute, se dă Build și se alege o destinație pentru APK. După câteva minute de construire APK-ul este gata de transferat pe dispozitiv și de folosit.
Capitolul IV – Prezentarea aplicației
Informații generale
Pentru a rula aplicația este necesar un dispozitiv cu o versiune minimă de Android OS de 4.4 KitKat. Aplicația este dezvoltată pe rezoluția qHD(quad HD 2560×1440) dar se adaptează în funcție de rezoluția a dispozitivului folosit (ex 1920×1080, 1280×800, 800×420). Aplicația este configurata pentru a fi folosită exclusiv în modul landscape stânga sau dreapta.
Startul aplicației
Odată ce s-a instalat aplicația pe dispozitivul mobil, se accesează din meniul de aplicații instalate. La pornirea aplicației suntem întâmpinați de logo-ul unity și de imaginea de întâmpinare a aplicației:
Figura 48 – Imaginea de intâmpinare
Meniul principal
Odată cu dispariția imaginii de întâmpinare, suntem redirecționați către scena meniului principal.Din această scenă putem să ajungem în celalte scene folosind unul dintre cele trei butoane puse la dispoziție: Scanează, Contact, MuzeuVirtual.
Fiecare buton din aplicație reda un sunet prestabilit odată cu apăsarea acestuia.
Figura 49 – Meniul principal
Meniul de selectare a limbii
În acest meniu se ajunge cu ajutorul butonului Scanează. Reprezintă scena ce ne permite să alegem limba în care ne sunt prezentate descrierile tablourilor. Fiecare buton ne trimite către o versiune personalizată a scenei CameraAR:
CameraAR_RO
CameraAR_IT
CameraAR_FR
Figura 50 – Meniul de selectare a limbii
CameraAR – Descriere tablou
Odată cu selectarea uneia dintre opțiunile din meniul de selectare al limbii, suntem întâmpinați de o imagine informativă care ne explică faptul că trebuie să îndreptăm camera către marcaj. Odata cu apariția acestei imagini, se v-a reda si sunetul informativ.
Figura 51 – Imagine informativă
Odata ce imaginea dispare, putem observa interfata aplicatiei: camera aplicatiei precum si cele trei butoane: Lanterna, Autofocus si Inapoi. în acest moment, aplicatia scaneaza în continuu dupa una dintre cele trei imagini tinta din baza de date:
Figura 54 – Țintă tablou 1
Cele trei imagini în ordine reprezintă descrierea tabloului Gioconda (Mona Lisa), Noaptea Înstelată și Țipătul.
Odată ce imaginea a fost detectată, descrierea tabloului apare instant pe ecran și se reda sunetul de detecției a imaginii țintă:
Meniul de contact
Scena meniului de contact cuprinde diferite detalii despre personalul Muzeului de Artă Craiova precum și trei butoane de tip “Social Media” către Facebook,Instagram și Wikipedia. Mai regăsim și un buton ce cuprinde coordonatele GPS către locația muzeului. Odata apasat butonul cu coordonatele GPS, se deschide aplicatia standard de navigare pe dispozitivul mobil cu pozitia muzeului de arta evidentiata pe harta.
Figura 58 – Meniul de contact
Această scenă mai cuprinde și două butoane: unul cu funcția de apelare și unul cu funcția de scriere a unui e-mail
.
Meniul de selectare a modelului 3D
Scena aceasta ne oferă posibilitatea alegerii unuia dintre cele trei modele 3D pe care să le vizualizăm cu ajutorul camerei AR. (3D_Stonehenge, 3D_Castel, 3D_Templu ).
Figura 61 – Meniul de selectare a modelului 3D
CameraAR – Muzeul Virtual
Odată ce unul dintre modelele 3D este selectat, suntem imediat trimiși către scenă ce cuprinde modelul respectiv. Odată ce imaginea ținta este detectată, modelul v-a apărea deasupra ei. Modelul Stonehenge are o opțiune în plus față de celelalte două modele: conține și un buton de restaurare. Scena începe cu modelul 3D original prestabilit iar odată cu apăsarea butonului Restaurare modelul original dispare și apare cel restaurat:
Figura 62 – Model Stonehenge original
Figura 63 – Model Stonehenge restaurat
Figura 64 – Model Templu
Figura 65 – Model Castel
Imaginea țintă pentru modelele 3D:
Figura 66 – Imaginea țintă pentru modelele 3D
Concluzii
Aceasta aplicație a fost realizată cu scopul de a ajuta muzeele să ofere o modalitate mult mai interactivă de vizualizare a detaliilor despre exponate cât și o modalitate în plus de a atrage vizitatorii prin intermediul secțiunii „Muzeu Virtual” al aplicației. Aceasta se folosește de camera principală a dispozitivului mobil pentru a scana și cauta imaginea țintă, cu scopul de a oferi detalii despre un exponat anume sau de a permite vizitatorilor să observe anumite monumente din diferite colțuri ale lumii.
Aplicația este construită astfel încât se poate edita foarte ușor de orice instituție sau firma pentru a putea fi folosită în scopuri proprii. Aplicația pentru muzee este doar un exemplu de întrebuințare a aplicației.
În urmă urma realizării acestei aplicații am acumulat o grămadă de cunoștințe și tehnici de programare și de folosire a platformei Unity și Vuforia, cunoștințe ce mă vor ajuta pe viitor în cadrul realizării unor noi aplicații sau programe.
A fost un proces de lungă durată( peste patru luni de teste și configurări,convertiri etc) și de o dificultate ridicată deoarece am început cu zero cunoștințe în ceea ce privește implementarea limbajului C# în Unity și folosirea uneltelor ce sunt dispuse de către SDK-ul Vuforia, DAR am reușit să realizez ceea ce mi-am propus și sunt foarte mulțumit de rodul muncii mele.
Bibliografie
[PCFB14] – Programming C# For Beginners,by Mahesh Chand, 2014
[POOPV] – Programarea Orientatã pe Obiecte si Programarea Vizualã,by Microsoft
[UIA15] – Unity in action ,by Joseph Hocking, 2015
Referințe web
[GAME] – Gaming Engine, https://en.wikipedia.org/wiki/Game_engine
[GIOC] – Gioconda, https://ro.wikipedia.org/wiki/Gioconda
[MIDW] – Middleware , https://en.wikipedia.org/wiki/Middleware
[NPTIN] – Noaptea Instelata, https://ro.wikipedia.org/wiki/Noapte_%C3%AEnstelat%C4%83
[PCFB14] – Programming C# For Beginners,by Mahesh Chand , 2014 http://www.c-sharpcorner.com/ebooks/programming-csharp-for-beginners
[PHOTO] – Photoshop, https://en.wikipedia.org/wiki/Adobe_Photoshop
[PHPGN] – Plugin-uri Photoshop, https://en.wikipedia.org/wiki/Adobe_Photoshop
[POOPV] – Programarea Orientatã pe Obiecte si Programarea Vizualã,by Microsoft, http://colegiulbratianu.ro/wp-content/themes/theme53309/documente/software/DotNet.pdf
[SKETCH] – Modele 3D , https://sketchfab.com/
[TIPAT] – Tipatul, https://ro.wikipedia.org/wiki/%C8%9Aip%C4%83tul_(pictur%C4%83)
[UIA15] – Unity in action ,by Joseph Hocking, 2015, http://codercdy.com:8989/U_Unity.in.Action.2015.6.pdf
[UNTAUD] – Unity Audio https://docs.unity3d.com/Manual/Audio.html
[UNTUI] – Unity UI https://docs.unity3d.com/Manual/UISystem.html
[VARSDK] – Detalii Vuforia SDK https://en.wikipedia.org/wiki/Vuforia_Augmented_Reality_SDK
[VSDK] – Vuforia SDK , realizat de Qualcomm, https://www.vuforia.com/
[VTAT] – Vuforia Tips and tricks, https://gamedevelopment.tutsplus.com/tutorials/vuforia-tips-and-tricks-on-unity–cms-28744
Codul sursă
Apel.cs
using UnityEngine;
using System.Collections;
public class Apel : MonoBehaviour {
public void Apelare ()
{
Application.OpenURL ("tel://0251412342");
}
}
Email.cs
using UnityEngine;
using System.Collections;
public class Email : MonoBehaviour {
public void Mail()
{
string adresa_email =
"mailto:muzeuartacv@gmail.com?subject=Merită această licență o notă bună?Ț
Application.OpenURL(adresa_email);
}
}
Autofocus.cs
using UnityEngine;
using System.Collections;
using Vuforia;
public class Autofocus : MonoBehaviour {
public void focus ()
{
bool focusModeSet = CameraDevice.Instance.SetFocusMode (
CameraDevice.FocusMode.FOCUS_MODE_CONTINUOUSAUTO);
if (!focusModeSet) {
Debug.Log ("Eroare: dispozitiv necompatibil!).");
}
}
}
Incarcare.cs
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.SceneManagement;
using System.Collections;
public class Incarcare : MonoBehaviour
{
public Image splashImage;
public string loadLevel;
IEnumerator Start()
{
splashImage.canvasRenderer.SetAlpha(0.0f);
FadeIn();
yield return new WaitForSeconds(2.5f);
FadeOut();
yield return new WaitForSeconds(2.5f);
UnityEngine.SceneManagement.SceneManager.LoadScene(loadLevel);
}
void FadeIn()
{
splashImage.CrossFadeAlpha(1.0f, 1.5f, false);
}
void FadeOut()
{
splashImage.CrossFadeAlpha(0.0f, 2.5f, false);
}
}
Incarcare_Scan.cs
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.SceneManagement;
using System.Collections;
public class Incarcare_Scan : MonoBehaviour
{
public Image splashImage;
public string loadLevel;
IEnumerator Start()
{
splashImage.canvasRenderer.SetAlpha(0.0f);
FadeIn();
yield return new WaitForSeconds(2.5f);
FadeOut();
yield return new WaitForSeconds(2.5f);
UnityEngine.SceneManagement.SceneManager.LoadScene(loadLevel);
}
void FadeIn()
{
splashImage.CrossFadeAlpha(5.0f, 0.0f, false);
}
void FadeOut()
{
splashImage.CrossFadeAlpha(0.0f, 2.5f, false);
splashImage.enabled = false;
}
}
Lanterna.cs
using UnityEngine;
using System.Collections;
using Vuforia;
public class Lanterna : MonoBehaviour {
private bool mFlashEnabled = false;
public void Lanterna2 ()
{
{
if (!mFlashEnabled) {
// Se aprinde lanterna daca aceasta este oprita
CameraDevice.Instance.SetFlashTorchMode (true);
mFlashEnabled = true;
} else {
// Se stinge lanterna daca aceasta este pornita
CameraDevice.Instance.SetFlashTorchMode (false);
mFlashEnabled = false;
}
}
}
}
Restaurare.cs
using UnityEngine;
using System.Collections;
using UnityEngine.UI;
public class Restaurare : MonoBehaviour {
public GameObject Original;
public GameObject Restaurat;
public bool isActive = true ;
public Button buton;
private void Start (){
Restaurat.SetActive (false);
Button btn = buton.GetComponent<Button> ();
buton.onClick.AddListener (Change);
}
public void Change(){
if (isActive == true) {
Original.SetActive (false);
Debug.Log ("Conditia true");
Restaurat.SetActive (true);
isActive = false;
} else {
Original.SetActive (true);
Debug.Log ("Conditia false");
Restaurat.SetActive (false);
isActive = true;
}
}
}
SchimbareScena.cs
using UnityEngine;
using System.Collections;
using UnityEngine.UI;
using UnityEngine.SceneManagement;
public class SchimbareScena : MonoBehaviour
{
public void SeteazaScena(string sceneName)
{
UnityEngine.SceneManagement.SceneManager.LoadScene (sceneName);
}
}
SocialMedia.cs
using UnityEngine;
using System.Collections;
using Vuforia;
public class SocialMedia : MonoBehaviour {
private bool mFlashEnabled = false;
public void facebook(){
Application.OpenURL ("https://www.facebook.com/muzeuldearta.craiova/");
}
public void instagram(){
Application.OpenURL ("https://www.instagram.com/explore/locations/831950107/");
}
public void wikipedia(){
Application.OpenURL ("https://ro.wikipedia.org/wiki/Muzeul_de_Art%C4%83_din_Craiova");
}
public void GPS(){
Application.OpenURL ("https://www.google.ro/maps/place/Muzeul+de+Art%C4%83/@44.3191793,23.7950188,15z/data=!4m5!3m4!1s0x0:0xcdb638d9fdf576bf!8m2!3d44.3191793!4d23.7950188");
}
}
SunetClick.cs
using UnityEngine;
using System.Collections;
using UnityEngine.UI;
[RequireComponent(typeof(Button))]
public class SunetClick : MonoBehaviour
{
public AudioClip sound;
private Button button { get { return GetComponent<Button>(); } }
private AudioSource source { get { return GetComponent<AudioSource>(); } }
void Start ()
{
gameObject.AddComponent<AudioSource>();
source.clip = sound;
source.playOnAwake = false;
button.onClick.AddListener(() => PlaySunet());
}
void PlaySunet ()
{
source.PlayOneShot (sound);
}
}
SunetSucces.cs
using UnityEngine;
using System.Collections;
using Vuforia;
public class SunetSucces : MonoBehaviour, ITrackableEventHandler
{
private TrackableBehaviour mTrackableBehaviour;
void Start()
{
mTrackableBehaviour = GetComponent<TrackableBehaviour>();
if (mTrackableBehaviour)
{
mTrackableBehaviour.RegisterTrackableEventHandler(this);
}
}
public void OnTrackableStateChanged(
TrackableBehaviour.Status previousStatus,
TrackableBehaviour.Status newStatus)
{
if (newStatus == TrackableBehaviour.Status.DETECTED ||
newStatus == TrackableBehaviour.Status.TRACKED ||
newStatus == TrackableBehaviour.Status.EXTENDED_TRACKED)
{
// Pornire sunet la gasirea tintei
GetComponent<AudioSource>().Play();
}
else
{
// Oprire sunet la pierderea tintei
GetComponent<AudioSource>().Stop();
} }
}
CD / DVD
Autorul atașează în această anexă obligatorie, versiunea electronică a aplicației, a acestei lucrări, precum și prezentarea finală a tezei.
Index
A
Avantajele limbajului de programare C# fata de limbajul C++ 5
B
Bibliografie 59
Butoanele de actiune 25
C
CameraAR 33
CameraAR – Descriere tablou 50
Componentele audio 40
Configurarea scenelor 28
Construirea APK-ului 46
CUPRINSUL xiii
D
Descrierea limbajului C# 4
Descrierea motorului grafic Unity 7
Descrierea Photoshop-ului 11
Dezvoltarea Grafica 20
I
Iconița Aplicației 20
Imaginea de intro 44
Importarea fisierelor grafice si a pachetului de date vuforia 26
Informații generale 48
Instrumente Photoshop 15
L
LISTA FIGURILOR 1
M
Meniul de contact 53
Meniul de selectare a limbii 49
Meniul de selectare a modelului 3D 54
Meniul principal 28, 49
Midleware 9
Motivația 3
Motorul grafic 8
P
Pagina de contact 21
Pagina de selectare a modelului 3D 24
Pagina meniului principal 22
Plugin-uri/Addon-uri 12
R
Referințe web 60
S
Scena model 3D 38
Schema aplicatiei 18
Scopul 3
Setarea ancorelor 45
Startul aplicației 48
Structura unui program C# 5
T
Tipuri de date in C# 6
V
Vuforia 10
Copyright Notice
© Licențiada.org respectă drepturile de proprietate intelectuală și așteaptă ca toți utilizatorii să facă același lucru. Dacă consideri că un conținut de pe site încalcă drepturile tale de autor, te rugăm să trimiți o notificare DMCA.
Acest articol: Licenta Anghel Alexandru Bogdan Ism 2017 [310198] (ID: 310198)
Dacă considerați că acest conținut vă încalcă drepturile de autor, vă rugăm să depuneți o cerere pe pagina noastră Copyright Takedown.
