1.0.0 / La distorsion optique en VFX
Lors de l’incrustation d’une image CG sur un rush, il arrive souvent qu’il y ai des problèmes d’intégration dus à la déformation optique. En effet toute image captée par une camera est déformée par la lentille optique. Ce qui n’est pas le cas des cameras virtuelles dans les logiciels comme Maya ou Nuke. Il existe deux types de déformation optique : la déformation de volume et la distorsion optique.
1.1.0 / Déformation de Volume
La déformation de volume vient du fait que la camera restitue sur un plan en deux dimensions un environnement en trois. Un objet situé en bord cadre sera projeté sur le plan écran dansdes proportions plus grandes que si il avait été au centre de l’image. Ceci est d’autant plus vrai que la focale est courte. En revanche, si l’objet est plat, ce soucis ne sera pas apparent.
Cet effet optique est pris en compte dans les logiciels de 3D, contrairement à la distorsion optique
1.2.0 / Distorsion Optique
La distorsion optique est due au fait que les rayons lumineux en traversant une lentille ( courbée donc ) ne convergent pas tous de la même façon vers le plan écran. Cette aberration géométrique est particulièrement visible sur les lignes droites qui deviennent courbes.
Il existe3 types de distorsion :
-
- La distorsion en coussinet ( distorsion négative ) : pour les longues focales
-
- La distorsion en barillet ( distorsion positive ) : pour les grands angles et les fish-eyes
-
- La distorsion en moustache ( mix des deux ) : sur les objectifs anamorphiques
Plus une focale est courte, plus la déformation à tendance à être grande. Les optiques mobiles ( zoom ) sont réputées déformer plus, notamment lors de la mise au point. C’est ce que l’on appel le pompage. A contrario les focales fixes pompent moins. Il est à noter que si l’optique bouge durant la prise de vue, la distorsion s’animera soit du fait d’un changement de valeur focale pour un zoom soit du fait du pompage.
Une distorsion se mesure en pourcentage. Elle est :
-
- De 0 à 0,3 % : négligeable
-
- De 0,3 à 0,4 % : peu sensible
-
- De 0,5 à 0,6 % : sensible
-
- De 0,7 à 0,9 % : très sensible
-
- Supérieur à 1 % : gênante
La qualité de assemblage de l’objectif ( alignement des optiques par rapport au centre optique ) ainsi que sa construction ( position du diaphragme vis a vis de la lentille par exemple ) influe sur la distorsion.
1.3.0 / Image de synthèse
Les images CGI n’ont pas ce soucis de distorsion car les moteurs de rendus 3D n’ont pas besoin d’utiliser une lentille physique et utilise des modèles mathématiques. Les perspectives et la déformation de volume sont respectés mais pas la déformation qui dépend de la lentille.
En effet, pour mettre informatiquement une image a plat seul, les distances objet / centre optique et centre optique / plan écran compte.
1.4.0 / Intégration CGI / Live
Superposer des éléments CGI à des sources lives pose problème, surtout si l’image est en mouvement.
En effet lors d’animation de camera 3D ou d’objet CG, les objets en se rapprochant du bord cadre auront tendance a changer de taille et les lignes de perspective à se courber.
L’incrustation glissera donc.
Les règles de la géométrie optique font qu’il est impossible de contenir à la foi la rectitude des lignes droites ( distorsion ) et la consistance des volumes (déformation de volume ). De fait toutes les optiques déforment l’image. Rappelons que dans les espaces 3D, ce qui est important c’est la rectitude des lignes droites.
Pour retrouver cette rectitude il faut tourner en amont des grilles de distorsion optique ( un damier en fait ) afin obtenir la distorsion correspondant au film et la ré-apliquer sur l’incrustation CG. Le travail dans les logiciels de 3D sera quand à lui effectué à partir d’image sans distorsion. De plus sans ces informations l’étape de matchmoving devient extrêmement compliqué voir impossible ( la trajectoire des points de track est tronquée ).
La valeur de distorsion d’une optique est obtenue dans des logiciels ( souvent de tracking 3D ) en traçant des lignes sur le damier déformé. Le logiciel sachant que ces lignes sont déformées, compensera la déformation des lignes tracées pour les remettre droites. Il est possible de s’en sortir sans grille si l’on dispose d’une photogrammétrie ou lors d’un tournage urbain en prenant en compte les lignes des batiments. Le résultat sera cependant moins précis.
2.0.0 / Tourner des grilles de distorsion optique
Il est important sur le tournage, voir de préférence en amont, de pouvoir négocier au moins une journée avec un opérateur, la camera et l’ensemble des objectifs utilisés. Cela prend au minimum 5 heures. Comme le but est de calculer une valeur de distorsion pour un objectif donné et de reporter cette valeur sur les plans similaires, la traçabilité des plans et des focales est extrêmement importante. Il faut donc discuter avec la script et le pointeur ( ou la personne en charge du clap ) et obtenir que toutes les focales soient notées sur la feuille de script et le clap. Indiquer également la marque, la série d’objectif utilisée, le diaph et le type d’objectif : a focale équivalente, la distorsion des optiques de marque ou de série différentes divergent. Par ailleurs il est impératif de prévenir les personnes en charge du vidage des cartes mémoires et le laboratoire car il est courant que les claps voir les rushs de grille de distorsion soient tout simplement effacés.
Dans l’idéal il faut tourner par objectif, plusieurs valeurs de mise au point ainsi que plusieurs valeurs de diaph. Pour un zoom il faut répéter l’opération tous les 5mm de focale. Le nec le plus ultra étant de tourner une grille de distorsion spécifique à chaque plan. En pratique, il n’est pas indispensable de tourner des grilles au dessus du 24 mm pour les focales sphériques et du 70 mm pour les focales anamorphiques. Concernant les zooms, les focales graduées et couramment utilisées suffisent. Si il n’est pas possible de tourner plusieurs valeurs de mise au point, shooter une grille a la valeur de mise au point courrament utilisé ainsi qu’une vidéo de pompage allant de butée en butée.
2.1.0 / Tourner des grilles de distorsion optique
-
- Discuter avec la script et le pointeur ( ou la personne en charge du clap ) et obtenir que toutes les focales soient notées sur la feuille de script et le clap. Indiquer également la marque et la série d’objectif utilisée.
-
- Arriver à obtenir de la production une journée ( minimum 5 heure ) avec un opérateur camera, la camera et l’ensemble des objectifs utilisés
-
- Imprimer un damier ( plus précis que les grilles ) de grande dimension ( A0 )
-
- Accrocher la grille sur un support rigide. Elle ne doit pas être gondolée
-
- Utiliser les objectifs, la camera et le mode d’enregistrement utilisé pour le film
-
- Positionner la camera face à la grille. Elle doit être en plein cadre
-
- Filmer les grilles avec un clap en introduction indiquant ce qui est filmé ( marque d’objectif, série d’objectif, valeur focale, diaph, valeur de mise au point et si l’on est pointilleux la référence des optiques )
3.0.0 / Extraire les informations de distorsion dans un logiciel de Track ( 3DE )
3.1.0 / Fonctionnement de 3DE
3DE est un logiciel de matchmoving performant. Il permet à partir de tracking 2D de retrouver le mouvement de la camera et des objets par rapport à leur environnement dans un espace 3D. Étant donné que cet espace est par nature tridimensionnel et que les sources vidéos qui servent à l’obtenir ne le sont pas, la question de la distorsion est primordiale. C’est dans ce logiciel ( ou tout autre logiciel de track ) que les paramètres de distorsion vont être calculés. Pour le matchmoving mais aussi pour les autres utilisations. De fait le tracking arrive en première étape dans le pipeline ( avec la rotoscopie ). 3DE fonctionne selon une hiérarchie où tout les éléments s’injectent les uns dans les autres. Schématiquement, les rushs sont reliés à des Cameras et les cameras à des Points Groups contenant les Trackers. Chaque Points Groups est spécialisé en fonction d’un type de matchmoving : Track Camera, Track Objet et Mocap. De plus chaque camera est reliée à un Objectif ( Lens ), qui peut être partagé entre plusieurs cameras. C’est l’élément Lens qui nous intéressera le plus car c’est là que la distorsion optique est calculée. Celle-ci est définit soit en fonction d’une grille de distorsion soit en fonction de la position 3D des points dans l’espace ( si elle est connue de façon certaine ). Le schéma ci-dessous résume le fonctionnement de 3DE:
3.2.0 / Présentation de l’interface
A l’ouverture, 3DE se présente comme ceci :
3.2.1 / L’Object Browser
L’Object Browser liste tout les éléments de la scène sous 3 onglets : Camera, Point Group et Lenses.
Sous l’onglet Camera on retrouve la liste des cameras que cela soit une vidéo ( Sequence Camera ) ou une image de référence ( Reference Camera ). Les beziers utilisés pour l’auto tracking sont rangés sous chacune des cameras auxquelles ils sont rattachés.
Au niveau de l’onglet Point Groups, on retrouve les différents Point Group, et à l’intérieur de ceux-ci les points de track qui y sont rattachés. Il existe 3 types de Point Group :
-
- Camera : se réfère au point de track servant au calcul de la position des cameras
-
- Object : utilise les points de track des différents objets pour calculer la position de ceux-ci
-
- Mocap : concerne les points de track permettant le calcul de la motion capture ( nécessite plusieurs cameras )
On trouve également dans les Points Groups les géométries 3D et les contraintes qui y sont rattachées
L’onglet Lenses quand à lui regroupe les objectifs partagés par les différentes cameras ( un objectif peut se retrouver sur plusieurs cameras )
3.2.2 / L’Attribute Editor
Les paramètres des objets contenus dans l’Object Browser se retrouvent dans l’Attribute Editors.
Celui ci est subdivisé en 6 panneaux : Project, Camera, Point Group, Point, 3D Model et Lens.
-
- L’onglet Project contient les réglages généraux notamment en terme d’échelle et de far / near clip plane
-
- Celui de Camera permet de charger la séquence de la camera sélectionnée, d’attribuer des contraintes ( camera libre, fixe ou attachée à de la machinerie ) et de sélectionner un objectif ( Lens )
-
- Dans Point Group, on règle le type de point group ( Camera, Object ou Mocap )
-
- Les paramètres de chacun des points de track sont définis dans l’onglet Point
-
- 3D Model, permet de paramétrer les objets 3D sélectionnés dans les Point Group de l’Object Browser
-
- L’onglet Lens sert au réglage des paramètres des différents objectifs ( focale, distorsion optique ) mais aussi à la taille du capteur des cameras reliées. En effet une focale n’est valable que par rapport à une taille de capteur prédéfinit ( Filmback ).
Il est important de noter que pour avoir accès à l’Attribut Editor, les objets a paramétrer doivent être sélectionnées dans l’Object Browser.
3.2.3 / L’Espace de Travail
L’espace de travail propose plusieurs modes :
-
- Overwiew Controls ( F1 ) : sert de player. Il peut superposer des éléments 3D au rush et processer nativement le motion blur et la Z depth
-
- Manual tracking Controls ( F2 ) : permet de tracker manuellement
-
- Distortion Grid Controls ( F3 ) : les grilles de distorsions sont traités ici
-
- Autotracking Controls ( F4 ) : permet de lancer le tracking automatique
-
- Lineup Control ( F5 ) : sert à attribuer des contraintes 3D par rapport à des layouts pré existants.
-
- 3D Orientation Controls : espace 3D et contrainte d’orientation
3.2.4 / Le menu général 3DE4
Le menu général 3DE4 permet de sauvegarder, d’exporter / importer, calculer et lire les rushs.
3.3.0 / Importer les grilles de distorsion et les rushs
a – clic droit dans l‘Object Browser sur l’onglet Cameras et Add New > Séquence Camera
Répéter l’opération autant de fois qu’il y a de footage et de grille de distorsion optique
b – Aller dans l’Attribute Editor sur l’onglet Camera > Live Action Footage > Browse et importer les sources.
3.4.0 / Créer les lentilles pour les cameras
Il faut créer autant de lentilles que de grilles. Chaque lentille sera reliée au grilles et au rushs tournés avec le même objectif : une lens peut partager plusieurs cameras. Ainsi la camera du film dont l’on veut traiter la distorsion sera reliée à la même lentille que celle de la camera qui aura filmée la grille.
a – Dans l’Object Browser, aller sur l’onglet Lenses puis clic droit > Add New > Lens …
b – Aller dans l’Attribute Editor sur l’onglet Camera > Lens et choisir une lentille
3.5.0 / Régler la lentille
-
- Pour régler une lentille, il faut la sélectionner dans l’Object Browser puis aller dans l’Attribute Editor sur l’onglet Lens
-
- Renseigner la taille du capteur de la camera, le pixel aspect ratio ainsi que la focale. Faire attention car les paramètres peuvent s’influencer les uns et les autres ( réglage passive ). Normalement le filmback width et le pixel aspect sont réglés sur fixed et le filmback height sur passive.
-
- Également choisir un Lens distorsion model en fonction du type d’objectif utilisé. Il s’agit du mode de calcul de distorsion. Il y a le choix entre Radial et Classic LD pour les objectifs classiques, Radial Fisheyes pour les grands angles Fisheyes et enfin Anamorphique degré 4 et 6 pour les objectifs anamorphiques. Le mode Anamorphique degré 4 est intéressant car il est plus maniable ( moins d’entrée ) et permet de calculer l’erreur d’ajustement dû au vissage de l’objectif ( sensible sur les objectifs anciens ).
3.6.0 / Détordre les rushs
-
- Aller dans l’Espace de travail et basculer en mode Distortion Grid ( raccourcis F3 )
-
- Sélectionner la camera contenant la grille que l’on veut détordre dans l’Object Browser
-
- Snaper les points de la grille rouge sur le damier
-
- Étendre la grille à tout le damier avec Edit > Add Points > Lefthand Column, Righthand Column, Top Row et Bottom Row. Répéter l’opération autant de fois qu’il y a de colonnes et de lignes à rajouter. Ne pas hésiter à faire sortir la grille. Si il faut désactiver une partie de la grille, la sélectionner et activer Enable point . Pour enlever des portions de la grille aller dans Edit > Delete Points > Lefthand Column
-
- Aller dans l’onglet Calc > Calc Distorsion / Camera Geometry…
-
- Sélectionner les options devant être calculées et lancer le calcul. Si l’on veut changer de mode de calcul, cela se fait dans Attribute Editor > Lens > Lens distorsion model
-
- Cliquer sur Set parameters and close. Les valeurs de distorsion sont alors transférées dans l’onglet Lens de l’Attribute editor
3.7.0 / Exporter
A partir de 3de il faut exporter 3 éléments :
-
- la camera pour la 3d ( . mel pour maya )
-
- les proxy jpeg pour la 3D via Warp4
-
- le plugin de distortion pour le compositing ( .nk pour nuke ou .jsx pour after effect )
3.7.1 / Exporter la camera 3d
Aller dans le Menu General 3DE4 > Export Project > Maya … v1.9.
Ne pas oublier de renseigner la frame de début.
3.7.2 / Exporter les proxy JPEG
-
- Aller dans le menu Menu General 3DE4 > Run Warp 4…
-
- Aller dans l’onglet destination Footage et
-
- cocher Save Footage et renseigner le chemin de la sortie
-
- choisir le format de sortie
-
- régler l’Overscan sur Automatique ( cela ajuste la taille de la plate par rapport a la distorsion )
-
- Aller dans l’onglet destination Footage et
-
- Cliquer sur Render
3.7.3 / Exporter le plugin de distorsion pour le compositing
-
- Noeud 3DE4 pour Nuke:
Aller dans le Menu General 3DE4 > File > Export > Export Nuke LD_3DE4 Lens Distorsion Node v1.4
-
- GridWarp pour Nuke :
Aller dans le Menu General 3DE4 > File > Export > Export Distorsion to Nuke v7 Grid Warp … v1.4
-
- GridWarp pour After Effect :
Aller dans le Menu General 3DE4 > File > Export > Export Distorsion to After Effects Mesh Warp… v1.1
En ce qui concerne les Gridwarp, il faut renseigner quelques champs supplémentaire :
-
- Renseigner le chemin d’export
-
- Setter Mesh Warp Resolution sur 19 ( subdivision de la grille du Warp )
-
- Setter Startframe sur la frame de début de votre rush ( indispensable si zoom )
-
- Cocher Overscan
-
- Rentrer dans Overscan Resolution la résolution des proxy JPEG
-
- Cliquer sur OK
4.0.0 / Utiliser Maya dans le contexte d’un pipeline de distorsion optique
Maya ne gère nativement pas la distorsion optique, ni dans l’espace 3D, ni au rendu. Il est possible de simuler avec certain moteur de rendu comme Maxwell ou Arnold la déformation optique mais cela n’est pas recommandé vu la lourdeur de l’opération. Il faut donc travailler dans maya uniquement avec des images détordus ( undistort ) et exporter ou rendre des éléments undistort. Travailler avec des images undistort est important car cela permet de modéliser des layout ou d’animer des objets qui ne glisseront pas au travers du point de vue de la camera.
Un soucis se pose toutefois : les images undistort sont souvent plus grandes ou plus petites que leur format d’origine. Le ratio change donc et cela influe sur le filmback qui n’est du coup plus le même. Il faut donc le compenser si l’on ne veux pas perdre une portion de l’image hors du cadre ou que cela glisse ( selon l’option de placement de l’attribut editor de Maya).
4.1.0 / Comment retrouver le bon filmback
Le filmback se retrouve en divisant la nouvelle taille d’image par l’ancienne. On obtient alors un nouveau ratio qu’il suffit de remutiplier par la taille du capteur. Cette opération s’effectue en hauteur et en largeur.
Mauvais Ratio ( Haut ) Vs Bon Ratio ( Bas )
4.2.0 / Importer la camera dans maya
3DE4 n’exportant pas de .ma ou de .mb mais un .mel, le système standard d’ouverture de fichier ne pourra pas marcher. Il faut effectuer un import.
Aller dans File > Import et importer le point mel
La scène se présente dans l’Outliner de maya comme suit :
On retrouve un groupe Scene sans transformation avec à l’intérieur une camera et un groupe par PointGroup de 3DE. Ils contiennent les points de track. Dans le cas d’un tracking objet, les transformations sont inscrites sur le groupe. Il suffit de glisser la modélisation de l’objet dans celui-ci ou de le parenter au groupe ( les points de pivot doivent être identique et l’objet doit être au centre du monde )
4.3.0 / Rentrer le nouveau filmback dans maya
-
- Sélectionner la camera dans l’Outliner
- Aller dans la Channel Box en cliquant sur l’icône suivante en haut a droite de l’écran :
- Surligner avec le curseur les chiffres du champ Horizontal Film Aperture et rentrer avec le clavier « * » et « + » ; puis le ratio nouveau format / ancien format. Il est aussi possible de taper directement le nouveau format de capteur. Répéter l’opération avec le Vertical Film Aperture
- Aller dans l’Attribute Editor en cliquant sur l’icone suivante a droite de l’écran :
- Sélectionner l’Image plane dans les onglets
- Une fois dans l’Image plane, aller à l’onglet Placement et cliquer sur Fit to Film Gate en mode To size sans le champ Fit
Channel box & Attribute Editor
Une fois la camera au bon ratio et le layout effectué, il peut être intéressant d’exporter le tout vers Nuke ( pour réaliser des cameras mapping par exemple ). Quelques manipulations concernant la camera sont à réaliser au préalable car il faut qu’elle ne soit dans aucun groupe. En effet cela pose des problèmes avec certain format d’export.
-
- sélectionner la Camera dans l’Outliner puis la dupliquer avec Ctrl + D et la sortir du groupe avec shift + P
-
- comme la duplication à ecrasée les clefs, il faut parenter la nouvelle camera à l’ancienne et baker ( réécrire les clefs ) la camera. Pour ce faire sélectionner l’ancienne camera ( camera mère ) puis la nouvelle ( camera fille ) et setter la barre des menues sur Animation pour aller dans Constrain > Parent. Pour baker il faut aller dans Edit > Keys > Bake Simulation. Afin que le bake de la camera ne prenne pas trop de temps ( concerne aussi les exports ), il faut désactiver l’image plane : aller dans l’Attribute Editor après avoir sélectionné la camera et chercher l’image plane. Dans l’onglet Image Plane Attributes, basculer le Display Mode sur None
-
- sectionner la camera et aller dans File > Export Selection et choisir la destination de l’export. Effectuer la même opération avec les sélections d’objet.
En ce qui concerne les formats d’exports, il est préférable de séparer la camera des objets et d’utiliser le format .fbx pour la camera et .obj pour les objets. Il est possible si la version de maya et de Nuke l’accepte d’utiliser le format Alembic. Celui-ci peut contenir à la fois la camera et les objets et propose un outliner similaire à celui de maya dans Nuke 9. Ceci est bien pratique car il permet de gérer une scène entière dans Nuke et d’activer / désactiver les objets contenus dans le fichier comme on le souhaite. Le format obj ne permet que d’activer tout les objets ou a l’inverse de n’en sélectionner qu’un seul.
5.0.0 / Utiliser la distorsion dans Nuke
Lorsque l’on utilise Nuke dans un pipeline de distorsion optique, il faut au maximum éviter les opérations de undistort / distort afin de ne pas perdre en qualité d’image mais aussi pour des questions de temps de calcul. On ne se sert donc des fonctionnalités de distorsion qu ‘à la fin des opérations 3D ( espace 3D ou assemblage de passe undistort ). Idéalement le pipeline ressemble à ça dans Nuke :
Afin de ne pas perdre de portion de l’image ( l’image undistort peut être plus grande ou plus petite ), il faut utiliser des Reformat . Schématiquement il faut utiliser un Reformat au format du proxy undistort après le nœud undistort ( pour récupérer les valeurs sorties du cadre ) et un reformat au format de sortie distort avant le nœud de distort. Le nœud de distort est identique au nœud undistort. Il s’agit juste d’un switch dans le Nuke LD_3DE4 Lens Distorsion Node v1.4. Celui ci se drag and drop dans nuke à partir de son emplacement.
Il est impératifs de vérifier que la camera 3D importée ai été calculée avec la bonne valeur de distorsion.
5.1.0 / Réglage du nœud 3DE4 de distorsion :
le nœud de distorsion comporte les mêmes réglages que ceux trouvés dans 3DE4. Ainsi,les paramètres de distorsion sont similaires aux Lens distorsion Model choisis. On retrouve en outre les valeurs de focale et de filmback ainsi que celle de focus distance. Bien que toutes ces valeurs soient re-réglables, le menu déroulant Direction et Filter sont les seuls que l’on aura à toucher. Comme son nom l’indique, le menu Direction permet de choisir si l’on veux utiliser les valeurs de distorsion pour tordre ( distort ) ou détordre ( undistort ) la plate. Filter règle le type de filtre appliqué lors des manipulations.
5.2.0 / Réglage du nœud Reformat :
Le nœud reformat doit être au format des proxy undistort lors d’une opération undistort et situé après celle-ci. Lors d’une opération distort, le nœud se place avant l’opération et doit être au format distort. En effet l’opération de torsion se calcule en fonction du format d’origine des rushs. Afin de ne pas modifier l’image, il faut effectuer les réglages suivants :
Afin de ne pas perdre de valeur lorsqu’on travail avec l’espace 3d de Nuke, il faut mettre un nœud de reformat réglé avec les valeur undistort dans l’entrée Background du scanline render. De plus il est imperatif de verifier que tous les reformats de la scène aient l’option Preserve bounding box d’activée et que tout les Transform aient l’option black outside de désactivée.
Si l’on veux vérifier que tout fonctionne correctement, utiliser l’arbre suivant :
L’entrée et la sortie doivent être strictement identiques ( sauf le blur du fait des opérations de filtre )