Comment nous avons créé une application iOS pour tourner une vidéo 3D (étude de cas)

Publié: 2022-03-10
Résumé rapide ↬ Peu de temps après qu'Hollywood ait sorti ses premiers films en 3D, le format du film a rapidement gagné en popularité dans le monde entier. Grâce aux développements de la technologie d'enregistrement vidéo, tout utilisateur peut désormais filmer lui-même une vidéo. Vous pouvez faire un enregistrement stéréo des événements mémorables de votre vie ou créer du matériel merveilleux pour votre entreprise.

Notre équipe a également été attirée par le tournage 3D. Nous avons étudié en profondeur les caractéristiques de l'appareil visuel humain et les détails techniques de la photographie stéréoscopique. Ensuite, nous avons décidé de développer une application iOS pour filmer des vidéos 3D et télécharger les vidéos sur YouTube. L'idée derrière l'application était de faciliter le tournage de vidéos 3D en montant deux iPhones sur un cadre spécial - et nous l'avons fait ! C'est ainsi que l'application Stereo Video Recorder est apparue.

Nous avons décidé de partager avec les lecteurs de Smashing Magazine notre enquête sur la création de vidéo 3D. Nous aimerions également parler des caractéristiques techniques de création de l'application et fournir des dessins détaillés du cadre utilisé pour monter les iPhones.

Comment tout a commencé

Dans notre étude des fonctionnalités vidéo 3D, nous avons commencé par des expériences sur la réalité virtuelle. Nous avons construit un cadre en carton et l'avons regardé vers le monde via deux iPhones au format 3D. Les détails de nos recherches sont disponibles sur notre blog. Nous irons plus loin ici.

Comment filmer une vidéo 3D avec deux iPhones.
Carton fabriqué par nos soins pour étudier la réalité augmentée (Voir la grande version)

Poursuivant cette recherche, nous avons décidé de créer un autre prototype de l'application, celui qui vous permet d'enregistrer une vidéo 3D stéréoscopique et de la télécharger sur YouTube.

La stéréoscopie est un moyen de créer l'illusion de profondeur dans une image plate. L'enregistrement stéréo est connu depuis le 19ème siècle. En créant une vidéo 3D stéréoscopique, nous simulons la vision binoculaire. En raison de la distance entre les pupilles, il est beaucoup plus facile pour le cerveau humain d'analyser le volume de l'espace environnant - la distance aux objets. La stéréoscopie binoculaire est largement utilisée dans l'industrie cinématographique. Vous pouvez difficilement trouver un chef-d'œuvre hollywoodien qui n'utilise pas le format stéréo.

Le but de notre prototype d'application était de filmer des vidéos simultanément avec deux caméras iPhone différentes, puis de fusionner les fichiers vidéo résultants en un seul pour les visionner à l'aide de lunettes 3D, par exemple Google Cardboard, un casque de réalité virtuelle ou un téléviseur 3D.

Plus après saut! Continuez à lire ci-dessous ↓

Image stéréo et notre perception d'une image 3D

Permettez-moi de développer les images stéréo et notre perception des images 3D. En fait, la stéréographie fonctionne comme nos yeux, qui ont évolué avec le temps. Parce qu'il y a une distance entre nos deux yeux, les images projetées sur les rétines des yeux gauche et droit sont un peu différentes. Cette différence est appelée parallaxe (un effet où la position d'un objet semble être différente lorsqu'il est vu à partir de deux positions différentes). Cependant, l'observateur ne voit pas deux images distinctes. L'appareil visuel forme une perception d'une image spatiale unique et peut sentir le volume, la distance, etc. Il est important de comprendre que l'appareil visuel détecte, traite et projette des images spatiales et des objets situés dans l'espace à certains points.

Comment filmer une vidéo 3D avec deux iPhones.
L'appareil visuel crée une perception de volume basée sur la parallaxe. (Voir la grande version)

Une compréhension du fonctionnement de l'appareil visuel humain permet une enquête approfondie sur la façon dont le matériel visuel doit être préparé et reproduit afin que le spectateur puisse avoir une idée d'une image 3D complète.

Regardons tout dans l'ordre.

Comme tout appareil fonctionnant selon les lois de la physique, l'appareil visuel humain a ses propres caractéristiques et limites.

Tout d'abord, nous devons comprendre que, du point de vue de notre processus visuel, nous concentrons notre regard sur un seul point, appelé point de vue (POV). En fait, le POV est le point où les yeux sont focalisés et par lequel passent les lignes de visée gauche et droite. Selon la distance au point de vue, l'angle entre les lignes de visée des yeux gauche et droit sera différent. Les yeux sont dirigés de telle sorte que les lignes convergent vers le POV. Ces lignes sont parallèles lorsque la personne regarde au loin, ou, en d'autres termes, à l'infini.

Comment filmer une vidéo 3D avec deux iPhones.
Les yeux ne regardent pas toujours parallèlement - en fonction de la distance à l'objet (le point de convergence des lignes). (Voir la grande version)

Les images projetées sur la rétine diffèrent légèrement en raison du petit déplacement des yeux. Cela se manifeste généralement sous la forme d'un déplacement de l'image que la personne regarde - vers la gauche pour l'œil gauche et vers la droite pour l'œil droit. Ce phénomène, déjà mentionné, est appelé parallaxe.

Cependant, l'appareil visuel ne peut percevoir le volume qu'à certaines valeurs de parallaxe. Selon la distance à l'objet, la parallaxe sera différente pour les objets proches et lointains. Il se peut que la parallaxe dépasse la valeur limite et que la personne ne voie pas un objet 3D, mais une image bifurquée. Une expérience impliquant le changement de vue d'un objet proche à un objet lointain pourrait offrir une meilleure compréhension des spécificités de cela.

Comment filmer une vidéo 3D avec deux iPhones.
La perception du volume n'est qu'une illusion de notre cerveau. En fait, il y a certains effets secondaires. (Voir la grande version)

Comme on peut le voir sur la figure, si vous fixez votre vue au premier plan, les objets d'arrière-plan commenceront à bifurquer. Si vous fixez votre vue sur l'arrière-plan, l'image de premier plan bifurquera. Cette caractéristique de l'appareil visuel joue un rôle essentiel dans les fonctionnalités de prise de vue 3D et de reproduction d'images stéréo.

Dans la vie ordinaire, nous ne remarquons pas cet effet car nous sommes habitués à ne suivre qu'un seul objet, et lorsque vous changez de vue, votre vue s'adapte rapidement aux nouvelles conditions. Cependant, lorsque l'on essaie de projeter artificiellement une image volumétrique à l'aide de deux images avec une parallaxe prédéterminée, l'appareil visuel ne peut plus s'adapter aussi rapidement qu'il le fait habituellement. Pour que l'appareil visuel fonctionne en mode normal, l'équipement vidéo 3D doit être ajusté aux yeux du spectateur, en analysant l'emplacement du point d'observation. Cet équipement doit également créer des images stéréo avec la parallaxe requise.

Cependant, sa mise en œuvre est techniquement très difficile. Habituellement, un schéma simple avec des paramètres de prise de vue géométriques et techniques fixes est utilisé. Ces paramètres seront différents pour les vues rapprochées et éloignées. Par paramètres géométriques et techniques, on entend le champ de vision des caméras, le déplacement horizontal des caméras par rapport au centre, l'angle de rotation des caméras et le point de convergence des caméras.

Par conséquent, vous ne pourrez pas photographier des objets aussi proches et distants si vous ne disposez que d'un seul équipement de prise de vue (deux caméras et un cadre). Plus précisément, vous pourriez filmer, mais il serait extrêmement inconfortable pour une personne de regarder une vidéo dans laquelle, par exemple, l'équipement est réglé pour une vue éloignée mais filme une vue rapprochée, ou vice versa, avec l'effet stéréo faiblement exprimée en arrière-plan.

Comment filmer une vidéo 3D avec deux iPhones.
Le système de prise de vue doit être configuré pour correspondre aux paramètres du système visuel humain dans certaines conditions d'observation. (Voir la grande version)

De l'idée à la pratique : comment monter les iPhones

Revenons à notre idée. Nous avons décidé de développer un prototype d'application mobile capable d'enregistrer des vidéos 3D stéréo. Compte tenu de tout ce qui précède, nous devions évaluer les éléments suivants :

  • la possibilité de base de prendre une image stéréo avec deux iPhones ;
  • la plage effective de distances qui assurerait une perception stéréo de qualité et confortable, compte tenu des conditions habituelles d'utilisation d'une caméra.

Lorsque nous avons été sur le point de créer un prototype, la première chose que nous avons faite a été d'évaluer le potentiel de l'appareil photo de l'iPhone pour notre tâche. Nous avons été agréablement surpris de découvrir que l'iPhone donne un angle de vue acceptable pour un gros plan. Comme déjà mentionné, il ne suffit pas de placer deux caméras côte à côte pour obtenir un bon effet stéréo. Habituellement, l'algorithme de calcul de la prise de vue commence par la définition des paramètres du plan, c'est-à-dire les distances aux objets les plus proches et les plus éloignés et les distances entre les objets dans le plan du cadre. Les paramètres d'installation sont ensuite sélectionnés en fonction de ces données.

Un calcul simplifié de la distance entre les caméras peut être fait sur la base de cette formule :

Comment filmer une vidéo 3D avec deux iPhones.
(Voir la grande version)
  • Parallax<sub>fore</sub> définit le déplacement maximal de l'image de premier plan lorsque les images de la paire stéréo se chevauchent.
  • L<sub>fore</sub> = distance à l'objet de premier plan
  • f = distance focale de l'objectif
  • L = distance au point focal de la lentille
  • M = zoom cadre

Dans notre cas, nous avons dû modifier légèrement l'algorithme, car nous utilisions un appareil photo standard et, par conséquent, la distance focale de l'objectif est définie de manière rigide. Notre tâche était d'obtenir un effet stéréo confortable et une plage de distances acceptable par rapport à l'objet de prise de vue. Nous avons donc dû effectuer plusieurs expériences - en disposant les deux caméras l'une par rapport à l'autre - afin de trouver la distance requise entre leurs centres (la distance entre les centres des caméras) et les angles de convergence.

Pour simplifier la tâche dans le processus de prototypage, nous avons décidé de ne pas faire pivoter les caméras pour obtenir la convergence à un certain point, mais d'utiliser la convergence à l'infini. Il s'est avéré que, pour obtenir le meilleur résultat, il est nécessaire d'ajuster avec précision l'angle de convergence des caméras. Et si l'on tient compte du fait que l'on avait prévu de fabriquer un cadre en carton pour monter les iPhones, alors régler l'angle de convergence des caméras devient pratiquement impossible. Ainsi, après un certain nombre d'expériences, nous sommes arrivés à un compromis, obtenant l'équilibre optimal entre la distance entre les caméras pour permettre la prise de vue dans la zone proche et obtenir un bon effet stéréo.

Comment filmer une vidéo 3D avec deux iPhones.
Pour obtenir un bon effet stéréo et minimiser les effets physiologiques indésirables, la distance entre les téléphones doit être strictement fixe. (Voir la grande version)

Notre objectif était de développer le cadre le plus simple pour les iPhones, qui serait facile à fabriquer, pratique à utiliser, fournirait les paramètres de prise de vue nécessaires et aurait la rigidité requise. Ainsi, nous avons choisi un modèle 3D qui peut être réalisé en matière plastique ou en mousse (polystyrène, dans ce cas) par fraisage ou impression 3D. À l'avenir, nous voudrons bien sûr développer un appareil plus simple à fabriquer, par exemple un appareil en carton.

La seule limitation matérielle pour le moment est que vous devez utiliser les mêmes appareils, avec des caméras absolument identiques.

Comment filmer une vidéo 3D avec deux iPhones.Comment filmer une vidéo 3D avec deux iPhones.
Version la plus simple d'un cadre de prise de vue vidéo 3D (Voir la version agrandie)

Vous trouverez ci-dessous des dessins détaillés du cadre pour différentes versions d'appareils avec des tailles d'écran de 4,0, 4,7 et 5,5 pouces - adaptés pour l'iPhone 6+ et 6S+, pour les 6, 6S et 7, et pour les 5 et 5S.

Comment filmer une vidéo 3D avec deux iPhones.
Comment filmer une vidéo 3D avec deux iPhones.
Comment filmer une vidéo 3D avec deux iPhones.
Dessins pour votre propre cadre fait maison

Application pour la prise de vue vidéo 3D stéréoscopique

L'application fonctionne simultanément sur deux appareils, mais la prise de vue est contrôlée à partir d'un seul des appareils, il n'est donc pas nécessaire de contrôler le processus de prise de vue d'une manière particulière.

Sous une forme simplifiée, le scénario d'utilisation standard de l'application consiste en la séquence d'actions suivante :

  1. Montez les deux iPhones sur le cadre.
  2. Exécutez l'application sur les deux appareils.
  3. Déterminez lequel des appareils servira de maître et lequel d'esclave. Démarrez l'enregistrement à partir de l'appareil maître. (Ne faites aucune action supplémentaire sur le deuxième appareil.)
  4. Après l'enregistrement, attendez la synchronisation des fragments enregistrés et le rendu d'une vidéo prête à être téléchargée sur YouTube.
  5. Téléchargez la vidéo sur YouTube à tout moment après la synchronisation, puis visionnez-la sur votre téléviseur 3D ou via des lunettes de réalité virtuelle.

Il convient de noter que le travail principal se déroule sur un seul des iPhones, l'appareil maître. C'est sur cet iPhone que nous initions le tournage. La vidéo est traitée et téléchargée sur YouTube également sur l'appareil maître. La préparation de la vidéo pour le téléchargement sur YouTube prend un certain temps. Cela dépendra des performances des appareils utilisés et de la qualité de la connexion entre les appareils maître et esclave.

Le deuxième iPhone, faisant office d'esclave, n'est utilisé que comme deuxième appareil photo. A la fin de la prise de vue, il envoie le fragment vidéo à l'appareil maître.

Comment filmer une vidéo 3D avec deux iPhones.
Le processus de prise de vue vidéo 3D ressemble à ceci. (Voir la grande version)

Les captures d'écran de l'écran principal de l'application, affichant la galerie de vidéos tournées, sont présentées ci-dessous. Les vidéos peuvent être visionnées à la fois via un lecteur intégré et sur YouTube. Ici, vous pouvez également voir comment d'autres rôles de prise de vue (maître et esclave) sont attribués aux appareils.

Comment filmer une vidéo 3D avec deux iPhones.
Comment filmer une vidéo 3D avec deux iPhones.
L'interface utilisateur de l'application

Obstacles techniques

Désynchronisation

Toutes les manipulations avec les fragments vidéo sont effectuées à l'aide du puissant framework AVFoundation, en utilisant, si possible, l'accélération matérielle.

Pour télécharger sur YouTube, les fragments vidéo sont collés image par image, côte à côte. De toute évidence, chaque image de gauche doit correspondre à l'image de droite dans le temps. Au moindre retard dans les images de l'une des sources, l'effet stéréo sera perdu ou déformé (en particulier dans les scènes dynamiques) et l'image apparaîtra doublée.

Pour résoudre ce problème, nous avons commencé à enregistrer la vidéo sur les appareils en même temps. En fait, l'enregistrement ne démarre pas immédiatement après avoir appuyé sur le bouton de démarrage, mais après un court délai au cours duquel un certain algorithme s'active - très similaire à la façon dont le protocole de temps de précision (PTP) mesure le décalage d'horloge. Ainsi, nous avons pu lancer l'enregistrement vidéo avec une divergence de 30 à 50 millisecondes, ce qui, dans le pire des cas, correspond à environ 1 trame de désynchronisation.

Bogues dans la connectivité iOS Multipeer

Nous avons utilisé la bibliothèque iOS native Multipeer Connectivity pour établir la communication entre les deux appareils. Cette bibliothèque établit une connexion directe entre les appareils sur le même réseau Wi-Fi, ainsi que via Bluetooth ou en utilisant quelque chose de similaire à Wi-Fi Direct sur l'iPhone. Ainsi, vous pouvez filmer et synchroniser des fragments vidéo même en plein champ, sans réseau Internet sans fil ou mobile. Mais une connexion Internet est nécessaire pour envoyer la vidéo sur YouTube à partir de l'appareil maître.

La principale raison pour laquelle nous avons décidé d'utiliser cette bibliothèque est qu'elle établit la communication entre les deux appareils lorsqu'ils ne sont pas connectés au même réseau. Évidemment, dans de mauvaises conditions de prise de vue en 3D stéréo, on peut tout au plus s'attendre à une connexion 3G. Pour filmer une vidéo 3D, il est essentiel de pouvoir - avec un minimum de retard - transmettre des paquets de données pour la synchronisation. De plus, s'il n'y avait pas de connexion Internet, nous ne pourrions pas filmer. Par conséquent, la bibliothèque Multipeer Connectivity est devenue une bouée de sauvetage. De plus, il s'agit d'une solution native pour la plate-forme Apple.

Cependant, il convient de noter que tout ne s'est pas déroulé exactement comme nous le souhaitions. Lors de l'intégration avec Multipeer Connectivity, de nombreux bogues ont été détectés et l'ensemble de la bibliothèque était extrêmement instable dans son fonctionnement. La plupart des fonctionnalités déclarées n'étaient là qu'en théorie. Lorsque les appareils fonctionnent dans le même segment de réseau, la connectivité Multipeer fonctionne plus efficacement ; la connexion est établie pour une durée acceptable ; la dispersion admissible du temps de livraison des messages est atteinte.

Cependant, si nous avons, relativement parlant, de mauvaises conditions de prise de vue stéréo 3D, ou, disons, s'il y a de nombreux appareils mobiles au même endroit, l'établissement d'une connexion s'apparente à une loterie. On a l'impression que la bibliothèque Apple n'est pas encore complètement développée et qu'elle est encore assez brute.

Liaison des appareils

Nous avons implémenté le protocole de liaison automatique dans la première version de notre prototype. Le protocole lui-même consiste en un ensemble de règles selon lesquelles un coordinateur est choisi parmi les appareils homologues - sur la base d'une majorité - au moment initial.

Ensuite, le coordinateur collecte périodiquement les statistiques de télémétrie de chaque appareil en faisant passer un marqueur spécial dans un cercle entre les appareils esclaves. Sur la base de ces données de télémétrie, des paires d'appareils montés sur le châssis sont comparées. Une fois qu'une paire a été identifiée, un maître et un esclave sont affectés dans la paire et une connexion directe entre eux est établie. A ce stade, la liaison est terminée.

Recherches automatiques et indépendantes

Si nécessaire, des recherches automatiques et indépendantes (basées sur des identifiants uniques) pour les appareils ayant participé aux sessions précédentes ont été effectuées pour la synchronisation (obtention de pistes vidéo enregistrées en cas d'échec du chargement des données sur l'appareil maître au moment de l'enregistrement). Les lectures de l'accéléromètre ont été principalement utilisées pour identifier les appareils correspondant à la paire. Le coordinateur a calculé la corrélation entre les paires potentielles. Si la corrélation dépassait un certain seuil, les appareils étaient considérés comme des paires potentielles et les caractéristiques secondaires étaient ensuite testées.

Parce que nous ne pouvions pas complètement surmonter les problèmes mentionnés ci-dessus avec Multipeer Connectivity, nous avons décidé d'abandonner temporairement la liaison automatique, car cela aurait affecté très négativement l'utilisateur moyen et gâché l'expérience utilisateur.

Avec quoi nous nous sommes retrouvés

Au final, nous avons réalisé une application très intéressante et de haute qualité. Regarder une vidéo enregistrée via cette application vous donne le même sentiment que lorsque vous regardez des films en 3D au cinéma.

Bien sûr, l'œil humain fonctionne un peu différemment : ses lignes convergent en un certain point de l'espace et dépendent du point de focalisation. Dans notre cas, les yeux regardent toujours en parallèle. Cependant, même avec ce fait, l'effet stéréo est très prononcé : le volume de l'espace est ressenti au premier plan, au milieu et à l'arrière-plan à peu près le même que sur l'écran.

Vous avez besoin de lunettes VR ou d'un téléviseur 3D pour visionner correctement cette vidéo.

Ainsi, nous avons rendu possible l'utilisation de l'application Stereo Video Recorder pour filmer des vidéos stéréo 3D par vous-même pour vos besoins professionnels ou juste pour le plaisir !

Travailler sur les bogues et les plans futurs

Notre objectif a été atteint : nous avons étudié les critères de création de vidéo 3D, et nous avons créé une application qui permet à tout utilisateur de créer une vidéo stéréo. Mais tout n'est pas aussi simple qu'il y paraît. Nous devons travailler sur certaines choses. Nous avons eu beaucoup de problèmes avec la bibliothèque Multipeer Connectivity. Nous voulons soit le remplacer, soit trouver une solution de contournement pour que l'application fonctionne bien avec un accès Internet limité.

Nous devons également :

  • mettre en œuvre la mise au point et la mesure de l'exposition synchrones sur les deux appareils, ainsi que l'enregistrement de pistes audio stéréo ;
  • développer un cadre plus pragmatique pour les dispositifs ;
  • intégrer le mécanisme d'appairage automatique des appareils ;
  • prendre en charge différentes options d'appareils et être capable de gérer différentes résolutions vidéo (pour le moment, nous ne pouvons enregistrer des vidéos qu'avec les mêmes versions d'iPhone - par exemple, un iPhone 5S ne peut être couplé qu'avec un autre iPhone 5S) ;
  • créer une version Android de l'application.

Notre application Stereo Video Recorder est déjà dans l'App Store. Vous pouvez l'utiliser pour créer une vidéo 3D. Nous sommes sûrs que la technologie continuera à se développer et qu'il y aura à terme de nombreuses autres solutions pour créer de la vidéo stéréoscopique. Nous essaierons de suivre le rythme.

S'il vous plaît laissez vos commentaires et idées sur votre utilisation de cette application. Nous vous serions reconnaissants de votre avis et de vos commentaires.

Lectures complémentaires sur SmashingMag :

  • Quatre façons de créer une application mobile, partie 1 : iOS natif
  • Prototypage d'applications iOS et Android avec Sketch (avec un cadeau)
  • L'avenir de la vidéo dans la conception Web
  • Les bases de l'automatisation des tests pour les applications, les jeux et le Web mobile