Faire défiler des grands panoramas statiques sous DaVinci Resolve

Faire un panorama en vidéo n’est pas aisé sans trépied et avec les changements de luminosité suivant la position du soleil. Tant que le sujet reste statique, on peut tout aussi bien faire un panorama en photos individuelles que l’on assemble dans un logiciel de traitement d’images. Nous avons décrit sous zoom dynamique une manière simple de faire un zoom, cela s’applique tout aussi bien à un panorama translaté. Cependant, ce zoom dynamique ne se configure que très mal et il présente quelques erreurs d’affichage qui sont encore présente sous la version Resolve 17.1. Mais il y a encore un autre problème: Resolve n’accepte que des médias aux format maximum de 15360 par 8640 pixel. Pour les panoramas, c’est la première valeur qui nous intéresse et les photographes de paysage sauront que l’on peut avoir aisément des panoramas dépassant les 30000 pixel en largeur. Dans ce cas, il faut diviser son panorama en morceaux de moins de 15360 pixel de large et arranger plusieurs translations à la suite.

Resolve est un outil graphique, mais ici il faudra utiliser des valeurs exactes pour avoir un affichage et surtout des transitions exactes, on calculera donc et on entera ces valeurs dans l’Inspecteur. On commence par un panorama unique à faire défiler.

Panorama d’une seule image statique

Typiquement, le panorama sera plus grand (large) que la largeur de la vidéo dans la timeline. Pour faciliter les calculs, nous faisons ici tout sous le format 2K 1080p, c’est à dire 1920 fois 1080 pixel. Pour des autres formats, il suffit de changer ces deux valeurs dans les formules.

Considérations théoriques

Lorsque l’on importe une image dans la timeline, celle-ci est automatiquement zoomée pour remplir le cadre. Même si la taille réelle est connue dans l’Inspecteur des Médias, dans le Montage les valeur de base sont celles après l’ajustage dans le cadre des 1920 x 1080 pixel. C’est à dire zoom 1 et translation 0,0 pour un panorama de par exemple 7680 x 1080 pixel. Pour afficher ce dernier panorama avec un pixel pour un pixel à l’écran, il faut appliquer un zoom de 7680/1920=4. Le panorama dépasse alors à gauche et à droite car il reste centré.

On peut maintenant modifier les valeurs de la translation pour définir le début et la fin du défilement, mais ce n’est pas très précis, on ne voit pas bien le début et la fin. Pour la logique, cela ressemble au schéma ci-bas. Au centre toujours la partie visible. En haut la situation après le zoom, en bas les deux buttées de la translation.

Logique d'un défilement de panorama simple. Photo © André M. Winter

Logique d’un défilement de panorama simple. Photo © André M. Winter

La translation se passe par le centre de l’image. Il faut d’une part une valeur de départ à gauche (elle sera positive) et une valeur d’arrivée à droite (qui sera négative).

Formules pour les différentes positions

Comme nous avons admis pour le premier exemple des valeurs bien simples, nous prenons maintenant des valeurs indépendantes de la résolution de la timeline, par exemple 6368 x 808 pixel. Ces 808 pixel en hauteur diffèrent des 1080 de la timeline, il faut donc les prendre en compte pour la valeur de la largeur relative à 1080 en hauteur.

 L1  x  Ht  /  H1 =  Lt
6368 x 1080 / 808 = 8512

Notre panorama de 6368x808px sera donc considéré comme ayant un format de 81512x1080px. Cette valeur Lt est importante pour calculer le zoom Zt à appliquer à objet dans la timeline.

 Lt  / 1920 =    Zt
8512 / 1920 = 4.433333

Cette valeur Zt peut poser des problèmes par la suite avec ses valeurs derrière la virgule. En effet, Resolve ne prend que trois chiffres derrière la virgule, mais comme nous calculons avec des grands nombres qui seront pour finir arrondis à des nombres entiers, il se peut que l’on ait des décalages d’un pixel à la fin. Mais il faut faire avec et on entre cette valeur dans le champ zoom de l’Inspecteur.

Pour éviter ce problème, on peut formater les panoramas en amont sur une hauteur de 1080px et une largeur d’un facteur entier de 1920 comme 3840, 5760, 7680, 9600, 11520 (maximum). Les valeurs 13440 et 15360 théoriquement admissibles ne sont pas possibles parce qu’elles engendreraient des valeurs dépassant 7680 pour les translations par la suite. Or, cette valeur ne peut pas être dépassé dans Resolve. Cela donnera des valeurs de zoom entières et en conséquence des valeurs de translation exactes.

Pour la valeur de translation vers la gauche Tg, cette formule s’applique:

(Lt - 1920) / 2 = Tg
(8512 - 1920) / 2 = 3296

Pour la valeur de droite Tr, c’est la même valeur plus 1 et le tout en négatif:

-1 x ( Tg  + 1) = Tr
-1 x (3296 + 1) = -3297

ou bien

(1920 -  Lt ) / 2 - 1 = Tr
(1920 - 8512) / 2 - 1 = -3297

Précisément avec ces deux valeurs apparaissent les erreurs relatives aux valeurs tronquées de Zt car dans la pratique ils valent  3297 et -3296. Pour visualiser cela plus aisément, il est utile de positionner une couleur opaque sous le panorama. On l’obtient sous Boîte à outils > couleur opaque, il faut cependant aussi assigner une couleur dans l’Inspecteur pour que ce fond soit visible.

Sur la représentation en bas, nous avons entrée la valeur fausse de 3298 pour Tg. On voit apparaître un trait d’une infime largeur à gauche. Pour ceci, il faut peut-être maximiser la taille de la visionneuse.

Erreur d'un pixel et visualisation sur couleur opaque. Photo © André M. Winter

Erreur d’un pixel et visualisation sur couleur opaque. Photo © André M. Winter

Appliquer les valeurs pour une translation

Nous allons animer la translation directement dans le volet Montage en appliquant des positions clés. On positionne d’abord le curseur au début du panorama, on entre la valeur Tg (ici corrigée à 3297) dans l’inspecteur, le panorama est alors positionné sur la gauche. On clique aussi sur le petit losange gris pour le rendre rouge à côté des coordonnées.

Position de départ à gauche. Photo © André M. Winter

Position de départ à gauche. Photo © André M. Winter

On positionne ensuite le curseur sur la droite. Il ne faut pas s’étonner du fond noir (ou de la couleur opaque qui apparaît) car le curseur magnétique va à la fin de l’objet (ou au début de l’objet suivant). Cela est normal, il faut juste que le panorama traité actuellement reste activée (entouré de rouge). Et on entre la valeur de droite Tr.

Position d'arrivée à droite. Photo © André M. Winter

Position d’arrivée à droite. Photo © André M. Winter

Notre défilement est désormais prêt, il ne faut pas fermer l’enregistrement des positions clés, c’est tout bon.

Augmenter la durée du défilement

Lors de l’édition, on a tendance à faire défiler le panorama rapidement pour les ajustages. Mais le spectateur sera captivé et n’arrivera pas à suivre si le panorama défile trop vite. On ne peut cependant pas simplement modifier la durée de la translation animée en modifiant la durée de l’élément sur la piste de la timeline car les positions clés sont relatives à l’a durée de l’objet quand on a activé les translations animées. On peut cependant éditer graphiquement cette animation. On actionne pour cela les deux petits boutons en bas à droite de l’objet.

Courbe de la translation du panorama dans la timeline. Photo © André M. Winter

Courbe de la translation du panorama dans la timeline. Photo © André M. Winter

Si on rallonge simplement l’élément dans la timeline, on voit que les positions clés ne bougent pas. Dans l’exemple ci-bas, nous avons étiré l’élément à gauche et à droite.

Mais on peut déplacer les points blancs à la fois sur la bande bleue et dans le graphe. On reconnaîtra dans le graphe les valeurs que l’on avait utilisé précédemment comme buttée de la translation à gauche et à droite. Si le graphe s’ouvre, mais que la courbe ne s’affiche pas, il faut cliquer sur le petit point à gauche sous le mot « Transformation ».

Attention, en éditant dans le graphe, on change aussi la position verticale, donc la valeur mise au départ et qui doit être conservée. Mais en tenant la touche Majuscule, on peut éditer dans le graphe sans mouvement vertical. On tire donc le point gauche complètement vers la gauche et le point droit toit à fait à droite. Ci-bas, la position de gauche est corrigée, celle de droite pas encore.

Panorama rallongée avec correction d'une position clé. Photo © André M. Winter

Panorama rallongée avec correction d’une position clé. Photo © André M. Winter

La courbe arrondie signifie que l’on accélère lentement et que l’on a une arrivée amortie. On peut changer cela en mode linéaire en cliquant sur le symbole au centre en haut du graphe.

Raccourcir la translation en coupant du contenu

C’est plus simple que de rallonger la durée. En effet, l’animation se comporte comme un clip vidéo que l’on écourte. Dans l’exemple ci-bas, cette manipulation est représenté et posée en transparence sur un panorama animé non transformé. Celui-ci a une partie sans contenu sur la droite (jaune) que l’on coupe en réduisant la longueur dans la timeline. Le graphe décrivant la translation est aussi écourté, mais son inclinaison reste à peu près identique (cela dépend du type de point sélectionné). Avec cet écroutement, on ne change ni début et fin, ni la vitesse de la translation animée, on coupe juste un bout.

Raccourcir simplement une animation de translation. Photo © André M. Winter

Raccourcir simplement une animation de translation. Photo © André M. Winter

Panorama composé de plusieurs images statiques

Comme précisé plus haut, DaVinci Resolve est limité à 15360 pixels en largeur pour les médias. Quand on importe des médias plus larges, ils n’apparaissent que noirs et ne s’exportent pas. Il faut donc segmenter des panoramas plus grands et les enchainer l’un après l’autre. La logique change car il faut faire apparaître un morceau de panorama défilant après l’autre.

Nous expliquons en bas pourquoi un découpage net du panorama de base ne marche pas car il faut garder les images translatés par animation sur une seule piste de la timeline pour éviter des scintillements des bords. Nous devons donc préparer les morceaux en amont et de manière à ce que le contenu se chevauche effectivement. Le chevauchement doit avoir la largeur de la résolution, dans notre cas 1920px. Comme il faudra ajuster les durées et donc les vitesses de défilement, il est bien plus simple de faire des dalles de largeur identique et en dépassant par le vide à la fin. Cela ce cache facilement avec un autre élément sous Montage ou en écourtant cet élément comme expliqué pus haut.

Il convient de garder des tailles de dalles hautes de 1080 pixels et larges de facteurs entiers de 1920. Comme précisé plus haut, cela permet d’avoir des valeurs entières pour zoom des panoramas et en conséquence des facteurs de décalage simple. Ci-bas un schéma de découpe en quatre morceaux d’un panorama large de 35840 pixel.

Découpage d'un panorama pour le faire défiler . Photo © André M. Winter

Découpage d’un panorama pour le faire défiler. Photo © André M. Winter

Ce type de découpage est un peu embêtant à faire, mais cela épargne de calculer longuement sous Resolve. Sous Photoshop, on travaille avec Sélection et transformer la sélection, attention de remettre le repère de base vers la gauche car il est par défaut sur le centre.

Sous Résolve, on place tous ces éléments l’un après l’autre. Quand le morceau 1 s’arrête, le morceau 2 démarre exactement à la même position et cela évite des scintillement de bords d’objets. La translation est effectuée par 4800 à gauche et -4800 unités à droite. Cette valeur vient de la formule d’en haut.

(Lt - 1920) / 2 = Tg

Comme on chevauche entièrement les bouts des panoramas, on peut se passer des corrections pour la valeur de droite et simplement prendre la valeur négative de la valeur de gauche.

Panoramas combinés sur une seule piste. Photo © André M. Winter

Panoramas combinés sur une seule piste. Photo © André M. Winter

Si on veut modifier la durée du défilement du panorama, il faut faire comme en haut, mais bien sûr élément par élément. Attention à tirer les points blancs jusqu’à l’extrême bord gauche et droit, car sinon, on aura des arrêts sur l’image au milieu du panorama défilant. On remarquera que la courbe est amortie au début et à la fin de chaque élément par défaut. En enchaînant plusieurs panoramas, cela crée un effet peu souhaitable. Il convient de lisser les courbes après le premier début amorti. On sélectionne pour cela les points blancs, et on sélectionne ensuite l’autre bouton blanc sur en haut au centre du graphe.

Panoramas défilants combinés et leurs courbes d'animation. Photo © André M. Winter

Panoramas défilants combinés et leurs courbes d’animation. Photo © André M. Winter

On remarquera la valeur 7680 qui est la limite absolue de la translation et qui nous limite dans la taille des morceaux du panorama en plus de la limite absolue de 15360 unités.

Impossibilité de découpage net des morceaux de panorama

DaVinci Resolve nous occasionne des problèmes ici. Peu importe si les morceaux du panorama s’enchevauchent ou non, on verra toujours un trait vertical noir très fin entre les morceaux. Il semble que ce soit une erreur graphique entre les pistes. C’est visible sous Montage et cela apparaît aussi dans les fichiers exportés. L’exemple ci-bas montre deux morceaux de panoramas qui sont tous les deux animés de manière à avoir un morceau « vide » à gauche et à droite pour permettre ce chevauchement. Ils sont tous les deux de la même largeur et de la même durée totale. Les courbes de translation sont par défaut amorties au début et à la fin. Mais même si on rend ces courbes linéaires, l’erreur d’affichage persiste.

Erreur lors du chevauchement de médias statiques. Photo © André M. Winter

Erreur lors du chevauchement de médias statiques. Photo © André M. Winter

Une autre curiosité que nous n’avons pas pu éclairer est la valeur de chevauchement. Dans l’exemple ci-dessus, nous avons des morceaux de panorama de 11520 pixel de large et un chevauchement de 1920px (la largeur de la résolution) à gauche et à droite. On fait donc translater effectivement 13440 pixel (11520 + 2 x 960 car on translate par le centre). Si on donne à la translation totale 24 secondes, il faudrait un chevauchement de 3 secondes. Or, il est effectivement de 3 secondes et 11 frames.

Ces erreurs ne semblent pas être contournables, il faut procéder comme en haut.

No Comments

Leave a Comment

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.