begin process at 2012 05 29 14:44:25
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

OpenGL

 > 

particle engine


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

particle engine

vendredi 12 août 2005 à 10:45:41 | particle engine

cppdupdup34

voila mon pb:
j'ai crée un systeme de particule en 3D avec tout cer qui faut et ca marche tres bien !
cependant, j'ai desactiver le tempon de profondeur pour que les couleurs des particules qui se superposent se melangent.
voila ce que ca peu donner

Ca marche tres bien mais il y a un "hic" des que je souhaite mettre d'autres objets, charger un modele 3D ou un objet a base de polygones. Le tempon de profondeur etant desactivé je me retrouve avec mon objet devant (resp derrire) le systeme de particule alors qu'il devrait etre derriere (resp devant).
et voila ce que ca peu donner

le code est:
     jumper.dessiner() //le truc bleu
     modele.dessiner();
     feu1.dessiner();
     feu2.dessiner();

evidement ca fait exactement ce que je demande de faire
etant donné que j'ai activé le tampon de profondeur ca cache une partie du jumper, et le feu se melange au modele, ce qui n'est pas forcement souhaitable non plus
     
Je crois qu'il y ades methodes pour pallier a ce genre de probleme mais je ne les connais pas

-est il possible d'activer le tampon de profondeur avec des option particulieres de blending pour conserver les objets les plus proches devant les plus loins derriere ?

-si non quelles sont les methodes pour pallier a ce probleme ?

si vous connaissez des sites web ou des tutos ca serait trop cool !
sur ce,
a+ a tous

cppDupDup34
vendredi 12 août 2005 à 14:54:28 | Re : particle engine

luhtor

Réponse acceptée !
Bon j'ai jamais eu a faire ca. (pas encore) Mais admettons que tu dessines toutes la scène, sans dessiner les particules. Tous tes objets a bases de polygone sont dont afficher. Pour finir, tu désactives le tampon de profondeur en écriture (il reste bien sur activer en lecture), ce qui te permet d'afficher tes particules. Elles seront devant s'il le faut, ou derrière si un objet se trouve devant, puisque le tampon est quand meme lu. Par contre, si tu as deux générateurs de particules alignés, ca peut etre particulier. Dans ce cas, je déterminerais lequel des deux ou plus est le plus proche, et donc on dessine celui qui est le plus loin en premier.

en espérant avoir répondu a ta question (j'ai pas tout bien compris ^^)
++
vendredi 12 août 2005 à 15:01:11 | Re : particle engine

keil

Moi, baron du bricolage, je te propose une soluce théorique.
Sachant que la désactivation du Z-Buffer fait que tes objets sont affichés les uns après les autres suivant l'ordre dans ton code, je pense qu'il faut dessiner les objets les plus au fond et après les objets les plus proches.
Cependant la désactivation du Z-Buffer risque de t'embêter royalement dans le cas où tu voudrais par exemple, déplacer ton personnage.
Mes conseils sont les suivants:
- ne désactive pas le Z-Buffer
- utilise le blending pour ton moteur de particules

Et finalement, étant donné que je suis sûr d'avoir mal cerné ton problème, réexplique moi mieux (avec si possible un screenshot) si je n'ai pas résolu ton problème.

vendredi 12 août 2005 à 16:45:39 | Re : particle engine

cppdupdup34

la reponse de luthor me convient
enfin faudra que je fasse un essai

comme j'ai pas ete tres clair je vais re-expliquer.

Pour que mon code marche bien a l'heure qu'il est, il faut que je desactive le test de profondeur, ce pour que le melange des couleurs des particules qui se chevauchent se fasse bien.
voila le melange bien effectuer:

si je reactive le test de profondeur ca donne ca...

le blending est imparfait, on voit les rebords de la texture
question:
-peut on avoir un bon blending en conservant le test de profondeur? méthode ?

si la reponse est non ...
comment faire pour dessiner une scene en 3D avec camera mobile et conserver les objet loins derriere et les objets proches devant ? (sachant que comparer la distance objectif <->particules  et la distance objectif <->objets de la scene n'est pas envisageable pour mon pauvre cpu !!)

a prioris luthor a repondu a la premire question donc si ca marche je posterais un screen du resultat 

++

cppDupDup34
vendredi 12 août 2005 à 16:53:06 | Re : particle engine

cppdupdup34

mince ca me charge pas mes images

cppDupDup34
vendredi 12 août 2005 à 17:03:28 | Re : particle engine

keil

Pour avoir une transparence totale, je modifie moi meme le tableau de pixel de la texture.
je passe en revu chaque pixel, et si le pixel actuel equivaut a mon pixel de transparence, je met son alpha a 0.

pour la camera mobile, j'utilise une classe qui gere la position et la direction de ma camera. J'utilise notament la fonction gluLookAt(...)


KS
vendredi 12 août 2005 à 17:26:05 | Re : particle engine

cppdupdup34







voila les photos que j'avais pas bien chargees, elles sont dans l'ordre

cppDupDup34

vendredi 12 août 2005 à 18:44:10 | Re : particle engine

Galmiza

1-tu projetes tes particules sur une texture de la meme taille que le backbuffer, z-buffer desactive
2-tu projetes le reste de la scene sur le back buffer, z-buffer active
3-tu projetes tes particules sur le backbuffer avec la texture de la premiere passe, z-buffer toujours active  (il te faut modifier les shaders pour cette passe)
vendredi 12 août 2005 à 18:48:05 | Re : particle engine

cppdupdup34

bah y a plus qu'a !!!

cppDupDup34
vendredi 12 août 2005 à 21:49:53 | Re : particle engine

cppdupdup34



comme on le vois sur ce screen le cube opaque cache un systeme de particule se trouvant derriere lui !! le resultat est donc concluant
merci a tous.

pour l'info j'ai utilisé la solution de luthor que j'ai aussi retrouvé dans le red book

au niveau du code c'est exactement ce que tu disais:
init--> glEnable(GL_DEPTH_TEST);

0-glClear(...)
1-dessin de la scene
2-glDepthMask(GL_FALSE);
3-glEnable(GL_BLEND);
4-dessin des systemes de particules
5-glDepthMask(GL_TRUE);
6-glDisable(GL_BLEND);


cppDupDup34

1 2

Cette discussion est classée dans : dessiner, modele, engine, profondeur, particle


Répondre à ce message

Sujets en rapport avec ce message

comment faire des calculs et dessiner en meme temps avec GLUT [ par nabil ] SALUT,j'ai le probleme suivant : je veux lire des coordonnées des points qui se trouve dans fichier et de faire un petit calcul et d'afficher des poin URGENT : Dessiner un graphique + Icone [ par ludovichi01 ] Bonjour,Je suis à la recherche d'un morceau de code ou d'une méthode (ou meme une adresse) permettant de dessiner un graphique en temps réel avec les dessiner des polygones a partir d'n fichier [ par NICKO ] Bonjour,Je cherche à dessiner des polygones (2 triangles pour commencer) dont les informations sont contenues dans un fichier.J'utilise les fonctions dessiner dans une boite de dialogue MFC [ par tiger3550 ] Qqn pourrait m'aider (adresse web, infos, code...) a dessiner dans une boite de dialogue en MFC? Je dois faire apparaitre un histogramme dans cette bo comment dessiner un cercle en c++ [ par Pa109 ] je voudrais connaitre la fonction est la lib eventuel pour la realiser Dessiner ses forms [ par dread ] Bonjour.Je voudrais savoir si il existe des programmes qui permettent de dessiner sa form dans un fichier de ressource a la manière de vc++ pour les a Dessiner une ellipse [ par Azul ] Je dois modifier un programme VC++ pour représenter (dessiner dans une fenêtre ) des objets par des ellipses. Ces objets sont actuellement identifiés Dessiner une ellipse [ par Azul ] Je dois modifier un programme VC++ pour représenter (dessiner dans une fenêtre ) des objets par des ellipses. Ces objets sont actuellement identifiés dessiner une droite [ par gus2647 ] Bonjour,j aurais voulu savoir comment on faisait pour dessiner les droites de types suivants :1- les pointillés .....2- les ----------3- les .-.-.-.-. dessiner des formes libres [ par nbeaumont ] je souhaite trouver un composant qui reprendrait le principe du dessin d'une forme libre (suite de traits).je suis peut être passé à coté sans le voir


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
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 : 0,640 sec (4)

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