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

SDL Discussion :

Effet jeux-vidéo 3D en programmation


Sujet :

SDL

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2011
    Messages
    447
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 447
    Par défaut Effet jeux-vidéo 3D en programmation
    Bonjour,

    Je cherche à faire un effet visuel comme dans cette vidéo ou l'on voit le personnage changer en différentes couleurs, et y faire en pure code, juste en utilisant la SDL.


    Merci d'avance.

  2. #2
    Expert confirmé
    Avatar de Kannagi
    Homme Profil pro
    cyber-paléontologue
    Inscrit en
    Mai 2010
    Messages
    3 226
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cyber-paléontologue

    Informations forums :
    Inscription : Mai 2010
    Messages : 3 226
    Par défaut
    C'est pas très compliqué ,c'est une animation de palette.
    c'était assez utilisé à cette époque (surtout que c'était peu coûteux de changer la palette a chaque frame qu'un sprite :p ).

    Par exemple Secret of Mana en abuse beaucoup :


    Vers 1m30 : Que ça soit l'eau ou la cascade, tout n'est que animation de palette

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2011
    Messages
    447
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 447
    Par défaut
    D'accord.

    J'aurai pensé que pour l'eau c'était des sprites.

    Donc par exemple si ma palette contient la couleur bleu (0, 0, 255) qui est à la position index 1 et que je veux faire un effet à la prochaine frame je lui dis que je veux que la couleur bleu soit à l'index 2 par exemple et que à l'index 1 on met du rouge (255, 0, 0). C'est ça ?

  4. #4
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    27 113
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 27 113
    Billets dans le blog
    147
    Par défaut
    Bonjour,

    La même technique de changement de palette, pour aller encore plus loin:

    Généralement, les petits effets d'eaux et de vague, ça peut être soit de l'alternance de deux sprites, ou alors de l'alternance de palette.

    En SDL 1.4, il y avait une gestion de la palette. Il semble que ce soit toujours d'actualité : https://wiki.libsdl.org/SDL_SetPaletteColors
    Pour le changement de la palette, pour l'eau notamment, il faut faire une palette qui "tourne" :
    Vous avez deux ou quatre couleurs dans votre palette. À chaque tick, vous faites en sorte que la couleur 1 devienne la couleur 2, la couleur 2 devienne couleur 3 et ainsi de suite.
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  5. #5
    Expert confirmé
    Avatar de Kannagi
    Homme Profil pro
    cyber-paléontologue
    Inscrit en
    Mai 2010
    Messages
    3 226
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cyber-paléontologue

    Informations forums :
    Inscription : Mai 2010
    Messages : 3 226
    Par défaut
    Citation Envoyé par hbx360 Voir le message
    J'aurai pensé que pour l'eau c'était des sprites.
    La SNES c'est 5Ko/frame , ce qui est pas énorme , et le budget était déjà pris par l'update des persos/pnj/ennemi / scrolling et magie , alors pour l'animation du BG fallait quand même y aller mollo

    Citation Envoyé par hbx360 Voir le message
    Donc par exemple si ma palette contient la couleur bleu (0, 0, 255) qui est à la position index 1 et que je veux faire un effet à la prochaine frame je lui dis que je veux que la couleur bleu soit à l'index 2 par exemple et que à l'index 1 on met du rouge (255, 0, 0). C'est ça ?
    Comme dit LW , il faut juste que la palette tourne , en général on envoie juste l'adresse+x , x par exemple de 0 à 16 (comme sur SNES ), vu que la SNES avait des palettes de 16 couleurs pour les sprites ( faut que la palette soit 2 fois plus grande pour la copie).

    Mais il me semble que j'ai déjà vu de l'animation de palette pour des jeux 3D (sur PSP) , donc c'est une technique qui a quand meme perduré longtemps.

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2011
    Messages
    447
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 447
    Par défaut
    Merci pour votre aide , je vais faire quelques testes pour voir ce que ça donne.
    Je trouve ça vraiment intéressant.
    Je marque en résolu.

  7. #7
    Expert confirmé
    Avatar de Mat.M
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    8 526
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 8 526
    Par défaut
    Citation Envoyé par hbx360 Voir le message
    J'aurai pensé que pour l'eau c'était des sprites.
    faut pas se casser la tête avec la gestion des palettes si c'est pour faire un effet de couleurs surtout pour un effet eau.
    Il suffit avec un logiciel de retouche genre Krita sélectionner une zone puis changer le contraste de la zone

    cf l'image jointe par exemple
    Nom : planche.jpg
Affichages : 165
Taille : 110,8 Ko

    Après dans le code faire un tableau dynamique de std::vector ou de toute ce que vous voudrez une liste..puis avec un pointeur d'image cadre ça permet de faire des animations

  8. #8
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2011
    Messages
    447
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 447
    Par défaut
    Merci pour tes conseils.

    J'ai essayé pour modifier la palette dans la boucle mais c'est pas ouf car comment je peux savoir pour faire les échange de couleur pour faire l'arc en ciel comme dans la vidéo.

  9. #9
    Expert confirmé
    Avatar de Kannagi
    Homme Profil pro
    cyber-paléontologue
    Inscrit en
    Mai 2010
    Messages
    3 226
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cyber-paléontologue

    Informations forums :
    Inscription : Mai 2010
    Messages : 3 226
    Par défaut
    Sans code , sans plus de détails impossible de répondre.
    Mais il faut que toute les palette ont la même taille (donc faut mieux éviter les palette de 256 couleurs :p ).

  10. #10
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    27 113
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 27 113
    Billets dans le blog
    147
    Par défaut
    Citation Envoyé par hbx360 Voir le message
    J'ai essayé pour modifier la palette dans la boucle mais c'est pas ouf car comment je peux savoir pour faire les échange de couleur pour faire l'arc en ciel comme dans la vidéo.
    Pour l'arc en ciel, soit vous vous créez une palette arc-en-ciel. Soit, vous faites une conversion RGB vers HSV, et en HSV, vous modifiez la Hue (H) (sans toucher les autres) et vous reconvertissez tout ça en RGB et vous aurez un arc-en-ciel.
    Et du coup, pour l'appliquer, vous pouvez faire en sorte d'appliquer un masque ou similaire, sur le sprite qui fait une opération du style "ajout de couleur" ou multiplication. On peut tester cela avec les calques dans Gimp (ou similaire).
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  11. #11
    Expert confirmé
    Avatar de Kannagi
    Homme Profil pro
    cyber-paléontologue
    Inscrit en
    Mai 2010
    Messages
    3 226
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cyber-paléontologue

    Informations forums :
    Inscription : Mai 2010
    Messages : 3 226
    Par défaut
    Oui enfin dans sa vidéo , c'est clairement une palette arc en ciel , et c'est vraiment basique à faire

  12. #12
    Expert confirmé
    Avatar de Mat.M
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    8 526
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 8 526
    Par défaut
    on peut simplement obtenir la SDL_Surface et jouer sur les pixels aussi c'est une alternative à manipuler les teintes R,G,B.
    https://wiki.libsdl.org/SDL_Surface

  13. #13
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2011
    Messages
    447
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 447
    Par défaut
    LittleWhite, Je vais regarder ça, merci.

    Citation Envoyé par Kannagi Voir le message
    Sans code , sans plus de détails impossible de répondre.
    Mais il faut que toute les palette ont la même taille (donc faut mieux éviter les palette de 256 couleurs :p ).
    Le problème c'est que mon code est pas ouf et je l'ai fait à l'arrache donc difficile de montrer quelque chose de potable. Il faut que je refasse un code propre enfin du mieux que je peux.

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 19/06/2008, 16h41
  2. Réponses: 9
    Dernier message: 12/12/2007, 11h31
  3. Les métiers de la programmation dans les jeux vidéos
    Par NiamorH dans le forum Développement 2D, 3D et Jeux
    Réponses: 36
    Dernier message: 09/10/2007, 14h10

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