IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

2D Java Discussion :

TexturePaint et AffineTransform


Sujet :

2D Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 035
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 035
    Par défaut TexturePaint et AffineTransform
    Bonjour.
    Je cherche à implémenter un morphing basé sur de la triangulation.

    Lors de l'animation, je dois appliquer une transformation sur la texture pour faire correspondre les pixels sur les sommets des triangles en mouvement.
    Je l’ai fait en flex et en Qt mais je n'ai pas trouvé cette possibilité avec Java2D.

    Est il possible d'appliquer une AffineTransform sur un TexturePaint ou faut’ il que je créé une nouvelle texture avec la transformation pour chaque triangle?

    Comme je ne connais rien au monde JAVA, il existe peut être une autre api adapté à mon besoin?

    Je pensais regarder Java3D mais comme cette appli devra être exécuté sur un serveur, je pense que rester dans une API 2D est plus adapté.


  2. #2
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 035
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 035
    Par défaut
    Salut.
    Pour ceux que cela intéresse :
    1- calculer la matrice de transformation de la texture pour le mapping.
    2- appliquer la matrice sur le Graphics2D.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     g.setTransform(affTransForm);
    On doit pouvoir concaténer avec la transformation courante du Graphics2D mais je ne connais pas le sens. A tester
    3- on utilise la transfo inverse pour repositionner la shape à dessiner au bon endroit
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
     g.fill(
           affTransForm.createInverse().createTransformedShape(myShape)
     );
    Avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    g.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
                    RenderingHints.VALUE_ANTIALIAS_ON);
            g.setRenderingHint(RenderingHints.KEY_RENDERING,
                    RenderingHints.VALUE_RENDER_QUALITY);
    Ca semble farpait

  3. #3
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 035
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 035
    Par défaut
    Pour ceux qui n'ont rien compris voici ce que je cherchez à faire
    http://lab.andre-michelle.com/linear-texture-mapping
    avec les explications
    http://www.renderhjs.net/bbs/flashki...h_tutorial.gif

  4. #4
    Expert confirmé
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Par défaut
    Une petite astuce en passant qui permet de ne pas avoir à s'emmerder à appliquer les transfos inverses. Tu peux créer un contexte graphique temporaire grâce à la méthode create des graphics que tu as déjà à disposition , appliquer ta transformation, dessiner dessus puis finaliser les graphics temporaires avec la méthode dispose. Ainsi aucune transfo ne sera appliquée sur les graphics originaux, mais tu auras quand même dessiné tout de la bonne façon avec les bonnes textures, transfos & hints.

  5. #5
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 035
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 035
    Par défaut
    Je vais regarder cela merci.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. problème avec AffineTransform
    Par slim_java dans le forum 2D
    Réponses: 2
    Dernier message: 30/06/2009, 17h11
  2. Anticrénelage avec AffineTransformations
    Par a7aa7a dans le forum 2D
    Réponses: 1
    Dernier message: 26/06/2009, 05h12
  3. JScrollPane et AffineTransform / zoom
    Par Niark13 dans le forum Agents de placement/Fenêtres
    Réponses: 4
    Dernier message: 02/03/2009, 15h53
  4. [TexturePaint] Déplacement de formes
    Par Pascmar dans le forum 2D
    Réponses: 8
    Dernier message: 28/08/2008, 11h30
  5. Zoom puis translation avec AffineTransform
    Par mm2405 dans le forum Interfaces Graphiques en Java
    Réponses: 2
    Dernier message: 04/06/2007, 13h50

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo