tlecoz avait relancé le post sur l'anamorphose en proposant une version largement plus clean de mon pauvre script et ça faisait un bail que j'avais ça dans un coin de la tête. http://www.nicoptere.net/blog/index.php/2007/06/20/6-anamorphose#c151 alors franchement niveau rendu c'est très propre, parcontre niveau temps voila ce qu'il m'a sorti : "la polarisation a pris 9823 millisecondes" hors 10secondes (compilation dans FD3 comprise), ça fait un peu beaucoup même pour de la très haute qualité.

J'ai téléchargé PV3D hier soir (tard) pour commencer à jouer avec et dans le dossier d'install il y avait un pack de classes estampillé blitzagency. donc je suis allé voir il font des trucs bien pointus en PV3D ( à voir : http://labs.blitzagency.com/ ) et je suis tombé sur un article à propos de la combinaison polarisation - soundspectrum qui m'a mis la larme à l'oeil et le feu au slip : http://labs.blitzagency.com/?p=118

donc je me suis empressé de regarder comment était foutu le script et évidemment, il y a 2 lignes que je n'aurais pas trouvées mais le reste, plus tout con tu meurs. la grosse différence c'est que ça permet de traiter la même image (1000*500pix) en 250 millisecondes ce qui est beaucoup plus raisonnable.
En fait j'ai repris la fonction proposée par blitzagency et j'ai typé les variables Number en int et uint, enlevé des trucs de ci de là et au final, j'ai réussi à dégraisser 30% de temps de calcul ce qui est très très bien pour une fin de semaine :)

Le prix à payer c'est une approximation parfois un peu plus abrupte des valeurs mais au final le résultat est comparable

ci dessous un exemple du truc :

j'ai laissé l'original pour comparer, commenté la source. dans la version modifiée, j'ai mis une booléenne resize et le diviseur pour le rayon ... à tester.

Un exemple valant mieux que de longs discours, voila une appli :

attention en appuyant sur webcam tu vas multiplier la consommation de ton CPU par 2 mais comme c'est hyper trop beau tu ne pourras pas résister j'en suis sûr.


Alors sinon le principe :

  • on prend un son et on le charge
  • on instancie polo, un objet de type Polo, comme le bonbon le plus trou qui est une variation sur Polarize là haut
  • a la mise à jour:
    • on fait un computeSpectrum
    • en fonction des sliders RGB et de l'intensité on obtient une valeur ARGB
    • on dessine un rectangle de côté pasH et de hauteur pasV dans le bitmap du spectre
    • on copie le bitmap du spectre dans un autre qui s'appelle transfert
    • on demande à polo de le polariser le bitmap transfert
    • + si la vidéo est activée, on calcule un displacementMapFilter à partir du bitmap de sortie et on l'applique à la vidéo ce qui donne un effet fleubeuleub

les sliders sont relativement explicites je crois. Le displacementMap est indexé sur les canaux vert et bleu donc en les passant à zéro, ça annule l'effet sur la vidéo... tu verras quoi ... au final sur ma machine, l'animation se traîne autour de 30% et monte à 70% avec la webcam mais ça reste moins que chez blitzagency où c'est du 100% direct.

Donc pour la musique j'ai mis des trucs assez différents :

  • _ghost - lullaby qui est plutôt dans les basses fréquences et ici http://ccmixter.org/media/files/_ghost/3631
  • (re) Opérateur Fotokopieur - DCC : les gros breaks au début qui feront toujours la différence : http://www.midinetterecords.net/midi06.html#bas
  • Besh o drom - koczkaé : un groupe Hongrois qu'il faut avoir vu en live avant de mourir. l'instrument dans cette chanson est un cymbalum, instrument à cordes frappées, assez bizarre. en tous cas les fréquences sont très très très différentes de celles du lullaby et c'est pour ça qu'il est là.
  • Mr Bungle - california juste parce que j'aime bien :) non, en fait plusieurs ambiances très variées dans la même piste. à écouter.

Alors là pour le coup celui là ne sert vraiment, mais alors vraiment à rien... :)