Din 1999, am lucrat prin compania mea, TheGameCreators, pentru a face mai ușor pentru toată lumea să facă jocuri. Anul trecut am inceput sa dezvoltam cu SDK RealSense SDK si camera foto, care iti permite sa captezi imagini 3D in timp real. (De fapt, am câștigat RealSense App Challenge de la Intel cu ajutorul aplicației virtuale 3D Video Maker!) Nu ar fi o surpriză că m-am uitat la modul în care RealSense poate fi folosit pentru dezvoltarea jocului, iar în acest tutorial voi împărtăși un exemplu: cum pentru a scana capul (sau jucătorul tău) în jocul tău.
Multe dintre caracterele jocului 3D vor include o imagine de textură 2D care este utilizată drept "piele" pentru modelul 3D, la fel ca în cazul Kila, de mai jos:
Stânga: textura lui Kila. Dreapta: Textura 2D aplicată modelului 3D. De la jocul Crearea caracterelor de joc: Kila.Puteți vedea o față distinctă în textura. Dacă doriți să schimbați fața personajului pentru a se potrivi cu propria dvs., este tentant să încercați să inserați o fotografie 2D plat pe textură. Cu toate acestea, aceasta nu dă rezultate bune, după cum se arată mai jos:
Rezultatul lipirii unei fotografii plate a unei fețe pe o textura a unui model 3D existent.E destul de îngrozitor. Problema este că textura feței nu se înscrie pe "structura osoasă" care stă la baza modelului.
Dispozitivele RealSense includ un proiector cu infraroșu și cameră foto, astfel încât să poată capta o hartă 3D de proiecție, precum și o fotografie 2D a oricărui lucru la care sunt îndreptate. Aceasta înseamnă că puteți regla textura 2D și modelul 3D al unui personaj pentru a se potrivi cu noua față.
Să presupunem că vrem să permitem jucătorilor noștri să facă câteva egoisme cu o cameră RealSense și apoi să le folosească pentru a crea un avatar 3D pentru ei.
Mai degrabă decât încercarea de a scana în tot corpul lor - și apoi de a crea un model 3D, textura și setul de animații de la asta - ar fi mai bine să cumpărăm un model 3D complet de la un site ca 3DOcean ...
... apoi tăierea capului:
Acest lucru face mult mai ușor dezvoltarea și testarea jocului; singurul lucru care va varia între avatarele jucătorului este capul.
Pentru a captura asemănarea player-ului, creatorul de caractere în timpul jocului trebuie să facă mai multe scanări ale capului lor, toate controlate cu precizie, astfel încât software-ul să poată cusca totul din nou împreună. (RealSense SDK-ul Intel a furnizat un exemplu care face doar acest lucru, poate fi rulat imediat din folderul binare precompilat.)
Desigur, veți dori să vă creați propriul scanner 3D pentru a vă potrivi proiectului, deci ceea ce urmează este doar o defalcare a modului în care ar putea funcționa tehnica pentru dvs..
Puteti lua fotografii separate si apoi incercati sa le conectati manual intr-o unealta de comert sau intr-un program mic. Cu toate acestea, problema cu scanarea 3D live este că există un om la celălalt capăt al acestuia, ceea ce înseamnă că ele se răsucesc, se deplasează pe locurile lor, se înclină înapoi și avansează în moduri subtile - și nu contează pentru pitch subtil, rotirea și răsucirea capului în sine. Având în vedere această tendință a capului de a schimba poziția și distanța de la cameră în timpul sesiunii de scanare, aceasta va duce doar la frustrare atunci când încercați să reasamblați fotografiile.
Dacă scanările dvs. sunt corecte, ați putea să amestecați ochiurile de plasă cu prima plasă pe care ați scanat-o și să efectuați ajustări dacă există un vertex în datele modelului spațial mondial sau să creați un punct de vârf al spațiului din lume dacă nu există vreodată anterior. Acest lucru va permite plasă de cap pentru a obține mai mult rafinat cu mai multe mostre player-ul oferă. Dezavantajul acestei tehnici este acela de a obține capul jucătorului să rămână într-o poziție centrală în timpul scanării și de a transforma acele date 3D în coordonate mondiale, creează unele provocări.
Tehnica perfectă este de a detecta markerii semnăturii în plasa scanată, pentru a obține o "fixare de vârf". Gândiți-vă la acest lucru, reprezentând poziția pe ocean, privindu-vă la stele; prin utilizarea constelațiilor, puteți să vă ocupați atât de orientarea și poziția dvs. relativă. Acest lucru este util în special când produceți oa doua plasă: puteți aplica același algoritm de detectare a markerului, puteți găsi același model și puteți readuce orientarea, poziția și trecerea scării din prima plasă. Odată ce ați compensat acest lucru, adăugarea celei de-a doua rețele la primul este un calcul simplu al transformării mondiale și apoi adăugarea datelor superioare de vârf la plasa originală. Acest proces se repetă până când nu mai există ochiuri pe care doriți să le depuneți, apoi treceți la pasul final.
Aceasta este cu siguranta partea Hard, dar nu este imposibil; amintiți-vă, există un demo de lucru în fișierele SDK pe care le puteți utiliza ca bază pentru a obține această funcționare în motorul jocului dvs..
Să presupunem că aveți un model 3D decent (și textura corespunzătoare) a feței jucătorului:
Un mugshot futurist.Putem acum să rămânem pe modelul corpului personajului:
Acordat, rezultatul este încă îngrozitor - dar nu am terminat încă. Putem lua o soluție dintr-una din multele pagini ale bibelui dezvoltatorilor de jocuri, una pe care o putem convinge este o caracteristică destul de frumoasă, spre deosebire de o hack-uri destul de sinistru.
Tot ce facem este să acoperim golurile cu o perucă și o pălărie:
Bine, acordat, am putea să lipim fața 3D pe fața unui cap 3D deja modelat, dar asta este mai distractiv. Dacă Team Fortress 2 este ceva de făcut, jucătorii se vor bucura de opțiunea de a personaliza capul și chipul avatarului cu diverse accesorii; ucidem două păsări cu o singură piatră!
Dacă doriți cu adevărat să evitați adăugarea de pălării și peruci la caracterul jocului, va trebui să îi atrageți jucătorul să le curețe sau să-și geluleze părul înainte de a face scanările. Cu cât sunt mai plăcute părul, cu atât este mai bine să fie scanată. Parul slăbit interferează cu aparatul de adâncime și produce reflexii împrăștiate care nu scanează bine.
Deși obținerea unei asemănări a unui jucător în joc în timpul runtime este posibilă, este un loc dificil de început. Dacă nu ați încercat acest lucru înainte, vă recomand să încercați mai întâi ceva mai simplu din punct de vedere tehnic: obțineți-vă propriul aspect (sau cel al unui actor) în joc.
Acest lucru este mai ușor din trei motive:
Și pe baza acestui ultim punct, puteți să vă faceți timp să faceți o scanare a întregului dvs. cap, nu doar a feței. De fapt, am făcut deja acest lucru într-un tutorial anterior. Să ridicăm unde a plecat și să trecem prin modul în care putem obține acest model în Unitatea 5.
După ce ați urmat tutorialul anterior, ar trebui să aveți un model FBX al capului și o hartă a texturii UV corespunzătoare.
Deschideți Unitatea, apoi creați un nou proiect și o scenă.
Clic Active> Importați un nou activ. Selectați modelul FBX pe care l-ați exportat din Blender.
Atunci când Unity importează obiectul, este posibil (și chiar probabil) că nu va importa textura sa, caz în care veți vedea o versiune gri-albă a ochiului dvs. de plasă:
Asta e OK - vom adăuga hartă textura următoare.
Selectează materiale , apoi faceți clic dreapta și selectați Importați un activ. Selectați fișierul PNG pe care l-ați salvat în Blender, apoi îl importați.
Acum veți vedea harta texturii alături de un material gri-alb cu același nume ca și plasa dvs. Faceți clic dreapta pe materialul gri-alb (în formă de minge) și ștergeți-l.
Întoarce-te la tine bunuri și faceți clic dreapta pe plasa pe care ați importat-o. Selectați Reimporta:
După ce reimportează, va crea materialul în mod corespunzător și vă va structura plasa:
Dacă modelul arată roz în previzualizarea obiectului, selectați pur și simplu un alt obiect (cum ar fi camera foto), apoi selectați din nou plasa pentru a îl reîmprospăta.
Acum sunteți gata să vă faceți capul în joc. Glisați obiectul spre scena. (Puteți face mai mare și mizeria în jurul cu perspectiva aparatului foto pentru a obține în vedere.)
Când ai lovit Joaca, ar trebui să vedeți obiectul redat corect:
Dacă doriți să ajustați textura pentru ao face mai mult sau mai puțin strălucitoare sau metalică, mergeți mai întâi la materiale și selectați versiunea în formă rotundă a texturii. În Inspector panou, puteți regla Metalic și Finete glisoare pentru a obține aspectul potrivit:
S-ar putea părea o cantitate excesivă de muncă doar pentru a obține părțile frontale ale unui cap într-o scenă virtuală, dar tehnicile pe care le-ați învățat în acest articol pot fi aplicate pentru scanarea și coaserea tot ceea ce doriți.
Abilitatea de a vă scana esența în computer și de a vă continua călătoria într-un peisaj virtual începe chiar aici cu scanarea unei singure fețe. Cum se vor schimba jocurile și atitudinile, pe măsură ce protagoniștii din joc încep să semene cu oamenii reali pe care i-ai putea întâlni în viața ta? Atunci când puneți o față pe cineva, acestea devin reale și va fi interesant să vedem cum se schimbă jocurile și jucătorii ca rezultat.
Programul Intel® Software Innovator sprijină dezvoltatorii independenți inovatoare, care au capacitatea de a crea și a demonstra proiecte în perspectivă. Inovatorii profită de oportunitățile de vorbire și demo la evenimente din industrie și întâlniri pentru dezvoltatori.
Zona dezvoltatorilor Intel® oferă instrumentele și instrucțiunile pentru dezvoltarea de aplicații cross-platform, informații despre platforme și tehnologii, eșantioane de coduri și expertiză de la egal la egal pentru a ajuta dezvoltatorii să inoveze și să reușească. Alăturați-vă comunităților noastre pentru internetul Lucrurilor, Android *, Tehnologia Intel® RealSense ™, Codul modern, Dezvoltator de jocuri și ferestre * pentru a descărca unelte, a accesa kit-uri dev, a-și împărtăși idei cu dezvoltatori asemănători și a participa la hackathons, concursuri, roadshows și evenimente locale.