Cum am creat o aplicație iOS pentru a filma un videoclip 3D (studiu de caz)
Publicat: 2022-03-10Echipa noastră a fost atrasă și de filmările 3D. Am studiat amănunțit caracteristicile aparatului vizual uman și detaliile tehnice ale fotografiei stereoscopice. Apoi, am decis să dezvoltăm o aplicație iOS pentru a filma videoclipuri 3D și a încărca videoclipurile pe YouTube. Ideea din spatele aplicației a fost de a facilita filmarea videoclipurilor 3D prin montarea a două iPhone-uri pe un cadru special - și am făcut-o! Așa a apărut aplicația Stereo Video Recorder.
Am decis să împărtășim cititorilor Smashing Magazine investigația noastră privind crearea de videoclipuri 3D. Am dori, de asemenea, să vorbim despre caracteristicile tehnice ale creării aplicației și să oferim desene detaliate ale cadrului utilizat pentru montarea iPhone-urilor.
Cum a început totul
În studiul nostru asupra caracteristicilor video 3D, am început cu experimente pe realitatea virtuală. Am construit un cadru din carton și am privit lumea prin intermediul a două iPhone-uri în format 3D. Detalii despre cercetarea noastră pot fi găsite pe blogul nostru. Vom merge mai departe aici.
Continuând această cercetare, am decis să creăm un alt prototip al aplicației, unul care să vă permită să înregistrați un videoclip 3D stereoscopic și să îl încărcați pe YouTube.
Stereoscopia este o modalitate de a crea iluzia de profunzime într-o imagine plată. Înregistrările stereo sunt cunoscute încă din secolul al XIX-lea. În crearea unui videoclip 3D stereoscopic, simulăm vederea binoculară. Datorită distanței dintre pupile, este mult mai ușor pentru creierul uman să analizeze volumul spațiului înconjurător - distanța până la obiecte. Stereoscopia binoculară este utilizată pe scară largă în industria filmului. Cu greu poți întâlni o capodopera de la Hollywood care să nu folosească formatul stereo.
Scopul prototipului aplicației noastre a fost să înregistreze videoclipuri simultan cu două camere iPhone diferite și apoi să îmbine fișierele video rezultate într-unul singur pentru a le vizualiza folosind orice ochelari 3D - de exemplu, Google Cardboard, o cască de realitate virtuală sau un televizor 3D.
Imagine stereo și percepția noastră asupra unei imagini 3D
Permiteți-mi să detaliez imaginile stereo și percepția noastră asupra imaginilor 3D. De fapt, stereografia funcționează ca ochii noștri, care au evoluat în timp. Deoarece există o distanță între cei doi ochi ai noștri, imaginile proiectate pe retinele ochiului stâng și dreptului sunt puțin diferite. Această diferență se numește paralaxă (un efect în care poziția unui obiect pare să fie diferită atunci când este privit din două poziții diferite). Cu toate acestea, observatorul nu vede două imagini separate. Aparatul vizual formează o percepție a unei singure imagini spațiale și poate simți volumul, distanța etc. Este important să înțelegem că aparatul vizual detectează, procesează și proiectează imagini spațiale și obiecte situate în spațiu în anumite puncte.
O înțelegere a modului în care funcționează aparatul vizual uman permite o investigare amănunțită a modului în care materialul vizual trebuie să fie pregătit și reprodus, astfel încât privitorul să poată avea un sentiment de imagine 3D completă.
Să privim totul în ordine.
Ca orice dispozitiv care funcționează în conformitate cu legile fizicii, aparatul vizual uman are propriile caracteristici și limitări.
În primul rând, trebuie să înțelegem că, în ceea ce privește procesul nostru vizual, ne concentrăm privirea doar asupra unui singur punct, numit punct de vedere (POV). De fapt, POV este punctul în care ochii sunt concentrați și prin care trec liniile de vedere stânga și dreapta. În funcție de distanța până la POV, unghiul dintre liniile de vedere ale ochilor stângi și dreptului va fi diferit. Ochii sunt îndreptați astfel încât liniile să convergă spre punctul de vedere. Aceste linii sunt paralele atunci când persoana privește în depărtare sau, cu alte cuvinte, în infinit.
Imaginile proiectate pe retină diferă ușor din cauza deplasării mici a ochilor. Acest lucru se manifestă de obicei sub forma unei deplasări a imaginii pe care persoana o privește - spre stânga pentru ochiul stâng și spre dreapta pentru ochiul drept. Acest fenomen, deja menționat, se numește paralaxă.
Cu toate acestea, aparatul vizual poate percepe volumul doar la anumite valori de paralaxă. În funcție de distanța până la obiect, paralaxa va fi diferită pentru obiectele apropiate și îndepărtate. Este posibil ca paralaxa să depășească valoarea limită și persoana să vadă nu un obiect 3D, ci o imagine bifurcată. Un experiment care implică schimbarea vederii de la obiectele apropiate la cele îndepărtate ar putea oferi o mai bună înțelegere a specificului acestui lucru.
După cum se poate vedea din figură, dacă vă fixați vederea pe primul plan, atunci obiectele din fundal vor începe să se bifurce. Dacă vă fixați vederea pe fundal, atunci imaginea din prim-plan se va bifurca. Această caracteristică a aparatului vizual joacă un rol esențial în caracteristicile fotografierii 3D și reproducerii imaginilor stereo.
În viața obișnuită, nu observăm acest efect pentru că suntem obișnuiți să urmărim un singur obiect, iar atunci când vă schimbați vederea, vederea se adaptează rapid la noile condiții. Cu toate acestea, atunci când încercăm să proiectăm artificial o imagine volumetrică folosind două imagini cu o paralaxă predeterminată, aparatul vizual nu se mai poate adapta la fel de repede ca de obicei. Pentru ca aparatul vizual să funcționeze într-un mod normal, echipamentul video 3D trebuie ajustat la ochii privitorului, analizând unde se află punctul de observare. Acest echipament ar trebui să creeze și imagini stereo cu paralaxa necesară.
Cu toate acestea, implementarea acestui lucru este foarte dificilă din punct de vedere tehnic. De obicei, se folosește o schemă simplă cu parametri geometrici și tehnici de fotografiere fix. Acești parametri vor fi diferiți pentru vizualizările apropiate și îndepărtate. Prin parametri geometrici și tehnici, înțelegem câmpul vizual al camerelor, deplasarea orizontală a camerelor față de centru, unghiul de rotație al camerelor și punctul de convergență al camerelor.
Prin urmare, nu ați putea fotografia la fel de apropiate și de la distanță de obiecte dacă aveți un singur set de echipamente de fotografiere (două camere și un cadru). Mai exact, ai putea filma, dar ar fi extrem de incomod pentru o persoana sa urmareasca un videoclip in care, de exemplu, echipamentul este reglat pentru o vedere la distanta dar filmeaza o vedere de aproape, sau invers, cu efectul stereo. slab exprimată în fundal.
De la idee la practică: cum se montează iPhone-urile
Să revenim la ideea noastră. Am decis să dezvoltăm un prototip de aplicație mobilă care poate înregistra videoclipuri 3D stereo. Având în vedere toate cele de mai sus, a trebuit să evaluăm următoarele:
- posibilitatea de bază de a fotografia o imagine stereo folosind două iPhone-uri;
- gama efectivă de distanțe care ar asigura o percepție stereo de înaltă calitate și confortabilă, ținând cont de condițiile obișnuite de utilizare a unei camere.
Când am fost foarte aproape de a crea un prototip, primul lucru pe care l-am făcut a fost să evaluăm potențialul camerei iPhone pentru sarcina noastră. Am fost plăcut surprinși să descoperim că iPhone-ul oferă un unghi de vedere acceptabil pentru o fotografie de aproape. După cum am menționat deja, doar plasarea a două camere una lângă alta nu este suficientă pentru a obține un efect stereo bun. De obicei, algoritmul de calcul al fotografierii începe cu setarea parametrilor planului, adică distanțele până la cele mai apropiate și mai îndepărtate obiecte și distanțele dintre obiectele din planul cadrului. Parametrii de instalare sunt apoi selectați pe baza acestor date.
Un calcul simplificat al distanței dintre camere se poate face pe baza acestei formule:
-
Parallax<sub>fore</sub>
setează deplasarea maximă a imaginii din prim-plan atunci când cadrele perechilor stereo se suprapun. -
L<sub>fore</sub>
= distanța până la obiectul din prim-plan -
f
= distanța focală a lentilei -
L
= distanta pana la punctul focal al lentilei -
M
= zoom cadru
În cazul nostru, a trebuit să schimbăm ușor algoritmul, deoarece folosim o cameră standard și, în consecință, distanța focală a obiectivului este setată rigid. Sarcina noastră a fost să obținem un efect stereo confortabil și o gamă acceptabilă de distanțe până la obiectul care trage. Așadar, a trebuit să efectuăm mai multe experimente - aranjarea ambelor camere una față de alta - pentru a găsi distanța necesară între centrele lor (distanța dintre centrele camerelor) și unghiurile de convergență.
Pentru a simplifica sarcina în procesul de prototipare, am decis să nu rotim camerele pentru a obține convergența la un anumit punct, ci să folosim convergența la infinit. S-a dovedit că, pentru a obține cel mai bun rezultat, este necesar să se regleze cu precizie unghiul de convergență al camerelor. Și dacă ținem cont de faptul că ne-am propus să realizăm un cadru de carton care să fie folosit pentru montarea iPhone-urilor, atunci reglarea unghiului de convergență al camerelor devine practic imposibilă. Așadar, după o serie de experimente, am ajuns la un compromis, obținând echilibrul optim între distanța dintre camere pentru a permite filmarea în zona apropiată și obținerea unui efect stereo bun.
Scopul nostru a fost să dezvoltăm cel mai simplu cadru pentru iPhone-uri, unul care să fie ușor de fabricat, să fie comod de operat, să ofere parametrii necesari de fotografiere și să aibă rigiditatea necesară. Așadar, am ales un model 3D care poate fi realizat din material plastic sau spumă (polistiren, în acest caz) prin frezare sau printare 3D. În viitor, ne vom dori, desigur, să dezvoltăm un dispozitiv care este mai simplu de realizat - de exemplu, un dispozitiv din carton.
Singura limitare hardware în acest moment este că trebuie să utilizați aceleași dispozitive, cu camere absolut identice.
Mai jos sunt prezentate desene detaliate ale cadrului pentru diferite versiuni de dispozitive cu dimensiuni de ecran de 4,0, 4,7 și 5,5 inchi — potrivite pentru iPhone 6+ și 6S+, pentru 6, 6S și 7 și pentru 5 și 5S.
Aplicație pentru înregistrare video 3D stereoscopică
Aplicația rulează simultan pe două dispozitive, dar fotografierea este controlată de la unul dintre dispozitive, așa că nu este nevoie să controlați procesul de fotografiere într-un mod special.
Într-o formă simplificată, scenariul de utilizare standard pentru aplicație constă în următoarea secvență de acțiuni:
- Montați cele două iPhone-uri pe cadru.
- Rulați aplicația pe cele două dispozitive.
- Determinați care dintre dispozitive va servi ca master și care ca slave. Începeți înregistrarea de pe dispozitivul principal. (Nu faceți nicio acțiune suplimentară pe al doilea dispozitiv.)
- După înregistrare, așteptați sincronizarea fragmentelor înregistrate și redarea unui videoclip gata de încărcare pe YouTube.
- Încărcați videoclipul pe YouTube în orice moment după sincronizare, apoi vizualizați-l pe televizorul 3D sau cu ochelari de realitate virtuală.
Este de remarcat faptul că activitatea principală are loc doar pe unul dintre iPhone-uri, dispozitivul principal. Pe acest iPhone începem filmările. Videoclipul este procesat și încărcat pe YouTube și pe dispozitivul principal. Este nevoie de ceva timp pentru a pregăti videoclipul pentru încărcare pe YouTube. Aceasta va depinde de performanța dispozitivelor utilizate și de calitatea conexiunii dintre dispozitivele master și slave.
Al doilea iPhone, care acționează ca sclav, este folosit doar ca a doua cameră. La sfârșitul filmării, trimite fragmentul video către dispozitivul principal.
Capturile de ecran ale ecranului principal al aplicației, care afișează galeria de videoclipuri filmate, sunt afișate mai jos. Videoclipurile pot fi vizionate atât prin intermediul unui player încorporat, cât și pe YouTube. Aici, puteți urmări, de asemenea, modul în care alte roluri de filmare (master și slave) sunt atribuite dispozitivelor.
Obstacole tehnice
Desincronizare
Toate manipulările cu fragmentele video sunt efectuate cu ajutorul cadrului puternic AVFoundation, folosind, dacă este posibil, accelerarea hardware.
Pentru a încărca pe YouTube, fragmentele video sunt lipite cadru cu cadru, unul lângă altul. Evident, fiecare cadru din stânga ar trebui să se potrivească cu cel din dreapta în timp. Cu cea mai mică întârziere în cadrele uneia dintre surse, efectul stereo va fi pierdut sau distorsionat (mai ales în scenele dinamice), iar imaginea va apărea dublată.
Pentru a rezolva această problemă, am început să înregistrăm video pe dispozitive în același timp. De fapt, înregistrarea începe nu imediat după apăsarea butonului de pornire, ci după o scurtă întârziere în care se activează un anumit algoritm - foarte asemănător cu modul în care protocolul de precizie a timpului (PTP) măsoară deformarea ceasului. Deci, am putut iniția înregistrarea video cu o divergență de 30 până la 50 de milisecunde, care, în cel mai rău caz, corespunde cu aproximativ 1 cadru de desincronizare.
Erori în conectivitate multipeer iOS
Am folosit biblioteca nativă iOS Multipeer Connectivity pentru a stabili comunicarea între cele două dispozitive. Această bibliotecă stabilește o conexiune directă între dispozitivele din aceeași rețea Wi-Fi, precum și prin Bluetooth sau folosind ceva similar cu Wi-Fi Direct pe iPhone. Astfel, puteți filma și sincroniza fragmente video chiar și în câmp deschis, fără o rețea de internet wireless sau mobilă. Dar este necesară o conexiune la internet pentru a trimite videoclipul pe YouTube de pe dispozitivul principal.
Principalul motiv pentru care am decis să folosim această bibliotecă este că stabilește comunicarea între cele două dispozitive atunci când nu sunt conectate la aceeași rețea. Evident, în condiții proaste de fotografiere 3D stereo, cel mai mult se poate aștepta este o conexiune 3G. Pentru a filma un videoclip 3D, este vital să puteți transmite – cu întârziere minimă – pachete de date pentru sincronizare. În plus, dacă nu ar exista conexiune la internet, nu am putea filma. Prin urmare, biblioteca Multipeer Connectivity a devenit un colac de salvare. În plus, este o soluție nativă pentru platforma Apple.
Cu toate acestea, este de remarcat faptul că nu totul a decurs exact așa cum ne-am dorit. În timpul integrării cu Multipeer Connectivity, au fost detectate multe erori, iar întreaga bibliotecă a fost extrem de instabilă în funcționarea sa. Majoritatea caracteristicilor declarate au existat doar în teorie. Când dispozitivele funcționează în același segment de rețea, Multipeer Connectivity funcționează mai eficient; conexiunea este stabilită pentru o perioadă de timp acceptabilă; se realizează dispersia permisă a timpului de livrare a mesajului.
Cu toate acestea, dacă avem, relativ vorbind, condiții proaste de fotografiere 3D stereo sau, să zicem, există multe dispozitive mobile într-un singur loc, atunci stabilirea unei conexiuni devine asemănătoare cu o loterie. Avem senzația că biblioteca Apple nu este încă pe deplin dezvoltată și este încă destul de brută.
Conectarea dispozitivelor
Am implementat protocolul de conectare automată în versiunea inițială a prototipului nostru. Protocolul în sine constă dintr-un set de reguli prin care un coordonator este ales dintre dispozitivele egale – pe baza unei majorități – la momentul inițial.
Apoi, coordonatorul colectează periodic statistici de telemetrie de la fiecare dispozitiv prin trecerea unui marker special într-un cerc între dispozitivele slave. Pe baza acestor date de telemetrie, sunt comparate perechi de dispozitive montate pe cadru. După ce o pereche a fost identificată, un master și un slave sunt alocați în pereche și se stabilește o conexiune directă între ei. În această etapă, legătura este completă.
Căutări automate și independente
Atunci când a fost necesar, s-au efectuat căutări automate și independente (pe baza unor identificatori unici) pentru dispozitivele care au participat la sesiunile anterioare pentru sincronizare (obținerea pistelor video înregistrate în cazul în care datele nu s-au încărcat pe dispozitivul principal în momentul înregistrării). Citirile accelerometrului au fost folosite în principal pentru a identifica dispozitivele care corespund perechii. Coordonatorul a calculat corelația dintre potențialele perechi. Dacă corelația a depășit un anumit prag, dispozitivele au fost considerate perechi potențiale, iar caracteristicile secundare au fost ulterior testate.
Deoarece nu am putut depăși pe deplin problemele menționate mai sus cu Multipeer Connectivity, am decis să renunțăm temporar la conectarea automată, deoarece acest lucru ar fi afectat foarte negativ utilizatorul mediu și ar fi stricat experiența utilizatorului.
Cu ce am ajuns
În cele din urmă, am realizat o aplicație foarte interesantă și de înaltă calitate. Vizionarea unui videoclip înregistrat prin această aplicație vă oferă același sentiment pe care îl aveți vizionarea de filme 3D la teatru.
Desigur, ochiul uman funcționează puțin diferit: liniile sale converg într-un anumit punct din spațiu și depind de punctul de focalizare. În cazul nostru, ochii se uită întotdeauna în paralel. Cu toate acestea, chiar și cu acest fapt, efectul stereo este foarte pronunțat: volumul spațiului se simte în prim-plan, mijloc și fundal aproximativ la fel ca pe ecran.
Aveți nevoie de ochelari VR sau TV 3D pentru a viziona corect acest videoclip.
Așadar, am făcut posibilă utilizarea aplicației Stereo Video Recorder pentru a filma video stereo 3D pe cont propriu, pentru nevoile dvs. de afaceri sau doar pentru distracție!
Lucrul la bug-uri și planuri de viitor
Scopul nostru a fost atins: am studiat criteriile pentru crearea unui videoclip 3D și am creat o aplicație care permite oricărui utilizator să creeze un videoclip stereo. Dar nu este totul atât de ușor pe cât pare. Trebuie să lucrăm la unele lucruri. Am avut multe probleme cu biblioteca Multipeer Connectivity. Vrem fie să o înlocuim, fie să găsim o soluție, astfel încât aplicația să funcționeze bine cu acces limitat la internet.
De asemenea, trebuie să:
- implementați focalizarea sincronă și măsurarea expunerii pe cele două dispozitive, precum și implementarea înregistrării pistelor audio stereo;
- dezvoltarea unui cadru mai pragmatic pentru dispozitive;
- integrarea mecanismului automat de împerechere a dispozitivelor;
- să ofere suport pentru diferite opțiuni de dispozitiv și să poată face față diferitelor rezoluții video (momentan, putem filma videoclipuri doar cu aceleași versiuni de iPhone - de exemplu, un iPhone 5S poate fi asociat doar cu un alt iPhone 5S);
- creați o versiune pentru Android a aplicației.
Aplicația noastră Stereo Video Recorder este deja în App Store. Îl puteți folosi pentru a crea videoclipuri 3D. Suntem siguri că tehnologia va continua să se dezvolte și că în cele din urmă vor exista mult mai multe soluții pentru crearea video stereoscopic. Vom încerca să ținem pasul cu vremurile.
Vă rugăm să lăsați comentariile și ideile dvs. despre utilizarea acestei aplicații. Am fi recunoscători pentru opinia și feedback-ul dumneavoastră.
Citiți suplimentare despre SmashingMag:
- Patru moduri de a crea o aplicație mobilă, partea 1: iOS nativ
- Crearea de prototipuri a aplicațiilor iOS și Android cu Sketch (cu un Freebie)
- Viitorul video în web design
- Elementele de bază ale automatizării testelor pentru aplicații, jocuri și web mobil