Vidéo Temps réel dans Pure Data
nicolas_montgermont [AT] yahoo [DOT] fr | 2014

-

Telecharger les patchs ici : gem_workshop.zip (22Mo)
-

0 - Appropriation
////////////////////////////////////////////////////////////////////////////////

Parcourez les patchs disponibles en téléchargement:
0.appropriation.zip

1 - Notions de base en 2D
////////////////////////////////////////////////////////////////////////////////

a - gemwin : create, destroy, render, reset
b - geos : gemhead, square, circle (draw line)
c - translation : translateXYZ.
d - exercice : damier :

Réalisez un patch qui affiche à l'écran un damier noir et blanc de 4x4 cases

2 - Couleurs et déplacements
////////////////////////////////////////////////////////////////////////////////

a - Couleur : colorRGB
b - Rotation : rotateXYZ
c - exercice : orbite :

Réalisez un patch qui affiche un cercle bleu et un cercle rouge tournant en orbite autour d'un cercle jaune. Le déplacement des cercles bleu et rouge se fera automatiquement et à une vitesse différente. Pour cela on utilisera un [metro] couplé à un compteur ou à un [line].
++ : réalisez une petite "lune" blanche qui tourne autour du cercle bleue. quelle est la difficulté?

3 - Extension à la 3D et lumière
////////////////////////////////////////////////////////////////////////////////

a - geos : cube, sphere, cuboid
b - lumière : world_light, light, debug, spot_light
c - exercice : orbite 3D

Passez le patch précédent en 3D:
- remplacez les objets [circle]
- ajoutez de la lumière
- Inclinez l'ensemble des objets pour créer une perspective
- utiliser des [circle] avec l'option [draw line( pour afficher les orbites des planètes.

4 - Entrée / Sorties : souris clavier / fenêtre
////////////////////////////////////////////////////////////////////////////////

a - gemwin avant création : dimen, border, offset, FSAA
- après création : frame, view, color
b - clavier : gemkeyboard
c - souris : gemmouse
d - exercice : fenêtre au ratio 16/9

Créer une fenêtre de n'importe quelle taille mais dont le rapport largeur / hauteur est de 16/9 (par exemple 1280x720), quelles sont les coordonnées des objets dans cette fenêtre? Essayez également en inversant le rapport.

5 - Utilisation de texture : images
////////////////////////////////////////////////////////////////////////////////


a - lire une image: pix_image, pix_texture, pix_kaleidoscope, pix_info
b - lire plusieurs images: pix_multiimage.
c - écrire : pix_write

d - exercice : diaporama aléatoire
Dans cet exercice, on va réaliser un diaporama aléatoire:
- grâce à l'objet [pix_multiimage], et à l'objet random, réalisez un patch qui choisit une image aléatoirement dans un dossier et qui l'affiche à l'écran.
- ajouter un metro qui change de temps en temps cette image.
- ajouter deux objets random qui déplacent àléatoirement le rectangle de rendu en x et en y.
- diviser l'ensemble en deux patchs: un patch principal qui se charge d'afficher la fenetre gem et qui contient une abstraction, cette abstraction contenant tout le procédé d'affichage aléatoire de l'image. Assurez vous bien que tout s'initialise, puis dupliquer l'abstraction dans le patch principal pour obtenir différents rectangles de rendus.
++ comment peut-on améliorer le patch?

6 - Utilisation de texture : videos
////////////////////////////////////////////////////////////////////////////////


a - caméra : pix_video, dialog, device, properties
b - effets : pix_motionblur, pix_background, pix_movement
c - synthese : pix_sig2pix~
d - lecture de fichier vidéo : pix_film, pix_movie, fps
e - stockage : pix_buffer, pix_buffer_read, pix_buffer_write

e - exercice : «nervous video»

Dans cette exercice nous allons réaliser un patch qui permet de lire une vidéo en pseudo aléatoire.

1.Commencez par réaliser un patch qui lit un fichier vidéo en boucle:
- Identifier le fichier vidéo que vous voulez utiliser. Essayer de prendre un fichier d'environ 1min.
- Déterminer la vitesse de lecture du fichier (soit avec [pix_film] dans pd, ou avec un autre logiciel (vlc, quicktime,...))
- Créer un [metro] qui envoie un bang en synchronisation avec le fps du fichier. Par exemple fichier à 25 fps -> métronome qui envoie 25 bang par seconde
- Brancher un compteur qui détermine le numéro de la frame à lire et qui revient automatiquement à 0 quand le fichier arrive à la fin.
- Brancher la sortie du compteur sur [pix_film] et lire le fichier en boucle.

2.Ajouter de l'aléatoire dans la lecture
- Créer un objet [random 30] et étudier son fonctionnement.
- Pour chaque frame, on va décaler le numéro de la frame à lire avec un peu d'aléatoire, pour cela on génère un nombre aléatoire entre 0 et 29 à chaque frame et on l'ajoute à la frame à lire. Utiliser les objets [random] et [+ ].
- Modifier l'amplitude du nombre aléatoire pour ajuster l'effet.

7 - Transparence
////////////////////////////////////////////////////////////////////////////////


a - activation de la transparence : [alpha] + ordre de rendu gemhead + position
b - toute la texture transparente : [colorRGB]
c - alpha dans une image: tiff
d - création d'une couleur transparente : [pix_alpha]
e - exercice - dégradé

Dans cet exercice, nous allons créer une bordure en dégradé sur les côtés de la fenêtre GEM.
- Réalisez une texture qui est 100% transparente au milieu et qui s'opacifie en allant sur les côtés. Vous pouvez choisir un dégradé sous forme de cercle ou sous forme de rectangle. Si vous n'avez pas d'éditeur graphique (photoshop / gimp / ..) vous pouvez télécharger une texture de ce type à:
round.tif
- Appliquez cette texture sur une forme qui fait la taille de votre fenêtre puis dessinez des formes en dessous (par exemple récupérez le damier de l'exercice 1)

A - Bonus
////////////////////////////////////////////////////////////////////////////////

a - reverb : exemple 07/08
b - opengl : exemple 09/01
c - separator : exemple 02/01
d - iteration : exemple 02/22
e - glsl : exemple 10/04+07+09
f - buffer 1 : exemple 04/10.pix_data_simple

B - Liens
////////////////////////////////////////////////////////////////////////////////

faq GEM :
http://puredata.info/downloads/gem/documentation/faq

Tutoriaux :
http://puredata.info/docs/tutorials

Workshops :
http://puredata.info/docs/workshops

Floss Manuel:
english : http://en.flossmanuals.net/Puredata/
français : http://fr.flossmanuals.net/Puredata/

Liste d'objets GEM:
http://gem.iem.at/documentation/manual/manual/list-of-gem-objects

Exemples de réalisations:
http://www.vimeo.com/groups/puredata