Aplicatie Ce Ofera Un Curs Virtual Demonstrativ In Oculus Rift
Introducere
”Creativitate în Sistemul Educational” – O scurtă descriere despre acest proiect ce are ca țintă implementarea de noi soluții în susținerea cursurilor online într-un mod cât mai dinamic.
Contextul și soluția problemei
Deoarece mereu am fost în căutare de lucruri practice, am frecventat multe cursuri online, în special pe Coursera. Am pornit de la ideea de a preda un curs online mult mai interactiv și nu doar într-un video, unde în majoritatea prezentatorilor sunt filmați dupa un tipar plictisitor vorbind despre un lucru ce deseori nici măcar nu-l vezi prezent în video. Astfel am ajuns la ideea de a implementa cursurile online într-o aplicație unde avem un mediu de prezentare, avem un obiect grafic ce poate reprezenta un obiect de studiu, avem posibilitatea de a adăuga mișcări, sunete, efecte și multe alte elemente ce mențin interacțiunea participantului la curs. Pentru că am avut posibilitatea de a-l testa de a-l exporta pe Oculus Rift, am vrut să-l fac mai interesant și am decis ca acest proiect grafic să fie de tip ”Virtual Reality” și să fie implementat în Unreal Engine.
De ce Realitate Virtuală?
În prim rând pentru simplul fapt că este o tehnologie nouă ce atrage curiozitatea chiar dacă utilizatorul testează o aplicație de slabă calitate. Odată ce este conectat la lumea virtuala, va fi cuprins de mediu și de posibilitatea de mișcare în acel mediu încât îi va face plăcere să interacționeze și să urmarească cursurile cu mai multă atenție.
Al doilea motiv este posibilitatea de schimbare a mediului, a elementelor grafice, sunetului, unde spre deosebire de rutina de zi cu zi unde ținem cursurile în același loc cu același tipar de colegi și profesori, aici putem schimba absolut tot.
Un alt motiv pentru care am hotărât sa aleg Realitatea Virtuală este faptul că prin prezentare video, profesorul nu are posibilitatea de a primii feedback în timp curent, decât dacă eventual folosesc streaming de video și sunet. Dat faptul că aplicațiile de Oculus Rift au la baza un game engine, putem convertii orice aplicație in multiplayer. Acest motiv este valabil pentru un eventual feature al aplicației, unde atât profesorul cât și elevul pot interacționa live prin intermediul aplicației cu ajutorul Oculus Rift.
Motivația
Am fost inițial mai multe idei de a îmbunătății modul de predare, ca de exemplu: crearea de profile pentru fiecare elev ce poate urca în nivel și își poate achizitiona cu puncte măriri de note sau absențe la laburi, inserarea unui sistem de prezență prin telefoane, etc. Din toate aceste idei, am ajuns la concluzia că prezența la cursuri e cea mai grea activitate în cadrul facultății, din cauză că este destul de greu pentru un profesor să mențină atenția la 150 de persoane. De ce nu acele cursuri să fie disponibile și online, intr-un format interactiv și unde elevii iși pot păstra atentia și pot urmarii chiar si 3-4 cursuri consecutiv? E mai simplu să întelegi materia când îți place atmosfera în sala de curs și modul de predare. În acest caz, am ales să-mi fac licența pe Oculus Rift DK2 și Unreal Engine.
Descrierea proiectului
Proiectul meu constă într-o aplicație realizată în motorul de jocuri Unreal Engine, versiunea 4.7.6, ce conține două secțiuni de prezentare a cursurilor. În prima secțiune elevul este prezent într-o sală de curs cu un video proiector pe post de tablă în care apare demonstrativ un profesor care, desigur, va preda un curs. În fața elevului va fi prezentat un obiect 3D tematic ce poate fi văzut prin Oculus Rift în orice unghi. Acest obiect a fost inserat pentru a-i capta atenția și pentru a-l ajuta să memoreze vizual mai ușor materialul ce i se prezintă. Cea de-a doua secțiune include o plaforma interactivă, unde utilizatorul este deja un personaj 3D ce se poate deplasa pe o suprafață ce declanșează mai multe cursuri. Odata ce utilizatorul ajunge într-o anumita zonă marcată distinctiv, sunetul cursului va pornii iar anumite elemente ce au legatură cu materialul vor apărea din suprafață.
Fundamentare teoretică
State-of-the-art
Stadiul curent al proiectului se bazează pe Oculus Rift DK2 și Unreal Engine 4. Cele două tehnologii hardware cât și software îmi permit să dezvolt proiectul fără foarte mari probleme, facilitând atât proiectarea, dezvoltarea cât și compilarea și exportul pentru Realitatea Virtuală.
Unreal Engine 4, spre deosebire de versiunea precedentă, folosește mult mai optimizat resursele din calculator creând o nouă tehnologie ce îmbunătățește semnificativ sistemul de particule, fizica realistă accelerată hardware, sistemul de illuminare și modul de proiectare și randare. Mai nou, acesta este extrem de scalabil, proiectele realizate putând fi rulate pe dispozitive ce pornesc de la smartphone-uri și tablete pana la calculatoare, console și dispozitive pentru realități virtuale.
Oculus Rift – Kit de Dezvoltare 2, l-am ales deoarece este primul device ce a facut cele mai mari progrese in tehnologia lumii virtuale. Au pornit de la un proiect lansat pe Kickstarter și după o finanțare de nu mai puțin de 2 bilioane de dolari, au făcut foarte mari progrese atât pe versiuni cu display propriu cât și pe versiuni în colaborare cu Samsung folosind smartphone-uri precum Galaxy Note 4 sau Galaxy S5. Datorită faptului că a atins un alt nivel în domeniul informatic, a fost cumparat de una din cele mai mari companii din lume și anume Facebook, ulterior cu noile fonduri făcând foarte mari progrese intr-un timp mult mai rapid.
Realitatea Virtuală
Se referă la ambianțe artificiale create pe calculator care ofera o simulare a realității atât de reușită, încât utilizatorul capătă impresia de prezență fizică aproape reală, atât în anumite locuri reale cât și în locuri imaginare. Cele mai multe ambianțe sau împrejurimi reprezentate cu metodele de Realitate Virtuală oferă de obicei o anumită experiență vizuală a unei realități obișnuite, afișată ori pe un ecran de calculator, ori pe afișoare 3D (stereoscopice) speciale. Unele simulări includ însă și informații suplimentare destinate celelaltor simțuri umane, cum ar fi sunete, forțe exercitate asupra corpului utilizatorului percepute prin simțul tactil etc. Unele tehnologii mai avansate oferă și feedback mecanic la anumite mișcări, în special în aplicații medicale precum și la jocurile computerizate, astfel încât „cufundarea” mentală în lumea virtuală devine aproape atotcuprinzătoare. Alte aplicații oferă nu numai imagini ci și posibilitatea comunicării verbale; astfel ele pot crea chiar și o „teleprezență” sau și o „teleexistență” (desigur virtuale).
Pentru simularea cât mai realistică a ambianței necesare au fost inventate o mulțime de aparate speciale multimodale, precum:
Mănuși de date cu / fără fir;
Platforme fizice cât și virtuale în care utilizatorul se poate deplasa în orice direcție;
Simulatoare pentru mașini sau avioane;
Gadgeturi pentru a simula diverse obiecte, pornind de la palete de tenis până la arme.
Ideea de bază a realității virtuale s-a născut in 1930, când cercetătorii au creat un simulator de avion pentru piloți. În 1965, americanul Ivan Sutherland și-a imaginat o lume virtuală personală, portabilă, un aparat format dintr-un mic televizor, pe lângă care a proiectat un ecran portabil sub forma unei căști.
Realitatea virtuală are trei tipuri de bază:
Primul este cel mai cunoscut, și anume o cască prevăzută cu ecrane de televizor, căști de sunet și mănuși. Casca și mănușile se atașează la calculator care a fost programat pentru diferite efecte de sunet sau grafică, în funcție de scopul utilizării. În momentul în care omul își pune casca pe cap, imaginile de pe ecran îi vor ocupa în intregime câmpul vizual.
Al doilea tip al realității virtuale este dat de folosirea camerelor de luat vederi pentru a urmării imaginea utilizatorului în lumea virtuală. Pe lângă faptul că utilizatorul poate muta obiecte, aceste sisteme de realitate virtuală dau posibilitatea prezenței mai multor participanți.
Cel de-al treilea tip proiectează o imagine tridimensională pe un ecran mare, cu suprafață curbată. Acesta crează impresia că utilizatorul face parte din lumea virtuală, impresie care poate fi accetuată cu ajutorul ochelarilor tridimensionali.
Dezvoltarea jocurilor
Bază pentru realitatea virtuală
Jocurile pe computer sunt din ce în ce mai mai puțin rigide și au tot mai mult un final deschis. Înainte, jucătorul trebuia să urmeze îndeaproape viziunea designer-ului. Dacă vroiai să câștigi, trebuia să joci așa cum ar fi jucat designerul. Astăzi, tehnologia ne permite să creăm jocuri care sunt mai mult simulatoare ale unui univers decât povești rigide. Tehnologia 3D îți permite să privești lumea virtuală din orice unghi, să te scufunzi cu totul în ea, să explorezi fiecare crăpătură și colțișor și să nu vezi doar acele lucruri și numai din acea perspectivă care ți-o oferă programatorul.
Motoarele grafice mult îmbunătățite îți permit să interacționezi cu lumea care o programezi și să descoperi soluții noi și creative pentru probleme și nu te limitează doar la câteva interacțiuni preprogramate cum se întâmpla nu de mult.
Sistemul de inteligență artificială este foarte modern și este dezvoltat astfel încât unitățile controlate de computer să aibă motivații și scopuri, găsind soluții pentru orice problemă care survine. Înainte, reacțiile inteligenței artificiale erau doar niște scenarii urmărite de îndeaproape, aceleași pentru orice situație.
Este binecunoscut faptul că jocurile video reprezintă o categorie de produse software cu multă interacțiune, care tind să solicite mai multe resurse de calcul decât aplicațiile obișnuite, mai ales atunci când este vorba de simulări în timp real sau în cazul în care calitatea reprezentării grafice joacă un rol important. Acesta este, probabil, unul dintre motivele pentru care în faza incipientă a industriei, aplicațiile de acest tip erau proiectate și implementate special pentru a folosi în mod optim resursele hardware ale platformelor precum resurse grafice sau constrângeri de memorie. Evident, această abordare vine cu serioase dezavantaje.
În primul rând, trebuie luat în considerare timpul necesar dezvoltării unei astfel de aplicații în totalitate. Un alt neajuns este reprezentat de posibilitatea destul de redusă a reutilizării codului în dezvoltarea ulterioară a unor aplicații similare. Pentru a răspunde acestor neajunsuri, următorul pas avea să ducă la apariția unor sisteme specializate menite să îmbunătățească procesul de dezvoltare.
Apărute, în general în cadrul companiilor mari, acestea încercau să ofere soluții software cât mai generale, seturi de componente reutilizabile precum și medii care să faciliteze procesul de dezvoltare. Aceste sisteme, denumite ulterior “game engines” (aprox. “motoare de jocuri”), au crescut în popularitate și număr ca urmare a introducerii elementelor de grafică 3D la începutul anilor ’90 [2].
În zilele noastre, majoritatea sistemelor de dezvoltare oferă facilități ca: motoare de redare grafică, detecția coliziunilor, facilități pentru inteligență artificială, sunet, management la nivelul thread-urilor (fire de execuție) și al memoriei (Ward, 2008). Toate aceste elemente aduc semnificative îmbunătățiri procesului de dezvoltare a jocurilor pentru calculatoare personale și diverse alte platforme, promovând reutilizarea componentelor și oferind posibilitatea de adaptare a motorului de jocuri în scopul dezvoltării de noi aplicații interactive.
Istoria jocurilor
Jocurile pentru calculator reprezinta o categorie de aplicații software care este destinată distracției. La apariția acestora, în lumea computerelor, în anii 1970, până astăzi, industria a evoluat, astfel că putem vorbi cu ușurință de multe evenimente de prezentare a jocurilor, precum E3 sau CeBit în România, precum și de câteva organizații de jucători profesioniști.
Există mai multe tipuri de jocuri pe calculator:
Real Time Strategy
Real Time Tactics
Role Playing Game
Simulatoare
Acțiune
Aventură
First Person Shooter
Third Person Shooter
Massive Multiplayer Online Game
Arcade
Board/Card
Jocuri cu realitate virtuală
Unele jocuri au în adăugare prefixul MMO, ceea ce înseamnă ”Massively Multiplayer Online”, reprezentând un joc care se poate juca numai online, în care sute de mii de jucători joacă în același timp, în aceeași lume.
Un joc video este un joc electronic în care se interacționează cu o interfață grafică pentru a genera un răspuns vizual pe un ecran. Jocurile video în general au un sistem de recompensare a utilizatorului, de obicei ține scorul, acest sistem depinzând de îndeplinirea unor anumite obiective în joc.
Termenul de ”joc pe calculator” sau ”joc pe pc”, se referă la un joc care este jucat pe un calculator, unde monitorul este principalul mijloc de informare și care folosește dispozitive de control printr-un periferic de intrare, de obicei un joystick sau o combinație de tastatura și mouse.
”Jocurile pe consola”, se referă la jocurile jucate pe un sistem conceput special pentru acestea, sistem care poate fi conectat la un televizor sau un monitor. Denumirea de ”joc video” poate fi folosită și pentru a descrie un software făcut și pentru alte dispozitive gen: telefoane mobile, PDA, calculatoare științifice performante, ceasuri electronice, camere video, etc.
Primele jocuri video au fost realizate între anii 1950 și 1960 de Jon Snell și rulau pe platforme cum ar fi osciloscopul, sau computere EDSAC. Cel mai vechi joc pe calculator, o simulare de rachete, a fost creat in 1947 de catre Thomat T. Goldsmith Jr. Și de Estle Ray Mann. O cerere pentru acordarea de drepturi de autor a fost făcută pe 25 Ianuarie 1947 și patentată în Statele Unite. Jocul rula pe un computer al Universității Electronic Delay Storage Automatic Calculator. În 1958 William Higinbotham, care a ajutat să se contruiască prima bombă atomică, a creat ”Tennis For Two” în laboratoarele naționale din Brookhaven, situate în Upton, New York, pentru a distra vizitatorii laboratorului.
Jocurile Arcade au fost dezvoltate în anii ‘70 și datorită utilizării tot mai ușoare a acestora, au căpătat o popularitate uriasă pe o perioadă de aproximativ un deceniu numit și ”Epoca de aur a jocurilor Arcade”. Primul joc arcade ”coin-operated” a fost ”Computer Space”, creat în 1971 de Nolan Bushnell. În acele timpuri, înaintea apariției sălilor de jocuri, jocurile electronice erau puse în baruri și taverne. Gradul ridicat de complexitate și faptul că jocul necesită ca utilizatorul să citească un set de instrucțiuni înainte să se joace, a dus la o popularitate foarte scăzută în aceste locații, așa că Nolan s-a văzut nevoit să caute noi idei.
La puțin timp după ce Bushnell a fost prezent la o demonstrație a sistemului Magnavox Odyssey în California unde a jucat jocul de Ping-Pong al lui Baer, împreună cu un prieten al sau, Ted Dabney, au format o companie numită Atari dedicată jocurilor. Au creat astfel o copie după Ping-Pong-ul lui Baer și a fost atât de încântător, încât au vrut să-l comercializeze dar deoarece numele era deja preluat, l-au numit doar PONG. Interfața intuitivă a dus la succesul în baruri a jocului și a inițiat era în jocurile Arcade.
La primele console lansate în anii ‘70, codul mașină pentru unul sau mai multe jocuri se făcea cu ajutorul logicii discrete și era codat direct în microcipuri, așa că alte jocuri adiționale nu puteau fi rulate. În anii ’70, jocurile au început să fie distribuite și cu ajutorul casetelor. Programele erau stocate pe chip-uri ROM care erau montate în casete de plastic, acestea putând fi introduse în sloturile de pe console. Atunci când casetele erau introduse, microprocesoarele din console citeau din memoria casetei apoi rulau programul stocat.
În acea perioada, trei sisteme au dominat era consolelor de a doua generație în America de Nord:
1977 – Atari a lansat consola pe bază de casetă: Video Computer System, ulterior denumită Atari 2600. Noua consolă a fost lansată cu noi jocuri pentru sezonul sărbătorilor, mulțumită acestora consola ajunge sa fie una din cele mai populare console a primelor generații.
1980 – Firma Mattel a lansat o consolă cu un procesor unic pe 10 biți numita: Intellivision. Sistemul avea o grafica superioară Atari, acest lucru ajutând să devină foarte populară.
1982 – Firma Coleco Industries a lansat o consola foarte puternică întrecând toate celelalte sisteme disponibile in ’82. Vânzările sale au crescut dar din cauza prezenței a trei mari console pe piață și din cauza unor multitudini de jocuri de calitate slabă piața s-a prăbușit la un an după lansare.
După cum am precizat la firma Coleco Industries, în 1983 a avut loc o scădere bruscă a popularității jocurilor numită și ”Video game crash of 1983” care a fost provocată de suprasaturarea pieței din cauza calității foarte proaste a jocurilor oferite de terți, în special pentru sistemele Atari.
În 1985 consola Nintendo Entertainment System sau NES, a adus în prim plan piața de consum pentru acasă. Sega a lansat imediat după aceasta o consolă proprie numită Sega Master System, dar acest sistem nefiind capabil sa ajungă la nivelul de popularitate al NES.
Nintendo a continuat și a creat unele din cele mai cunoscute personaje din lume, chiar și la ora actuală: Mario Bros sau Wario.
Din 1989 Nintendo a lansat Game Boy, prima consolă portabilă și au distribuit jocul Tetris împreuna cu sistemul, pentru ca Nintendo a crezut că un joc de puzzle va aduce mulți consumatori. Dintre aceste doua doar Game Boy a rămas în topul vânzărilor.
Din 1994-1995, Sega a lansat Sega Saturn și Sony a debutat pe scena jocurilor video cu PlayStation. Dupa multe amânări, Nintendo a lansat prima consolă pe 64 de biți, Nintento 64 vânzând mai mult de 1,5 milioane de unități în doar trei luni.
Generația pe 128 de biți s-a remarcat în 2000 prin Playstation 2 apărut în 2000, apoi 2001 Nintendo GameCube și Microsoft Xbox. Această generațiede console s-a remarcat prin controversele majore pe care le-a provocat din cauza jocurilor cu conținut mare de pornografie, crimă, violență, consum de droguri, propagandă socială cât și subiecte divergente de genul religiei, politicii, feminismului și economiei.
Din 2002 și până în prezent apar foarte multe jocuri cu titluri mari precum: Grand Theft Auto III, Game Boy Advance, Resident Evil, etc.
De asemenea industria jocurilor trece pe calculatoare, deoarece calculatorul a devenit un uz în fiecare familie iar hardware-ul pe calculatoare a crescut în această perioadă considerabil.
Conceptul motorului de jocuri
Dacă la începuturile industriei dezvoltarea jocurilor video implica lucrul cu resurse hardware și software specializate, produsele fiind adesea privite ca simple jucării, în zilele noastre această activitate este la baza unei industrii foarte profitabile, ce rivalizează industria cinematografică de la Hollywood în termeni de anvergură și popularitate.
Această dezvoltare nu ar fi fost posibilă fără apariția celebrelor motoare de jocuri „Quake” și „Doom” de la „id Software”, sau „Unreal Engine” produs de „Epic Games”, care sunt, de fapt, kituri reutilizabile pentru dezvoltarea de software ce pot fi licențiate și utilizate pentru crearea a aproape oricărui tip de joc imaginabil, după cum precizează și Gregory [1].
Tendința dezvoltării de astfel de kituri a prins contur odată cu apariția celebrului „Doom” la mijlocul anilor ’90 [2]. Printe noutățile aduse de „Doom” la vremea respectivă se numără o grafică 3D realistă și o arhitectură care separă funcționalitatea de bază a jocului (grafica 3D, detecția coliziunilor) de elementele specifice, cum ar fi regulile de joc, texturi, modele, etc [3][1].
În zilele noastre, aceeași separare între funcționalitatea generală a unui joc și conținutul său specific stă la baza dezvoltării motoarelor de jocuri moderne. Prin reutilizarea acelei părți generale a funcționalității, timpul și costurile necesare dezvoltării de noi aplicații interactive sunt semnificativ reduse.
Un motor grafic este un sistem conceput pentru crearea și dezvoltarea de jocuri video. Există mai multe motoare de joc, care sunt proiectate să funcționeze pe console de jocuri video și calculatoare personale. Funcționalitatea de bază oferită de obicei de un motor grafic include un motor de randare pentru grafică 2D sau 3D, un motor de fizică sau de detectare a coliziunilor (și răspunsul la coliziune), sunet, scripting, animație, inteligență artificială, în rețea, streaming, memorie de management, suport de localizare, etc.
Procesul de dezvoltare a jocului este de multe ori economisit, în mare parte, prin reutilizarea / adaptarea unui motor asemănător pentru a crea jocuri diferite.
Topul motoarelor licențiate și utilizate pentru dezvoltarea de jocuri video de către părți terțe include nume sonore, ca „Anvil” folosit în dezvoltarea celebrelor francize „Assassin’s Creed” și „Prince of Persia”, „RAGE”, cunoscut pentru contribuția adusă cunoscutului titlu „Grand Theft Auto”, sau „Unreal Engine”, unul dintre cele mai cunoscute și licențiate motoare de jocuri de pe piață conform Stead [4]. Datorită evoluției actuale a jocurilor video în direcția fotorealismului, majoritatea motoarelor de jocuri sunt concentrate în jurul motoarelor grafice. În general, motoarele de jocuri existente pe piață urmăresc să ofere funcționalitate orientată pe categorii de discipline.
Designul de jocuri
Designul de jocuri este una din etapele esențiale în dezvoltarea aplicațiilor grafice în special celor video. Fiind un porcedeu complex, acesta este împărțit în mai multe etape. Printre aceste etape se numară: Modul de joc, povestea, mecanica jocurilor,designul de nivel și multe altele.
Mecanicile unui joc sunt adesea cele mai importante în designul de jocuri, pentru că descriu efectiv regulile și ideea jocului. Ele sunt puse într-o primă etapă într-un prototip. Prototipul este în cazul jocurilor un model demonstrativ funcțional care permite creatorului să determine dacă mecanica de joc ilustrată este suficient de distractivă sau captivantă încât să fie dezvoltată într-un produs final. Un prototip va folosi adesea substituienți aproximativi, necizelați, pentru elemente vizuale și auditive, și va avea două sau trei nivele maxim, nu mai mult decât este necesar pentru a ilustra mecanicile-cheie.
Designerul de jocuri are o serie de atribuții în procesul de dezvoltare al unui joc. El stabilește și monitorizează direcția creativă a jocului de la stadiul de idee, prototip, pana la faza de lansare. Precum un regizor de film, designerul de jocuri este reponsabil pentru stabilirea și menținerea liniei creative, lucrând în de aproape cu artiștii, programatorii și producătorii pentru lansarea jocului. În sarcinile sale regăsim și întâlniri cu personalul pentru idei de brainstorming asupra conceptelor, stabilirea regulilor și stadiilor jocului. [5]
Sarcinile designerului de jocuri într-o companie de creare a jocurilor sunt:
Munca în echipă;
Identificarea conceptului;
Stabilirea regulilor;
Precizarea specificațiilor jocului și aplicației;
Asistarea implementării;
Testarea jocului;
Îmbunătățirea jocului;
Stabilirea nivelelor acestuia.
Grafica este unul din elementele care sunt sub mai mult sub control controlul unui designer decât sub controlul programatorului. Dincolo de stabilirea unui stil generic precum cartoon, fotorealist, 2d, 3D, de grafică se ocupă un grafician care stabilește direcția artistică a jocului.
Același lucru se aplică și la sunet și muzica, partea audio este responsabilitatea unui designer de sunet, designerul jocului fiind implicat doar în stabilirea unor linii orientative.
Designul interfeței acoperă toate meniurile din joc, de la elementele care apar pe ecran în timpul acțiunii până la meniul care e afișat atunci când jucătorul începe jocul sau îl pune pe pauză. Interfața trebuie să fie foarte ușoară de înțeles și utilizat, elementele fiind poziționate în locuri propice și funcția lor să fie clară la prima vedere. Dacă se presupune că interfața poate să fie personalizată de jucator, trebuie să se detalieze modul în care acesta o poate face. Aspectul vizual este în general creat de un grafician, dar dispunerea elementelor în ecran este în responsabilitatea designerului. De cele mai multe ori există o persoană care se pricepe și la design și la programare, astfel implementând singur interfața meniului cât și aspectul acestuia.
Metodele de control detaliază interacțiunea jucătorului cu jocul, modul în care el își transmite intențiile prin intermediul disponzitivelor hardware încât ele să fie transformate în acțiuni. Este un aspect dependent de platforma pe care va fi jocul (calculator, consola, smartphone, oculus rift, etc.), pentru fiecare tip hardware și joc creându-se anumite așteptări pentru metoda de control.
Despre Unreal Engine
Unreal Engine, creat de Epic Games, a fost popularizat de jocul cu același nume, din seria Gears of War și multe alte jocuri de renume. Unreal Tournament a fost unul din jocurile care, împreună cu Quake și Half-Life, au deschis calea pentru activitatea de modulurizare, creând noi module și nivele de jocuri pentru un joc deja existent.
Editoarele video, la început, erau incluse în joc și puteau fi folosite pentru a crea conținut doar pentru jocul respectiv. Ulterior ele au devenit kituri de dezvoltare distincte, cu care puteau fi create prototipuri sau jocuri de sine stătătoare.
Costurile erau destul de mari la început, Epic Games cerând 600.000$ doar pentru publicarea unui joc creat în Unreal Engine, dar competiția pe piață a făcut ca acest engine să fie gratuit într-un final. Licența la momentul actual trebuie plătită sub formă de procent (5%) doar dacă se depășește plafonul de 3000$ din câștiguri.
În ceea ce privește folosirea gratuită a sa, Unreal Engine 4 oferă facilități mai mult decât impresionante: un editor de joc ce a trecut prin numeroase iterații de-a lungul anilor și care și-a dovedit eficacitatea de nenumărate ori cu sistem de animații, sistem de particule, sistem de visual scripting, interfețe cu utilizatorul prin ScaleForm, standard în materie de interfețe cu utilizatorul, adăugarea de vegetație realistă cu SpeedTree, animații faciale cu FaceFx și multe altele. Adaug faptul că noua versiune ce va apărea în 2016 promite să fie mult mai spectaculoasă.
Noul Unreal Engine are export pentru absolut toate platformele de pe piața actuală:
începând cu sistemele desktop ce au sisteme de operare ca Windows, Linux, OSX;
smartphone-uri și tablete cu sisteme de operare precup: Android, iOS, Windows Phone;
console de jocuri precum: XBOX, PlayStation, NVIDIA Shield;
gadgeturi pentru realități virtuale precum: Oculus Rift și HTC Vive.
Dincolo de avantaje, există și câteva minuri din punctul meu de vedere. Primul minus este unul general, care se aplică la toate engine-urile de tip ”prototipare 3D”, și anume dificultatea de a crea content 3D este exponențial mai mare decât în cazul contentului 2D. Se pot folosi elemente și asset-uri create de altcineva sau create în alt program, dar nivelul lor de implementare sau modificarea lor ca și dificultate rămâne ridicată.
Al doilea minus ar fi decizia Epic de a utiliza limbaj propriu de scripting, numit Unreal Script. Deși este bazat pe JavaScript, este suficient de diferit încât este nevoie de o perioadă lungă de adaptare pentru cei ce trec de la programarea Javascript de bază la noul script. Fiind un framework complet nou, este de înțeles și dificultatea sa. Problema poate fi înlocuită cu ajutorul alternativei Kismet, care este un sistem de visual scripting, bazat pe interconectarea unor blocuri logice cu diverse comportamente.
Despre Oculus Rift
Majoritatea jocurilor care implică tehnologia sunt limitate la ecranul calculatorului, tabletei sau telefonului. Pornind de la ideea de a îmbunătății experiența jucătorilor, cei de la compania Oculus VR au creat o cască numită ”Oculus Rift” cu un sistem prin care jucătorii pot interacționa cu obiectele din jur și în care de cele mai multe ori universul jocului să fie întregul spațiu al unei camere. Gadgetul îi ajută pe oameni să intre mai bine în pielea personajului văzând acțiunea din joc printr-un vizor stereoscopic 3D în loc să urmărească acțiunea pe ecranul televizorului sau calculatorului.
Dispozitivul are un ecran de 7 inch cu o rezolutie de 1280×800, ceea ce înseamnă că pentru fiecare ochii revine o rezoluție de 640×800. [6] Are o greutate de 379 de grame, pe fiecare parte existând un șurub care poate ajusta dispozitivul pentru a sta cât mai bine pe capul utilizatorului.
Jucătorul se mișcă în joc folosindu-se de mișcările capului în toate cele trei planuri. Tehnologia folosită se bazează pe lantenție scăzută tocmai pentru a ajuta ochiul uman să trimita informația către creier în timp util pentru ca acesta să decidă în ce direcție trebuie să miște capul.
Oculus Rift a ajuns la cea de-a treia variantă fără ca măcar să fie disponibil pe piață ca un produs finit. Noul prototip prezentat de Oculus VR poartă numele de cod „Crescent Bay” și este un upgrade semnificativ față de „Crystal Cove”, model livrat în această vară spre dezvoltatori ca „Development Kit 2”. Deși nu a intrat în detalii exacte legate de rezoluții sau alte caracteristici măsurabile, compania a dezvăluit noile capabilități ale lui Oculus Rift.
Pentru început, Crescent Bay este mult mai ușor decât Development Kit 2, ceea ce înseamnă că dispozitivul de realitate virtuală va fi mult mai confortabil de utilizat, mai ales în sesiuni prelungite. În ciuda faptului că este mai ușor, varianta a treia de Oculus Rift a primit funcționalitate în plus față de predecesorii săi.
Modelul lansat în această vară oferea posibilitatea de a urmări utilizatorul în spațiu 3D, însă doar la 180 de grade, întrucât LED-urile cu infraroșu erau prezente doar pe partea din față a dispozitivului. Crescent Bay oferă însă urmărire a subiectului la 360 de grade, grație LED-urilor și pe partea din spate. Dezvoltatori au astfel posibilitatea de a realiza noi tipuri de experiențe în realitate virtuală folosind Oculus Rift.
Deși nu au intrat în detalii specifice, oficialii Oculus VR au confirmat că noul headset include un display cu rezoluție mai și cu o frecvență mai înaltă. Declarațiile oficiale sugerează că este vorba despre o îmbunătățire a calității la fel de mare ca între primul Development Kit și cel de-al doilea. Având în vedere că primul includea un display cu rezoluție 1280 x 800 pixeli, iar cel de-al doilea 1920 x 1080, următorul pas logic este un display QHD (2560 x 1440 pixeli). Dacă luăm în considerare și faptul că Samsung Gear VR folosește ca display un telefon Galaxy Note 4 care afișează în această rezoluție și că modelul Oculus DK2 folosea display-uri de Galaxy Note 3, am putea presupune că Oculus a folosit tot display-uri Samsung și pentru realizarea lui Crescent Bay. [7]
O altă noutate este integrarea unei perechi de căști în pachetul Oculus Rift, care adaugă sunet 3D. Căștile sunt însă detașabile, utilizatorii având posibilitatea de a folosi propriile căști în cazul în care nu agrează sunetul produs de cele standard.
Crescent Bay va rămâne pentru o perioadă doar un prototip intern, care va fi îmbunătățit în lunile următoare. Probabil că această variantă va deveni Oculus Rift Development Kit 3 la un moment dat și odată cu disponibilitatea lui ne vom afla cu un pas mai aproape de o lansare a unui produs final, destinat consumatorilor.
Despre C++ și folosirea sa în Unreal Engine
Scurt Istoric al C++
C++ este un limbaj de programare general, copilat, multi-paradigmă, cu verificarea statică a tipului variabilelor ce suportă programare procedurală, abstractizare a datelor și programare orientată pe obiecte.
Bjarne Stroustrup de la Bell Labs a dezvoltat C++ în anii 1980, ca o serie de îmbunătățiri ale limbajului C. Acestea au început cu adăugarea noțiunii de clase, apoi cu funcții virtuale, suprascrierea operațiilor, moștenire multiplă, șabloane și excepții. Limbajul a fost standardizat în 1998 ca și ISO 14882:1998 [8], versiunea curentă fiind din 2003, ISO 14882:2003.
Bjane Stroustrup a început să lucreze cu clase în C încă din 1979. Ideea de a crea un limbaj a venit din experiența de programare pentru pregătirea tezei sale de doctorat. A avut doua limbaje ca reper și anume Simula care avea facilități foarte folositoare pentru proiecte mari dar el era destul de lent, și BCPL care era foarte rapid dar nu era suficient de dezvoltat pentru proiecte foarte mari. Începând să lucreze la pentru Bell Labs, a avut sarcina de a analiza nucleul UNIX și calculul distribuit. De aici el a început sa îmbunătățească C-ul cu facilități asemănătoare cu Simula. A ales C-ul deoarece era simplu și portabil, primele facilități adăugate fiind clasele, clasele derivate, verificarea tipului, argumentelor și valorile implicite.
După ce a proiectat toate clasele, el a denumit proiectul ”C cu clase”, la care a scris de asemenea și Cfront, un compilator care genera cod sursă C din cod C cu clase. Abia în 1982 numele limbajului a fost schimbat din ”C cu clase” în C++, fiind adăugate noi facilități ca funcțiile virtuale, supraîncărcarea operatorilor și a funcțiilor, referințele, alocarea dinamica, constantele, etc. Prima lansare comercială a sa a fost în 1985.
După ce a fost lansată prima versiune in 1985 a cărții ”The C++ programming language”, în 89 a fost lansată versiunea 2.0 a limbajului de programare cu moștenire multiplă, clase abstracte, funcții statice, constante și membri protected. În 90 a fost lansată următoarea carte oferind suport pentru noile standarde, adăugând template-uri, excepții, spații de nume și tipul boolean.
În timpul evoluției sale a evoluat și o bibliotecă standard. Prima adăugare a fost biblioteca de intrări/ieșiri, care oferea facilități pentru a înlocuii funcțiile tradiționale de C, cum ar fi printf sau scanf. În timp, cele mai cele mai semnificative adăugiri au fost implementate într-o bibliotecă standard STL.
Programarea Orientată pe Obiecte
Cu cel mai simplu înțeles, un obiect este un lucru sau o entitate din lumea reală. Atunci când programatorii crează programe, ei scriu instrucțiuni care operează cu diverse lucruri, cum ar fi variabile sau fișiere. Obiectele diferite posedă operații diferite pe care programele le efectuează asupra acestor obiecte. Fiind dat un obiect fișier, programul poate executa operații cum ar fi citirea, scrierea sau tipărirea fișierului. Programele in C++ definesc obiectele în termeni de clase.
Obiectul reprezintă o colecție de date și un set de operații, numite metode, care instrumentează datele. Programarea orientată pe obiecte este calea prin care programele sunt gândite în termeni de obiecte care alcătuiesc un sistem. Dupa ce un obiect este identificat, se pot determina operațiile pe care sistemul le efectuează în mod obișnuit asupra obiectelor.
Începând cu C++, programarea orientată pe obiecte este foarte importantă existând numeroși termeni de inginerie software pe care programatorii îi utilizează frecvent în programare. Decât să construiască o colecție de biblioteci de funcții, programarea orientată pe obiecte construiește biblioteci de clase. De asemenea, atunci când se crează programe legate de grupuri de obiecte, de datele și metodele lor, programatorul înțelege mult mai repede un program fiind orientat pe obiecte decât un program procedural.
În programarea orientată-obiect un sistem informatic este privit ca un model fizic de simulare a comportamentului unei părți din lumea reală sau conceptuală. Acest model fizic este definit prin intermediul unui limbaj de programare și el se concretizează într-o aplicație ce poate fi executată pe un sistem de calcul. Obiectele sunt elemente cheie ale programării orientate-obiect și ele reprezintă entități individuale reale sau abstracte cu un rol bine definit în contextul unui sistem. Un obiect are o identitate, o stare și un comportament. Tot ceea ce obiectele cunosc (starea) și pot efectua (comportamentul) este exprimat prin intermediul unor mulțimi de proprietăți (sau atribute) și operații (sau metode). Astfel, starea unui obiect este dată de valorile proprietăților acestuia la un moment dat. Operațiile sunt proceduri sau funcții care permit modificarea acestor valori și implementează comportamentul obiectelor.
Aplicațiile orientate-obiect sunt compuse dintr-o mulțime de obiecte care interacționează și comunică între ele prin intermediul mesajelor. Un mesaj reprezintă o cerere adresată unui obiect de a executa o anumită operație. Mesajul este compus din trei elemente distincte: identitatea obiectului căruia îi este adresat mesajul, numele operației care se dorește a fi executată și o listă de parametri necesari executării operației. Aceste trei informații sunt suficiente pentru ca un obiect care recepționează un mesaj să poată executa operația dorită. Mecanismul transmisiei de mesaje permite prin urmare comunicarea între obiecte aflate în contexte (sau procese) diferite sau pe diferite sisteme de calcul.
Mulțimea de proprietăți ale unui obiect formează nucleul acestuia. O parte din operațiile sale sunt vizibile în exterior și ascund nucleul de celelalte obiecte dintr-un sistem. Ascunderea proprietăților interne ale unui obiect și "oferirea" de operații care să le manipuleze poartă numele de încapsulare. Încapsularea este utilizată pentru a ascunde detalii de implementare de alte obiecte aflate în sistem. Astfel poate fi modificată implementarea unui obiect fără a afecta alte părți ale sistemului din care acesta face parte. Încapsularea conferă modularitate, implementarea unui obiect putând fi modificată sau actualizată independent de implementarea celorlalte obiecte din sistem. Mulțimea tuturor operațiilor unui obiect care sunt vizibile în exteriorul acestuia poartă numele de interfață a obiectului.
Interfețele obiectelor definesc tipul acestora. Obiectele care au aceeași interfață aparțin aceluiași tip. Deoarece interfața este o submulțime a operațiilor care definesc comportamentul obiectelor, ea mai poartă numele de comportament extern observabil. Identificarea unei mulțimi de obiecte care au proprietăți și comportamente comune poartă numele de clasificare. Clasa este un alt concept de bază al programării orientate-obiect, și ea reprezintă o abstractizarea a elementelor (proprietăților și operațiilor) comune partajate de o mulțime de obiecte și descrie implementarea acestora.
Obiectele sunt reprezentări concrete ale claselor, iar procesul de creare a unui obiect pe baza definiției unei clase poartă numele de instanțiere. Alături de noțiunile de obiect și clasă, programarea orientată-obiect introduce un mecanism puternic și natural de organizare și structurare a sistemelor informatice: mecanismul de moștenire. Moștenirea permite definirea de noi clase (numite sub-clase) pe baza unor clase deja existente (super-clase) într-o manieră incrementală. Sub-clasele vor moșteni toate proprietățile și operațiile super-claselor. Relația de moștenire între clase induce organizarea claselor în ierarhii.
Specificațiile proiectului
Funcționalitate
Ca și funcționalitate, proiectul oferă o interfață relativ ușor de utilizat, putând interacționa cu programul fără nici o problemă. Utilizatorul trebuie să își pună casca Oculus Rift pe cap împreună cu căștile și să interacționeze cu meniul sau să se deplaseze într-un anumit caz pe o anumită zonă pentru a porni cursul demonstrativ.
Prima interacțiune pe care participantul la cursuri o are este cu meniul de început. Este format dintr-un fundal negru cu 3 butoane: ”Classroom Course”, ”Interactive Course” și ”Exit”.
Dedicat pentru a demonstra doar cum se poate realiza un curs virtual demonstrativ, am decis să implementez două camere diferite de prezentare, accesate din meniul prezentat anterior. În prima cameră este vorba despre o sală unde sunt prezente scaune, bănci și o tablă într-un stil arhitectural relativ modern. Odată încărcată sala, va porni cursul printr-un sunetul de fundal despre care vorbesc aleator despre un subiect. Pentru că proiectarea 3D este deja un alt domeniu ce necesită alte studii, am decis să vorbesc în special despre sistemul solar pentru a lucra cu elemente sferice. Pe masa participantului la cursul virtual, este prezent demonstrativ un sistem solar format din câteva planete. Tabla ce va fi prezentă în sală va conține o fotografie sau un video aleator, pentru a putea prezenta posibilitatea de a insera un fișier grafic din afara lumii 3D, pentru a-l prezenta la curs.
A doua cameră, care poate fi accesată din meniu apasând tasta Escape, este o platforma întinsă interactivă ce are doua zone marcate pentru a începe cursurile. În această cameră am inserat un model de bază 3D, inserat prin funcționalitățile de start din Unreal Engine, care atașat la o camera de vizualizare ofera participantului la curs posibilitatea de deplasare de-a lungul platformei. Odată ce utilizatorul a intrat în zona marcată, un sunet de fundal împreuna cu elementele grafice specifice cursului vor porni. Elementele grafice vor apărea prin platformă, ele fiind inițial sub platformă și neputând fi văzute încă de la intrarea in platformă. Odată ce utilizatorul iese din zona marcată pe platformă, sunetul se va opri iar elementele grafice vor întra din nou în platformă. Am ales două cursuri pe această platformă, un curs despre sistemul solar, el fiind reprezentat într-o formă uriașă în jurul utilizatorului, iar al doilea curs este despre crearea și elementele de bază din structura unui site web.
Din punct de vedere al elementelor hardware folosite pentru funcționare folosesc: Oculus Rift – Kitul de dezvoltare 2 ce îl am primit ca sponsorizare și un calculator de tip desktop cu componente destul de ridicate pentru randare și proiectare.
Din punct de vedere software, pentru proiectare și rulare folosesc sistemul de operare Windows 7 cu motorul grafic prezentat în capitolele anterioare: Unreal Engine 4.7.
Procesarea și stocarea datelor
Fișierele importate și create, precum și toate elementele grafice incluzând animațiile sunt stocate în folderul proiectului. Legăturile între funcții, evenimente și animații, setarile, istoricul, evidența fișierelor și blueprint-urile sunt salvate într-o bază de date internă, care este compilată frecvent după fiecare modificare în interiorul proiectului.
Din păcate nu am realizat un proiect online cu caracter personalizat sau cel puțin bazat pe o bază de date locală în care stochez datele despre participant și salvez progresul acestuia. Unreal Engine oferă și suport pentru baze de date externe precizând separat parametrii de conectare și manangement în cod, desigur clasele ce le folosesc programatorii.
Am menționat mai devreme de blueprint-uri, toate legăturile dintre elementele grafice, funcțiile create sau de bază, evenimente, animații, sunet, sunt proiectate și legate cu ajutorul lor. Este un sistem special de proiectare și design arhitectural al legăturilor între toate elementele ce le folosește un programator în Unreal Engine, ele fiind prezentate sub forma de diagrame UML. Legăturile, inserarea de elemente, ștergerea, sunt realizate in general cu mouse-ul prin drag-and-drop. Le-am inclus la acest subcapitol deoarece sunt folosite pe post de bază de date arhitecturală.
Costuri
Costurile de realizare a aplicației, pentru mine, au fost doar la nivel de timp. Din punct de vedere hardware, componentele calculatorului ce îl stăpânesc sunt foarte ridicate și face față la proiectarea 3D chiar și in programe mult mai performante precum Catia sau 3DsMax. Oculus Rift a fost sponsorizat gratuit din partea unui club din Timișoara numit TheHub, doar pentru licență, specificând ulterior dupa terminarea sa că resursele folosite pentru testarea realității virtuale au fost din partea lor.
Din punct de vedere software, Unreal Engine a fost de curând lansat cu versiunea 4.0 gratuit. Mai precis din Martie, acesta a trecut de la abonament de 19$ pe lună la abonamente gratuite din cauza competiției la același nivel din partea Unity 3D. La câteva săptămâni dupa ce Unity 3D a lansat versiunea 5.0 gratuită cu posibilitate gratuită de profit din proiecte cu până la 100.000$, ulterior plătindu-se licența în valoare de 1200$, Unreal Engine a lansat versiunea 4.0 gratuită cu posibilitatea de câștig fără nici o plată până la valoarea de 3000$. Desigur, acesta cere un procent de 5% din câștiguri odată ce firma depășeste acel prag stabilit. În același timp, un alt competitor foarte important CryEngine, pe care am dorit inițial să dezvolt proiectul din cauza graficii uimitoare ce o randează și a elementelor gratuit de început, a trecut de la abonamente de peste 20$ la abonamente de 9$.
Din punct de vedere al realizării proiectului de către un alt dezvoltator, costurile se ridică la minim 700$ pentru un calculator decent, acesta fiind necesar la lucrul cu motorul grafic intr-un mod oarecum fluent. Se adaugă costurile pentru Oculus Rift care la momentul actual versiunea de dezvoltare 2, cu tot cu transport, ajunge la un cost de 450$. Și desigur căști, un microfon și o cameră video (pentru filmulețe), necesare pentru a crea și a asculta componentele sonore din cursuri.
Costurile la nivel de utilizator se rezumă doar la un calculator de performanță medie, undeva la 300$ și desigur Oculus Rift care în Romania, cu tot cu transport, ajunge la pretul de 450$.
Studiu de fezabilitate
Întrebarea pe care mulți și-o pun în legătura cu proiectul ce îl dezvolt este: de ce am ales acest proiect când știu că nu mulți își permit Oculus Rift, pe lângă faptul că este în curs de dezvoltare? Raspunsul meu e simplu: ne gândim, pe larg, la prețul gadgeturilor noi apărute pe piață, la prețul noilor invenții la nivel de tehnologie și în cât timp acestea scad chiar la jumătate. Oculus Rift, din fericire, nu este singurul de pe piața actuală, din urmă venind proiecte hardware similare precum: HTC VIVE, Microsoft Hololens, Sony Morpheus, și multe altele. Ba chiar și E-Boda din București a creat o cască pentru bugete mici numită: E-Boda Avatar.
Ca și influență pe piață, va fi foarte apreciat și foarte folosit, mai ales dacă și sistemul educațional va merge tot mai mult înspre mediul online. Știm Coursera destul de bine, modul cum acest site web funcționează, susține cursuri din cadrul multor universități mari în lume prin video-uri de prezentare, documentație suficientă, secțiune specială de interacțiune cu profesorul universitar, cu colegii de curs. Totul se rezumă la studiu într-un mod mult mai avansat. Mi se pare interesantă ideea de a oferii cursuri complet gratuite pentru oricine, fără zeci de documente și birocrație pentru a te înscrie la cursuri, și doar în cazul în care participantul dorește diplomă de calificare a cursului, acesta plătește o taxă destul de modestă contra cost după ce a trecut o serie de teste.
Investiția în dezvoltarea proiectului, chiar și în particular de către profesori pentru elevi, se merită pe deplin, mai ales pentru faptul că majoritatea lucrurilor se prevăd că merg înspre lumea virtuală. Tot mai multe companii de proiectare 3D, dezvoltarea jocurilor, simulatoarele pentru avioane și mașini, se axează foarte mult pe device-urile de realitate virtuală. Pe lângă asta și companiile de hardware privind plăcile video, procesoarele, se luptă pentru a elimina latența cât mai mult pe aceste device-uri, cerând resurse foarte mari pentru a funcționa fluent.
Proiectare și implementare
Arhitectura
Unreal Engine 4.7 este bazat foarte mult pe folosirea Blueprint-urilor, mai precis, un sistem de proiectare tehnică a funcțiilor din interiorul proiectelor. Fiind foarte ușor de utilizat, toate funcțiile realizate de către utilizator, funcțiile de bază, elementele 3D, evenimentele și animațiile sunt reprezentate asemănător diagramelor UML ce pot fi legate manual de către programator. În general Unreal Engine are suficient de multe funcții încât programarea suplimentară nu este tot timpul necesară pentru proiecte la scară mică.
Pentru crearea meniului a fost inițial nevoie de proiectarea sa. Unreal Engine are o funcționalitate numită ”Widget Blueprint”, care ajută proiectantul să creeze meniuri sau widgeturi interactive cu utilizatorul, adăugând elemente precum butoane, imagini, animații cu posibilitatea de atribuire de evenimente: de exemplu click pe element, mouse-ul intrând/ieșind dintr-o anumită zona din widget, etc. Proiectarea widgetului este foarte simplă printr-o interfață separată în care elementele sunt inserate și poziționate prin drag-and-drop. Se poate vedea in figura 3.1. panoul de editare al meniului.
FIG. 3.1. Widget Blueprint – Interfața de editare a meniului
Meniul ce l-am implementat este doar compus din 3 butoane cu un background negru, deoarece nu am alte funcționalități ce necesită implementate iar partea de design a sa nu necesită efecte speciale.
Meniul în general la un joc nu este personalizabil, pe când opțiunile din submeniuri pot apărea în interfața din zonele libere, fără a se interpune cu meniul principal și fără a avea caracteristici care să creeze confuzie cu elemente predefinite ale interfeței.
În figura 3.2. este prezentată structura primului stadiu în care activez meniul și afișez cursorul mouse-ului la începerea proiectului, el fiind iniția ascuns.
FIG. 3.2. Blueprint – Arhitectura de început a meniului
După cum se vede, odată ce este acționat evenimentul de lansare a aplicației ”Begin Play”, creez un obiect de tip Menu ce se vede selectat în opțiunea Class, îl adaug în viewportul aplicației selectându-l la target în funcția ”Add To Viewport”, după care setez cursorul mouse-ului pe ON bifând căsuța din dreptul ”Show Mouse Cursor” fiind o opțiune booleană și selectând ca și țintă controrele jucătorului (perifericele).
Folosirea VR nu doar in jocuri
Da
Comunicare
Rezultate
Concluzii
Bibliografie
[1] Gregory, J. Game Engine Architecture. Wellesley, Massachusetts : A K Peters, Ltd., 2009
[2] Lily, P. Doom to Dunia: A Visual History of 3D Game Engines. Maximumpc, 2009. http://www.maximumpc.com/article/features/3d_game_engines.
[3] Rihal, D. The History of First-Person Shooters. msu.edu, 2007.
[4] Stead, C. The 10 Best Game Engines of This Generation. ign.com, 2009. http://www.ign.com/articles/2009/07/15/the-10-best-game-engines-of-this-generation.
[5] Game Designer, What does a Game Designer do?, Creative Skillset (2015) http://creativeskillset.org/job_roles_and_stories/job_roles/331_game_designer
[6] "Oculus Rift virtual reality headset gets Kickstarter cash". BBC. (2012).
[7] "Extended interview: The Oculus Rift, in its creators' own words". (2015).
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: Aplicatie Ce Ofera Un Curs Virtual Demonstrativ In Oculus Rift (ID: 149416)
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.
