2010-12-15 3 views
5

Je souhaite générer un effet de feu dans OpenGL sur la base d'une simulation de particules. J'ai des centaines de particules qui ont une position et une température (et donc une couleur) ainsi que toutes leurs autres propriétés. Simplement rendre un solidSphere en utilisant la surabondance ne semble pas très réaliste, car les particules sont réparties trop large. Comment puis-je tirer le feu sur la base des informations sur les particules?Rendu du feu dans OpenGL

+0

Cela vous semble-t-il nécessaire d'interpoler ou de trouver une méthode qui vous convient? – ccook

+0

Oui, je cherche une méthode pour faire cette interpolation dans openGL puisque je ne suis pas encore très familier avec ça. Une sorte de modèle dynamique solide peut-être ... La transparence est également important pour faire du feu réaliste sur les bords – Etan

Répondre

5

Si vous essayez juste de créer un effet de feu réaliste j'utiliser une sorte de la bibliothèque existante comme recommandé dans d'autres réponses. Mais il me semble que vous êtes après un affichage de la simulation. Une solution directe qui vaut la peine d'être essayée pourrait être de remplacer vos sphères actuelles par des panneaux d'affichage (image graphique toujours tournée vers la caméra) qui sont pleins de blanc au milieu et fondent sur les bords - évidemment en positionnant et en coloriant les images à vos particules.

Une meilleure solution consiste à approcher la flamme comme un ensemble de grilles 2D sur lesquelles vous pouvez contrôler la transparence et la couleur de chaque sommet de la grille. On pourrait le faire dans OpenGL en construisant un plan à partir de quads et utiliser votre système de particules pour calculer (par interpolation à partir des particules les plus proches) la couleur et la transparence de chaque sommet. OpenGL va interpoler chaque pixel entre les sommets pour vous et vous donner une image lisse des «particules moyennes dans la zone».

+0

Nice! Ce dernier peut être implémenté comme une texture procédurale, n'est-ce pas? Hmm ... Non, ça n'a pas de sens - chaque instance de fragment shader aurait probablement trop à faire. Nous aurions donc besoin de créer cette texture une fois par image avant de faire un feu. – Kos

+0

Merci. Pourriez-vous s'il vous plaît ajouter plus d'informations sur ces grilles 2d? – Etan

+0

Cela nous aiderait vraiment si nous savions exactement ce que vous voulez réaliser: Essayez-vous de dessiner la simulation en temps réel ou simplement de restituer des images spécifiques? Voulez-vous qu'il représente fidèlement la simulation ou devrait-il être beau à l'œil? – Elemental

5

Vous voulez probablement utiliser un système de particules pour rendre un effet de feu, voici un tutoriel NeHe sur la façon de le faire que: http://nehe.gamedev.net/data/lessons/lesson.asp?lesson=19

+0

Je ne veux pas utiliser un système de particules existant depuis que je veux apprendre comment ils fonctionnent ;-) – Etan