begin process at 2012 02 13 08:18:37
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Direct X

 > ANIMATION DE FEU (EN DIRECTX)

ANIMATION DE FEU (EN DIRECTX)


 Information sur la source

Note :
7,6 / 10 - par 5 personnes
7,60 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Direct X Niveau :Débutant Date de création :08/12/2003 Date de mise à jour :09/12/2003 19:49:56 Vu / téléchargé :9 964 / 916

Auteur : BumpMANN

Ecrire un message privé
Ce membre participe au partage de revenus publicitaires
Commentaire sur cette source (33)
Ajouter un commentaire et/ou une note


 Description

Cliquez pour voir la capture en taille normale
Voici une petite source expliquant comment faire un animation de feu avec directx.

J'ai fait l'équivalent en C, pour Gameboy advance:
http://www.cppfrance.com/code.aspx?ID=185 25


 Conclusion

Je fais une explication globale du programme.

1 - On crée une palette contenant les teintes de la flamme. J'ai utilisé cette palette:

0 -------- 32 ------- 64 ------------ 128 ---------- (index) ------ 255
---------------------------------------------- -----------------------------
|    Noir   | ->rouge |    -> jaune     |            > Blanc                  |
------------------------------------------------ ---------------------------
-- 1/8 ------ 1/8 -------- 1/4 ----------------- 1/2 ----- (Proportion)

2 - On dessine les deux premieres lignes de feu:
début de boucle.
1er ligne: chaque pixels entre 0 et 255
2em ligne: chaque pixel SOIT 0, SOIT 255 (pour les divergences et irrégularités)

3 - Flou
On fait la moyenne des pixels environnants, et ceci pour chaque pixels:
(copix = couleur pixel)
copix = (copix + copix gauche + copix droit + copix haut + copix bas) / 5

4 - Deplacement des flammes
on déplace chaque pixels vers le haut en diminuant la couleur de la flamme:
pix(x,y-1) = pix(x,y) - random(0,consumation_max)

5 - Affichage
de chaque pixel.
fin de boucle.

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !
  •   FEUVB

Télécharger le zip


 Sources du même auteur

Source avec Zip Source avec une capture IMAGES ET EFFETS HLSL / SHADERS DIRECTX 9
Source avec Zip Source avec une capture UN PETIT JEU DE PLATEAU
Source avec Zip Source avec une capture IA - RESEAU DE NEURONE: LE PERCEPTRON
Source avec Zip Source avec une capture RPG: 5 JOURS POUR FAIRE LES BASES (AVEC DIRECTX)
Source avec Zip ECLAIRAGE SANS DIRECTX (5) - ROTATION ET ZOOM

 Sources de la même categorie

Source avec une capture HAPPY LAND - 3D VB6 GAME - OPEN SOURCE CODE par ZaidMarkabi
Source avec une capture METAL GEAR SOLID - 3D VB6 GAME - OPEN SOURCE par ZaidMarkabi
Source avec une capture FIGHT COMBAT II - 3D VB GAME - OPEN SOURCE par ZaidMarkabi
Source avec Zip Source avec une capture UTILISER LA CAMERA POUR DIRECTX par zulrigh
Source avec une capture STREET FIGHTER - 3D VB GAME - OPEN-SOURCE par ZaidMarkabi

Commentaires et avis

Commentaire de slayer le 08/12/2003 10:06:31

c'est plutot bien reussi ...

Commentaire de BumpMANN le 08/12/2003 18:06:14

Conseil pour développer avec DIRECTDRAW: Même si vous avez le directx sdk 8 ou 9, ayez le 7! dans celui-ci, on trouve une aide complete sur toutes les fonctions de DirectDraw, ainsi que des exemples et tutoriaux ^^

Commentaire de DragonDo le 08/12/2003 19:22:17

L'effet est sympa, mais je le trouve un peu lent (à moins que ce ne soit à cause de ma machine PIII 450 Mhz).
Sinon, rien que pour le code ça vaut vraiment le coup. Merci

@+

Commentaire de BumpMANN le 08/12/2003 19:30:16

mhhhh... 450Mhz? si tu veux quelque chose qui ne ramme pas, décalage = 250, inactivité = 420, consummation = 8

le feu sera évidemment plus petit, mais le programme ne rammera pas...

Commentaire de Kirua le 09/12/2003 12:58:17

exe stp bumpmann, j'ai pas VB, mais ce qui vient de toi vaut le coup d'être vu normalement.

Commentaire de LaPatoshe le 09/12/2003 19:46:04

L'effet est relativement sympa pour un programme qui n'utilise pas de texture.
A plus

Commentaire de BumpMANN le 09/12/2003 19:48:56

Voilavoila l'exe ^^;

Commentaire de BumpMANN le 09/12/2003 19:52:36

heuuuuu.. j'ai remarqué un nouveau truc. en dessous du chemin d'acces du zip, lors de la mise a jour,

"(Evitez de mettre des éxécutables dans vos zips merci de votre compréhension, les .exe seront automatiquement supprimé lors de l'upload)"

Il ne me la pas supprimé pourtant :S

Commentaire de Kirua le 09/12/2003 20:31:14

non je sais, c'est Nix qui fait des menaces sans les exécuter (le mot est juste), on dirait un nouveau prof :-D
rien de personnel Nix ;-)

et puis c'est franchement plus simple s'il y a un exe, j'ai confiance...

Commentaire de LaPatoshe le 09/12/2003 20:31:57

impec

Commentaire de VbMaster le 12/12/2003 22:17:19

magnifique dommage que ca rame à fond mais en l'optimisant, ca ferait un bô screensaver (meerde mon écran brûle ah non c'est le screensaver lol)

Commentaire de nihaoma le 23/12/2003 23:44:01

l'effet est plutot sympa, c'est jolie, on s'y croirait... mais c'est clair que c un peu lent, impossible de l'utiliser dans un jeu, par contre en screensaver ou bien en visu style winamp (en modifiant les paramètres en temps réel) ca pourait etre sympa
8/10

Commentaire de vr3h le 05/01/2004 12:06:36

Bonjours à tous,
Très sympa et très bien réalisé, ca peut être très pratique pour générer des textures de Feu à utiliser dans un monde en 3D ;)
il n'y a qu'a rajouter quelques fonctions ou modifier un peu le code et ce sera tout bon (dessiner par exemple sur une surface dont la dimension est une puissance de 2, et sauvegarder chaque image)
Amusez vous bien et GG à BumpMann

Commentaire de lucky2222 le 12/03/2004 11:55:44

c'est super jolie! justement, en parlant de'ecran de veille! serait il possible de modifier cette source (oui c'est possible!!!) pour obtenir une boule de feu! jusque la, oui c'est toujours possible! mais quels parrametre devrais je modifier pour obtenir cette boulle?

boulle de feu pouvant representer le soleil!

car je cherche a faire un ecran de veille avec un systeme solaire et donc, pas besoin qu'elle soit tres grosse cette boule (afin de ne pas trop ralentir le pc, mais ce serai joli!

si quelqun voir comment cette jolie flamme pourrai etre transformée en boule, je le remerci! car je n'ai pas tout compris de se code malgret le degropage des etapes! merci a tous!
moi je met 10 car c'est trop beau ce feu! meme si mon pc aussi rame! pour vu qu'il ne chauffe pas trop et que le feu ne se propage pas de l'ecran a l'unité centrale!

Commentaire de BumpMANN le 12/03/2004 17:14:50

hé ben pour obtenir une boulle de feu, c'est assez simple! il suffit de mettre un pixel en blanc (255 sur la palette), a la 2em étape, qui est le centre de la boulle de feu. les flammes se feront dans les etapes d'apres.

Commentaire de lucky2222 le 13/03/2004 12:32:39

j'ai pas trop bien compris! tu m'en excuse j'espere! mais ce que je voudrai faire, c'est une boulle de feu au centre de l'ecran avec tes jolie flammes a la circonferance!

le pixel blanc est a ajouter si on desir effectuer une boule de feu dans tes flames qui ont comme origine le bas de l'ecran si j'ai bien compris!

mais la, je voudrai donner comme origine aus flammes un cercle qui se trouverai au centre de l'ecran! donc il dois falloir donner comme dirrection aux flammes des rayons et non plus des droites verticales

tu vois ce que je veux dire?

en fait, ce que je n'ai pas capté a la source pour l'appliquer au "soleil",  c'est la partie de prog qui genere le feu sur un seul ligne!

une fois cette partie du prog compris, il suffit de l'appliqué soit sur les verticales aillant comme orrigine le bas de l'ecran, ou alors dans mon cas, cette ligne serai un rayon aillant comme origine la bordure d'un cercle!

mon gros probleme de compréention vient de mes competances avec directx, c'est la premier fois que je me panche sur le probleme!

merci ! (encore un os a ronger ;-))))

Commentaire de BumpMANN le 13/03/2004 22:54:24

mhh? j'ai pas testé mais le pixel blanc produit un flou, qui produit un flou qui produit un flou etc... donc une boulle. tu peut retirer le déplacement vers le haut et je dirais que c'est bon.... ptet diminuer la consummation.... mais je pense que ca marcherait non?

Commentaire de lucky2222 le 13/03/2004 23:44:10

en fait, pour ma boule de feu, voici comment je trace les rayons!

Function Soleil()
Form1.Show
   Dim Rayon As Integer
        Rayon = 250 'Text1.Text 'longueur
        b = Form1.Height / 2  'centre vertical de la form
        a = Form1.Width / 2  'centre horizontal de la form
coul = &H80FFFF 'couleur jaune
        Form1.Circle (a, b), (250), coul
longueur = 3 'longueur du rayon
        For h = 0 To 60
                    c = a + (Sin(h / 9.55) * (Rayon * 1.2))
                    d = b - (Cos(h / 9.55) * (Rayon * 1.2))
                    e = a + (Sin(h / 9.55) * (Rayon * longueur))
                    f = b - (Cos(h / 9.55) * (Rayon * longueur))
                  
                    Form1.Line (e, f)-(c, d), coul
        Next h
End Function

comment faire pour que les flammes suive ces rayon du centre vers l'exterieure?

Commentaire de BumpMANN le 14/03/2004 11:44:14

ben justement t'a pas besoin de t'embeter a tracer les rayons. comme je le disais plus haut, un seul pixel blanc suffit a diffuser les couleurs.

1 - tu fout un pixel blanc ou tu veux, le flou se charge de faire une boule.
2 - tu diminue au augmente la consummation pour que t'a boule soit plus ou moins grande
3 - en revanche, tu peut modifier la fonction de hasard pour faire des irrégularité plus accentuées, ou a certains moments.
4 - tu retire le déplacement des flammes vers le haut biensur.

et c'est bon!

Commentaire de lucky2222 le 15/03/2004 14:42:11

je suis desolé, je n'arrive pas a modifier ta source pour en faire une boule de feu! je ne vois pas ou dans la source il faut ajouter un pxel blanc et quelle ligne il faut retirer!
j'ai beau faire defiler pas a pas ta source, je n'arrive pas a reperer les variables utilisé!
pas grave, je ferai mon soleil autrement!
merci quand meme des expliquations!

Commentaire de BumpMANN le 15/03/2004 17:23:12

bon... je répond a ta premiere question: le pixel blanc est le centre de ta boule.

TRES BONNE NOUVELLE POUR TOI! : J'ai pu trop de boulot alors je vais voir ;)

Commentaire de VeRs_iOn le 23/03/2004 20:22:11

ça me rapelle furieusement un des exemples fournis avec le SDK de directX 7...je l'ai plus alors je peux pas comparer, mais bon l'effet est quasi-identique, voire identique, sauf que du texte se mélange peu à peu aux flammes...ça doit s'appeler simple fire example ou quelque chose comme ça...

Commentaire de BumpMANN le 24/03/2004 18:36:32

Hahahahahahaha t'inquiete pas il N'Y A PAS DU TOUT, mais alors PAS DU TOUT un exemple comme ca, encore moins du feu. donc détrompe toi! ;)

Commentaire de VeRs_iOn le 24/03/2004 21:21:05

oui c'est bien ce que je pensais...tu te fous PAS DU TOUT de la gueule du monde alors, et ta source ne mérite PAS DU TOUT 1/10 pour être 10 fois plus lente que l'originale...alors tout va bien ;)

Commentaire de BumpMANN le 24/03/2004 23:28:39

"que l'original" ? ca cache quoi? XD

Commentaire de vr3h le 25/03/2004 07:54:52

Vers_ion, dsl mais jai commencé avec DX7 et son sdk, et je ne me rappelle pas du tout d'un exemple comme celui là dsl

Commentaire de VeRs_iOn le 25/03/2004 09:42:38

et ben je vois que 2 explications : soit t'as mal cherché, soit il n'y est que dans certaines versions du SDK (le mien est sur CD)

en tout cas j'ai vérifié, et il y a bien un exemple qui s'appelle fire.vbp, et dont le résultat ressemble comme deux gouttes d'eau à celui du programme de notre ami, sauf que la source du SDK est 15 fois plus rapide....

ceci dit, vérification faite, il semble que les deux codes n'aient que peu d'éléments communs (mais y'en a quand même), alors hasard ou pas, je ne sais pas...j'espère vraiment que ce ne soit que le fruit du hasard, mais bon c'est quand même troublant de ressemblance

bon, supposons que ce ne soit qu'un simple hasard : à ce moment là je peux te donner un truc pour multiplier la vitese de ton programme :
tu travailles avec une palette de 256 couleurs, alors pas la peine de faire tourner ton programmme en 32 bits, fais le en 8 bits...
à ce moment là tu peux traiter l'image non plus en utilisabt setlockedpixel, mais en faisant un getlockedarray, ce qui t'amenera à travailler sur un tableau de pixels...y'a vraiment moyen de gagner de manière très importante en vitesse

Commentaire de lucky2222 le 25/03/2004 10:14:24

voila!!! ca fini par etre constructif l'histoire! rien ne sert de gueller, mais apporter des solutionset des astuces, c'est quand meme mieux!
remarque qui si tu as réellement une source plus rapide que celle ci, VeRs_iOn, pourquoi ne pas en faire profiter tout le monde (en pressisant toute fois, qu'elle n'est pas de toi bien sur, sinon, il y aura bien quelqu'un qui comme toi se permettra de t'insulter!)

tu parles aussi de faire tourner le prog en 8 bis au lieu de 32! ok, mais quelle est la ligne de commende qui permettra de basculler le prog ainsi!

perso, je ne suis pas un pro de la prog, je viens ici pour apprendre des astuces! l'origine de la source originale , c'est bien de le savoir, mais si le remix est mieux, ou bien detaillé afin de progresser, j'aime autant!
il suffit de voir la tecnologie asiatique qui depuis bien longtemps reprennait des les technologies europeenes et les on amelioré! c'est ca le progret! et pourtant personne ne les insulte les asiatiques, voir meme courrent pour acheter leur matos car moins cher et aussi fiable!
bon ici le but theorique n'est pas l'argent, mais bien de partager et d'evolué!
en ce qui conserne cette source, je suis interressé par toutes ameliorations et astuces la concernant!
merci a tous! et continuer a etre tous constructifs!
(n'oubliez pas de bien commenter car je suis vraiment un gros nulosse en prog mais qui desir progresser alors je compte sur vous pour avancer sans guerre!
Lucky2222

Commentaire de vr3h le 25/03/2004 11:47:20

Vers_ion, tu peux m'envoyer le code source dont tu parles stp ? il minteresse bcp

Commentaire de vr3h le 25/03/2004 11:51:26

Lucky c pas bien compliqué avec DX7, quand tu initialise ton objet DirectDraw, tu donnes les parametres daffichage, dont le nombre de bits sur leskels seront codes les pixels, dc si tu passes 32, tas k mettre 8 a la place ^^

exemple issu du code ici present :
dd.SetDisplayMode sx, sy, 32, 0, DDSDM_DEFAULT
à remplacer par :
dd.SetDisplayMode sx, sy, 8, 0, DDSDM_DEFAULT

Commentaire de VeRs_iOn le 25/03/2004 13:26:35

lucky2222 : j'aimerai bien savoir où t'as vu une insulte...bien sûr que si je mets une source qui n'est pas de moi je le mentionnerai, et à mon avis il est tout à fait necessaire d'incendier les #$%*! de voleurs de sources, qui s'approprient des sources auxquelles ils ne comprennent rien juste pour en retirer un peu de gloire...
ceci dit tel n'est pas le cas de bumpman, qui, s'il s'est inspiré de la source SDK (ce qui est possible), a en tout cas compris ce qu'il faisait...je passe gentiment sur ton délire sur la technologie asiatique

quand à la source, je la mets à disposition, et vous pourrez vous-même constater que même en déployant beaucoup de mauvaise foi, il n'est pas possible de ne pas voir la ressemblance frappante entre les deux : http://www.vbfrance.com/code.aspx?ID=21472

Commentaire de BumpMANN le 25/03/2004 18:15:35

oui effectivement c'est assez ressemblant, et vraiment plus efficace. Je vais l'etudier... mais moi je n'ai pas d'exemple comme ca dans mon sdk :'(... dommage...

Bon bah lucky2222 je te souhaite bonne chance dans ta boulle de feu... :)

Commentaire de lucky2222 le 25/03/2004 19:09:58

merci!
je ne metise pas encore le directx, mais je pense qu'avec un mixte des deux, il sera possible de faire une petite boule qui ne prend pas toute la puissance du pc afin de pouvoir ajouter les autres planette du systeme!
effectivement, il ne faudrai pas que ca saccade!
je me demande si je n'aurrai pas interret a faire un effet de flame que sur la circonferance d'un disque! mais encore la, j'ai encore beaucoup a me pencher sur le pb! si quelqu'un a une idee sur le truc, qu'il n'esite pas!
merci a tous

 Ajouter un commentaire




Nos sponsors


Sondage...

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,732 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales