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

XNA/Monogame Discussion :

XNA 2d, Inversion d'images


Sujet :

XNA/Monogame

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 7
    Points : 5
    Points
    5
    Par défaut XNA 2d, Inversion d'images
    Bonjour,

    Je développe un jeux ou j'ai des voitures qui circulent sur l'ecran. J'ai une classe Car ou j'importe l'image de ma voiture.
    Pour plus de réalisme j'aimerais pouvoir inverser l'image de ma voiture de manière a en avoir qui vienne de gauche et de droite et qu'elle roule dans le bon sens pas a l'envers.
    Existe il une méthode pour inverser une image ?

    Merci par avance

  2. #2
    Membre éprouvé
    Avatar de Ange_blond
    Homme Profil pro
    Ingénieur développement en 3D temps réel
    Inscrit en
    Mars 2007
    Messages
    902
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement en 3D temps réel
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2007
    Messages : 902
    Points : 1 179
    Points
    1 179
    Par défaut
    Salut

    Heuuu je n'ai pas compris ce que tu cherches à faire exactement, mais ce que je peux te dire, c'est que inverser une image n'est pas difficile, tu peux écrire une méthode toi même... par contre il se peut que ce soit un peu couteu et donc il faut optimiser ta méthode si tu fait ça en temps réel...
    "le langage C permet de tout faire, y compris se tirer dans le pied. Le langage C++ permet de tout faire, y compris se tirer dans le pied - et réutiliser la balle"

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 7
    Points : 5
    Points
    5
    Par défaut
    En fait. J'ai des voitures qui viennent de la gauche de l'écran et vont vers la droite. Et inversement. Pour ces voitures j'utilise la même image.
    Dans un sens c logique la voiture avance. Dans l'autre elle recule lol, normal l'image n'est pas inversé (rotation 180 °).

    Ce que je voulais savoir, c'est si il est plus "présentable" de faire 2 classes différentes pour les voitures, une pour celle qui viennent de gauche et une pour celle qui vienne de droite. Ou alors si il existe un moyen d'inverser l'image.

    Merci par avance

  4. #4
    Membre éprouvé
    Avatar de Ange_blond
    Homme Profil pro
    Ingénieur développement en 3D temps réel
    Inscrit en
    Mars 2007
    Messages
    902
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement en 3D temps réel
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2007
    Messages : 902
    Points : 1 179
    Points
    1 179
    Par défaut
    ben il existe un moyen d'inverser l'image oui...

    il suffit de "basculer" les pixels de gauche à droite et inversement... seulement ça peut etre couteux, alors il faut faire en sorte de ne le faire qu'une fois par exemple...
    "le langage C permet de tout faire, y compris se tirer dans le pied. Le langage C++ permet de tout faire, y compris se tirer dans le pied - et réutiliser la balle"

  5. #5
    Membre actif Avatar de Gulix
    Inscrit en
    Septembre 2005
    Messages
    268
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Septembre 2005
    Messages : 268
    Points : 273
    Points
    273
    Par défaut
    Tu n'as pas forcément besoin de faire une autre classe. Une autre ressource avec l'image inversée pourrait suffire. Tu fais ensuite une vérification du sens de ta voiture avant de l'afficher, pour bien sélectionner ta texture.
    "L'univers... on croit qu'il est infini mais quand on arrive au bout un gorille géant vous balance des tonneaux."
    Phillip J. Fry

    http://www.gulix.fr/

    BlindShark, Logiciel de Blind Test - Pull N' Bounce - Jeu XNA

  6. #6
    Expert confirmé

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2007
    Messages
    1 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 895
    Points : 4 551
    Points
    4 551
    Par défaut
    Citation Envoyé par Gulix Voir le message
    Tu n'as pas forcément besoin de faire une autre classe. Une autre ressource avec l'image inversée pourrait suffire. Tu fais ensuite une vérification du sens de ta voiture avant de l'afficher, pour bien sélectionner ta texture.
    Pas forcément besoin d'utiliser 2 ressources ou de copier l'image et de l'inverser - le framework XNA sait très bien faire tout ça tout seul.

    Si tu affiches les images via un SpriteBatch, tu peux utiliser n'importe quel overload de Draw() qui prends un SpriteEffects en argument - et lui passer SpriteEffects.FlipHorizontally pour effectuer une rotation de 180° autour de l'axe Y.

    Voilà
    [FAQ des forums][FAQ Développement 2D, 3D et Jeux][Si vous ne savez pas ou vous en êtes...]
    Essayez d'écrire clairement (c'est à dire avec des mots français complets). SMS est votre ennemi.
    Evitez les arguments inutiles - DirectMachin vs. OpenTruc ou G++ vs. Café. C'est dépassé tout ça.
    Et si vous êtes sages, vous aurez peut être vous aussi la chance de passer à la télé. Ou pas.

    Ce site contient un forum d'entraide gratuit. Il ne s'use que si l'on ne s'en sert pas.

  7. #7
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 7
    Points : 5
    Points
    5
    Par défaut
    Euh, j'ai pas trop compris ton histoire de SpriteEffect. En fait je vois pas comment l'intégrée a ce que j'ai déjà.
    J'ai une classe Voiture qui hérite d'une autre classe World. Dans ma classe voiture j'ai la gestion de la vitesse et la gestion du sens.
    Ma classe world hérite de DrawableGameComponent. et gère l'affichage des spritebatch.
    Et enfin ma classe Game ou je créé mes objets.

    Le sprite effect devra être rajouté sur ma classe abstraire World ? Comment gérer le fait que tous les objets (voiture ou autres) ne seront pas forcément inversé ?

  8. #8
    Membre actif Avatar de Gulix
    Inscrit en
    Septembre 2005
    Messages
    268
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Septembre 2005
    Messages : 268
    Points : 273
    Points
    273
    Par défaut
    Pas forcément besoin d'utiliser 2 ressources ou de copier l'image et de l'inverser - le framework XNA sait très bien faire tout ça tout seul.

    Si tu affiches les images via un SpriteBatch, tu peux utiliser n'importe quel overload de Draw() qui prends un SpriteEffects en argument - et lui passer SpriteEffects.FlipHorizontally pour effectuer une rotation de 180° autour de l'axe Y.

    J'connais pas très bien encore le SpriteBatch, mais c'est vrai que c'est ce qui semble le plus simple.

    Le sprite effect devra être rajouté sur ma classe abstraire World ? Comment gérer le fait que tous les objets (voiture ou autres) ne seront pas forcément inversé ?
    Tu dois pouvoir redéfinir ton Draw dans ta classe Voiture, non ? Dans ce cas, comme tu connais le sens, tu sais si tu dois utiliser le SpriteEffect ou pas.
    "L'univers... on croit qu'il est infini mais quand on arrive au bout un gorille géant vous balance des tonneaux."
    Phillip J. Fry

    http://www.gulix.fr/

    BlindShark, Logiciel de Blind Test - Pull N' Bounce - Jeu XNA

  9. #9
    Expert confirmé

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2007
    Messages
    1 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 895
    Points : 4 551
    Points
    4 551
    Par défaut
    Citation Envoyé par xnagamer Voir le message
    Euh, j'ai pas trop compris ton histoire de SpriteEffect. En fait je vois pas comment l'intégrée a ce que j'ai déjà.
    J'ai une classe Voiture qui hérite d'une autre classe World. Dans ma classe voiture j'ai la gestion de la vitesse et la gestion du sens.
    Ma classe world hérite de DrawableGameComponent. et gère l'affichage des spritebatch.
    Et enfin ma classe Game ou je créé mes objets.

    Le sprite effect devra être rajouté sur ma classe abstraire World ? Comment gérer le fait que tous les objets (voiture ou autres) ne seront pas forcément inversé ?
    Une voiture est un monde ? Concept intéressant

    Plus sérieusement, la seule chose dont tu as besoin est de savoir dans quel sens se déplace la voiture. Cela peut être un booléen ou un simple test sur une variable. Au final, au lieu d'utiliser la fonction SpriteBatch.Draw() sous sa forme la plus simple, tu utilises une des versions qui prends un SpriteEffect en paramètre, comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    SpriteEffects effect = SpriteEffects.None;
    if (mustReverseTheCar)
    {
      effect = SpriteEffects.FlipHorizontally;
    }
    theBatch.Draw( ..., effect, ...);
    Pour plus d'informations:
    [FAQ des forums][FAQ Développement 2D, 3D et Jeux][Si vous ne savez pas ou vous en êtes...]
    Essayez d'écrire clairement (c'est à dire avec des mots français complets). SMS est votre ennemi.
    Evitez les arguments inutiles - DirectMachin vs. OpenTruc ou G++ vs. Café. C'est dépassé tout ça.
    Et si vous êtes sages, vous aurez peut être vous aussi la chance de passer à la télé. Ou pas.

    Ce site contient un forum d'entraide gratuit. Il ne s'use que si l'on ne s'en sert pas.

  10. #10
    Membre à l'essai
    Profil pro
    Directeur de projet
    Inscrit en
    Août 2008
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : Santé

    Informations forums :
    Inscription : Août 2008
    Messages : 7
    Points : 19
    Points
    19
    Par défaut
    Vu que nous sommes en 2D j'aurrais plutot dit que la transformation est une simétrie axiale par rapport à une droite verticale qui passe par le milieu du sprite.

    En 3D ou ferait plutôt une rotation autour d'un axe vertical passant "au milieu" de la voiture mais en 2D on ne peut pas faire de rotation par rapport à un axe mais seulement par rapport à un point.

    PS: Oui je sais que c'est mal de détérer les vieux sujets mais là je trouvais la correction pertinante pour les nouveaux (comme moi) qui liraient ce sujet.

Discussions similaires

  1. Réponses: 1
    Dernier message: 27/09/2009, 19h38
  2. comment inverser une image en .NET ?
    Par subzero01 dans le forum Windows Forms
    Réponses: 7
    Dernier message: 10/02/2009, 15h31
  3. [Débutant] Inverser une image (effet miroir)
    Par pedrosanchau dans le forum Images
    Réponses: 2
    Dernier message: 14/01/2009, 17h32
  4. [XNA] Problème superposition d'image
    Par Luffy49 dans le forum XNA/Monogame
    Réponses: 1
    Dernier message: 26/02/2008, 12h11
  5. [debutante] Inversion d'Image en java
    Par LN9 dans le forum AWT/Swing
    Réponses: 1
    Dernier message: 02/02/2006, 19h13

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