:-y

Les transitions dans Blender

mardi 28 juillet 2015 - 11:51

Par défaut, il n'y a pas beaucoup d'effets de transition dans Blender (simple, double, iris et horloge).

Comment faire pour avoir une transition personnalisée à partir d'une image en niveau de gris ?

Récupérer une image de transition
Si vous n'avez pas d'idées, voici les transitions disponibles pour le prochain openshot
https://github.com/OpenShot/openshot-qt/tree/master/src/transitions/extra

Créer une transition avec imagemagick
Sinon, il est possible de créer sa propre transition avec par exemple imagemagick :
http://www.imagemagick.org/Usage/canvas/#gradient_fx

convert -resize 640x480! xc:white -channel G -fx "cos(pi*(i/w-.5))" -separate -rotate 90 -resize 640x480! -swirl 520 gradient.png


gradient

Convertir l'image en masque animé
Je ne sais pas si c'est la solution la plus simple, et il existe peut-être quelque chose dans Blender qui permet de faire directement cela, mais à partir de notre image en niveau gris, il faut créer un masque animé.

for i in $(seq -w 0 1 255); do convert gradient.png -threshold $(echo "100*(${i}/255)" | bc -l)% gradient_${i}.png; done


On obtient alors 256 images png en noir et blanc.

Voici ce que ça donne en gif :
convert -set delay 1 gradient_* gradient.gif

gradient

Appliquer un masque avec Blender
Tout d'abord, il faut ajouter le masque sur la piste 1 des séquences vidéos. Pour cela, il suffit d'ajouter une image (Add -> Image) et dans la sélection mettre par exemple gradient_*.png. Blender importera alors toutes les images comme une seule séquence vidéo.

Si on veut pouvoir gérer la longueur de la transition, il faut ajouter un effet de vitesse. Pour cela, il suffit de sélectionner le strip correspondant à notre masque, puis Add -> Effect strip... -> Speed Control. Ainsi, en redimensionnant le strip du masque, cela permettra d'adapter la transition à la longueur désirée.

Sur les pistes 3 et 4, il faut ensuite disposer nos 2 séquences vidéos qui vont avoir la chance d'avoir une belle transition personnalisée. La première séquence doit se situer sur la piste 4 pour être visible au dessus de la séquence finale qui sera sur la piste 3.

Ensuite, il faut sélectionner la première séquence sur la piste 4 et lui ajouter le masque. Dans les propriétés, Add strip modifier -> Mask puis dans le champ Mask, il faut choisir le strip speed.

À ce niveau là, l'effet fonctionne et le strip de la piste 3 disparaît avec l'effet escompté. En revanche, on ne voit pas apparaître le strip de la piste 4. Pour cela, il faut choisir dans les propriétés de la piste 3 : Blend -> Alpha Over.

Et voilà, c'est terminé :
lenna

Pour ajouter un effet de blur à la transition, 2 solutions s'offrent à vous (mais en fait 1 seule à vraiment utiliser) :
- Ajouter un effet blur directement dans Blender Add -> Effect strip... -> Gaussian Blur (à partir de la version 2.72 je crois). Attention, la prévisualisation et la génération de la vidéo vont être très longues car Blender va recalculer le blur pour chaque image. Dans la pratique, je ne vous conseille pas cette solution ;
- Ajouter un effet blur directement sur le masque avec imagemagick.

for i in $(seq -w 0 1 255); do convert gradient.png -threshold $(echo "100*(${i}/255)" | bc -l)% -blur 0x6 gradient_${i}.png; done

Attention au paramètre de blur, ici, il est très petit à cause de la taille des images.
http://www.imagemagick.org/Usage/blur/
En gros c'est {radius}x{sigma} avec radius qu'on fixe à 0 et sigma c'est la largeur en pixel de l'effet blur.

lenna blur

2017-04-03: suppression option -flatten + remplacement ' par " pour que ça fonctionne aussi sous dos pour la création de l'image en niveau de gris

Comments

1 - @ - Anonymous

Bonjour,

votre article "Les transitions dans Blender" m'a fortement intéressé car c'est exactement ce que je recherche pour créer des masques vidéo à partir d'une image en niveau de gris.

Créer sa propre transition avec imagemagick (Résolu)
Etape réussie après avoir remplacé les simples quotes par des double-quotes:
convert -resize 640x480! xc:white -channel G -fx "cos(pi*(i/w-.5))" -separate -rotate 90 -resize 640x480! -swirl 520 gradient.png

Convertir l'image en masque animé (Là, ça bloque grave !)
for i in $(seq -w 0 1 255); do convert gradient.png -flatten -threshold $(echo "100*(${i}/255)" | bc -l)% gradient_${i}.png; done

Telle quelle, l'exécution de la ligne de commande renvoie le message d'erreur suivant: i était inattendu. Aux quelques modifications basiques tentées, le problème se déplace soit sur $ inattendu, soit sur bc non reconnu comme commande interne ou externe.

Mes connaissances en programmation étant assez faibles, voire quasiment nulles, je viens solliciter votre aide pour débloquer cette étape.

La transformation en gif animé ne devrait pas poser de problème d'après mes diverses lectures, quand à la réalisation du gif animé en vidéo je l'ai testée avec succès avec celui de votre article via Movie Maker.

Je suis sous windows 7 avec la version d'ImageMagick 7.05-4-Q16-x64-dll.exe.

En attente de vous lire.

Cordialement.

/* moderate */ (suppression email)
New comment







           __   __       
  /  |  | |  \ /  \   /  
 /   \__/ |__/ \__/  /_  
/_|_    | | \    /  /  \ 
  |  \__/ |  \  /   \__/