Effet fluidité de photoshop
busterTheo
Membre
Bonjour, j'essaie de réaliser le même (ou presque) effet que le filtre "Fluidité" de "Photoshop".
Voir fichier joint.
J'ai fait plein de recherches : j'ai vu tous les CIFilters, ainsi que les CIKernels pour faire des filtres custom persos.
Mais je ne vois pas comment faire cet effet.
En gros, j'ai besoin de pouvoir, sur une photo, étirer les pixels dans la direction où je les emmène.
Si quelqu'un a une idée, ce serait intéressant.
Merci d'avance.
busterTheo
Fichier joint :
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
Redimensionne l'image sur l'axe x, sans toucher à l'axe y et tu auras ton étirement.
C'est un sujet qui est assez complexe en reÌaliteÌ ce que tu peux faire c'est le faire avec un mesh.
Ton image est plaqueÌe comme texture sur le mesh et tu deÌforme le mesh comme tu veux, la texture suivra.
Tu peux tester dans Quartz Composer.
Il va falloir que tu te deÌbrouille pour l'algo de deÌformation.
Voici une autre technique, qui est à mon avis utilisée par Photoshop: on utilise une deuxième texture, dont chaque texel est un vecteur 2D indiquant un déplacement par rapport à la position d'origine. Ensuite, il est facile de concevoir un UIKernel qui utilise les deux textures pour déplacer les pixels. Mais bon, personnellement, ici j'utiliserais directement OpenGL ES, parce que faire ça avec CoreImage s'annonce galère.
La principale difficulté est de créer cette texture de déplacement. À l'origine, tous les vecteurs sont à zéro. Ensuite, sur un touch, il faut additionner les déplacements horizontaux et verticaux aux vecteurs, dans un certain rayon autour du doigt.
Ce qui est difficile est de faire cela rapidement, ce qui veut dire avec le GPU. Par exemple, moi, je dessinerais un cercle (dont le "gris" dépend du déplacement) dans un Framebuffer avec un Fragment Shader. Un deuxième Fragment shader irait additionner le framebuffer à la texture de déplacement.
Je ne suis pas certain du résultat, mais ce sont des choses qu'on fait assez classiquement en 3D temps réel.
Grand merci pour ta grande réponse et désolé pour le grand retard.