Bonjour,
Je suis actuellement en train de créer un petit utilitaire de V-jaying avec Pure Data. J'ai interfacé mon programme avec une fenêtre Qt (C++). Lien du projet en signature.
Première question : Comment je peux y voir plus clair dans mon fichier Pure Data (faire des sous patch ?....)
Deuxième question : Quand j'envoie mes valeurs de Qt à PureData tout fonctionne nickel. Dans l'autre sens, j'ai l'impression que les valeurs envoyées s'accumulent dans le programme et lorsque je change de Slider, il y a un temps non négligeable avant que ce soit le deuxième Slider qui se mette a fonctionner. Une idee ?
Merci de votre aide.
Dernière modification par Adamsky (2012-11-28 18:24:15)
Hors ligne
Salut,
l'interface pureData avec Tck est vraiment lente quand il s'acit de faire des opérations complexes;
Pour l'optimisation :
Je te conseille de virer tous les GUI de pureData dont tu ne te sers pas.
L'objet [mixer] et [colorRGB], tu peux le remplacer par [color](+ [alpha], mais ça tu l'a déja marqué), qui contrairement aux précédent est traité par la carte graphique (optimisation CPU, ne fais que la lecture des films et le netControl si possible).
ta première vidéo est en gemhead 2 et l'autre en 3, donc la première est dessous; donc en faisant varier l'alpha dans [color] du gemhead 3 tu as un résultat similaire à pix-mix, et en plus tu n'as pas besoin d'avoir la même taille d'image....
De plus dans les options de [pix-texture], tu peux choisir certains mode de blending avec env 0->5 (voire utiliser des shaders pour le mixage, plus efficace, plus créatif, plus complexe...)
Après, lire 2 films en même temps sous pureData, ça se fait, mais faut vraiment faire gaffe aux codec etc, ça fait ramer le système (surtout sur du HD....)
Sur les sliders, petite astuce : le set X, qui permet de changer la valeur du slider sans l'envoyer en même temps... Ca peux servir
Voilà, chouette le code de QT, à mon avis y'a possibilité de le mettre directement en external sous pureData, si tu as le courage, va faire un tour du coté des sources de gem, avec le CPP_EXTERN.
J'ai fini,
bon courage!
Hors ligne
Salut,
Merci pour tout ces conseils. Je vais essayer de faire tout ça.
Une autre chose que je ne comprends pas : Quand je change les couleurs sur la vidéo de gauche, cela me change les couleurs de la vidéo de droite aussi. Les paramètres de changements de couleurs pour la vidéo de droite ne font rien par contre. Je ne comprends pas du tout pourquoi
Hors ligne
Ma réponse ( hypothétique ) :
Je me suis gouré en te disant que colorRGB travaillait en CPU, la boite bosserai en GPU.
Donc la boite pix-mix accepte les 2 matrices de pixels qu'elle mixe (en CPU) et au résultat final dans le GPU est assigné la couleur ( sur ton rectangle en fait ). Dans pix-mix, l'inlet de gauche représente le chainage openGL (les instructions pour le GPU c-à-d la carte graphique) et celui du milieu uniquement le buffer image.
C'est un peu comme si tu essayait de mettre un colorRGB sur l'inlet de droite pour résumer...
La solution est dans ma première explication : vire le pix-mix et fait 2 chainages distincts ou tu joueras de l'alpha comme sur des calques de photoshop.
Hors ligne
Sinon tu peux ajouter un [separator] pour ton problème de couleur
Hors ligne
Maintenant ça fonctionne plutôt bien. J'ai utilisé la fonction de midi learn codée par ce monsieur :
http://puredata.hurleur.com/sujet-4266- … e-settings
Hors ligne
J'aimerais maintenant réaliser des fonctions de prévisualisation :
- visionner la vidéo dans une fenêtre séparée.
- appliquer des effets dessus.
- l'envoyer ensuite au mixer.
Pensez vous que c'est possible en utilisant l'extension PDP (Gem ne permettant pas l'ouverture de plusieurs fenêtres vidéos) ? Celle ci se comporte comme GEM ou est elle moins permissive ?
Hors ligne
hello : avec syphon (sur OSX) c'est possible avec plusieurs instance pd ouvertes) encore thx Nononono pour cela
Hors ligne
PDP gère bien les entrées sorties et le traitement de l'image, alors que GEM c'est plus pour de l'openGL....
Donc tu peux faire tout ça avec PDP ( gestion des fenètres et tout et tout ) mais ça bouffe beaucoup de CPU...
Si t'es sous mac rien de tel que syphon!
Hors ligne
Bon pour le moment j’améliore mon mixeur de vidéo en ajoutant des effets, je verrais plus tard pour les fonctions de prévisualisation.
J'ai rajouté deux effets sur les vidéos. Pour le moment ça tourne pas trop mal mais je pense que ça peut vite devenir très lourd. Existe il un moyen simple pour faire travailler les objets [pix_kaleidoscope] et [pix_backlight] sur la carte graphique ?
Je vois joint un des fichiers ou le traitement se fait. Si vous voulez tous les fichiers vous pouvez les télécharger dans le bitBucket en signature.
Dernière modification par Adamsky (2012-12-13 16:44:33)
Hors ligne
Adamsky a écrit:
Existe il un moyen simple pour faire travailler les objets [pix_kaleidoscope] et [pix_backlight] sur la carte graphique ?
Oui : en passant par des shaders glsl. Il y a pas mal de post dans la section puredata qui parlent de ça.
Hors ligne
Je suis allé voir mais je ne trouve pas une explication claire quant a l'utilisation de ceux-cis. Quelqu'un pourrait il m'expliquer ? Ou me fournir un lien que je n'ai peut etre pas vu.
Hors ligne
la doc de wkikipedia à ce sujet :
http://fr.wikipedia.org/wiki/Shader
les docs du site du zéro :
http://www.siteduzero.com/tutoriel-3-88 … -glsl.html
bon après clairement ça va être du boulot de coder les effets dont tu parles avec du glsl, mais à ma connaissance c'est la seule façon d'avoir les effets tournant sur la carte graphique...
Hors ligne
Bonsoir,
J'essaie d'utiliser les shaders que j'ai trouvé dans le fil de discussion sur les shaders. mais j'ai un souci dans le chaînage. Est il possible de chaîner un shader avec un [colorRGB] pour pouvoir utiliser l'effet du shader (ici bloom) et celui de l'objet [colorRGB] sur la même vidéo ?
Je vous met le patch rapide sur lequel je teste, j'ai expliqué mon souci dedans. Désolé je suis encore débutant, j'ai parfois du mal a comprendre rapidement.
Merci de votre aide.
Adam
Hors ligne