Accueil > Forum > > > > [OpenGL] Physique : Moteur de particules
[OpenGL] Physique : Moteur de particules
lundi 18 juillet 2005 à 22:02:18 |
[OpenGL] Physique : Moteur de particules

keil
|
Bonjour, je veux créer un moteur de particules en opengl, malheureusement il me manque quelques notions de physique. Pour l'instant j'arrive à émettre des particules selon un vecteur initial et qui sont soumises à une force de gravité pointant soit vers vers -y ou y. Mon souci se pose lorsque je veux créer une sorte de trou noir qui va "aspirer" les particules émises. Ce trou noir est une sphere et toute particules en dehors de la sphère ne sont pas affectées contrairement aux particules qui passent à travers la sphère. une particule à la périphérie de la sphère sera moins attirée qu'une particule proche du centre de la sphere. Bien sûr, une particule au centre même de la sphère ne changera plus de position jusqu'à sa mort (de la particule). Ayant déjà mes équations horaires, comment intégré les nouvelles et quelles sont-elles? Je vous donne mes équations horaires que j'ai déjà: particle[i].pos.x = particle[i].v0.x*particle[i].livedTime*speed + pos.x; particle[i].pos.y = particle[i].v0.y*particle[i].livedTime*speed - 0.5*g*particle[i].livedTime*particle[i].livedTime + pos.y; particle[i].pos.z = particle[i].v0.z*particle[i].livedTime*speed + pos.z; g = gravité v0 = vecteur initial livedTime = facteur de temps le reste est assez parlant. Merci!
|
|
mardi 19 juillet 2005 à 17:06:40 |
Re : [OpenGL] Physique : Moteur de particules

luhtor
|
Tu as quel niveau d'étude ? Tes équations horaires, ca va bien si tu n'as que la gravité. Et encore, ca va bien ... c pas si sur. Tu peux pas résoudre tes équations comme ca. Bon voici, comment tu peux faire: J'utilise une donnée en plus: le temps écoulé depuis le dernier affichage à l'écran. J'appelle ca delta_t. La tu commences par appliquer le principe fondamental de la dynamique: particule[i].acc_x = 1/particule[i].masse * ( les forces selon x ); particule[i].acc_y = 1/particule[i].masse * ( les forces selon y ); particule[i].acc_z = 1/particule[i].masse * ( -9.81 * particule[i].masse + les autres forces ); particule[i].speed_x += particule[i].acc_x * delta_t; particule[i].speed_y += particule[i].acc_y * delta_t; particule[i].speed_z += particule[i].acc_z * delta_t; particule[i].pos_x += particule[i].speed_x * delta_t; particule[i].pos_y += particule[i].speed_y * delta_t; particule[i].pos_z += particule[i].speed_z * delta_t; Bon voila, la tu obtiens a peu près la meme chose que toi. Sauf qu'ici c'est une approximation, donc c'est rigoureusement pas tout a fait comme toi. Mais tu vas voir c'est bcp plus puissant. Donc ton trou noir. Bon pour le moment, je vais pas faire ton histoire de sphère la. Moi je place un trou noir en position X,Y,Z, et qui exerce sur toutes les particules la forces F= -K/d²; avec K une constante que tu choisis, essaies 10. Et "d" la distance entre ton trou noir et la particule en question. d² = (particule[i].x - X)²+(particule[i].z - Z)²+(particule[i].z - Z)². Reste a projeter cette force sur les axes x,y,z: La force est dirigé selon le vecteur trou_noir (O) et particule (M). Le vecteur OM a pour composante: OM = (particule[i].x - X , particule[i].y - Y, particule[i].z - Z) On norme ce vecteur: OM' = ( (particule[i].x - X)/d , (particule[i].y - Y)/d , (particule[i].z - Z)/d) Voila, maintenant, il faut prendre en compte cette force dans le calcul des positions: Ce que j'ai mis au début, rien ne change sauf bien sur le principe fondamental de la dynamique: particule[i].acc_x = 1/particule[i].masse * ( -K/d² * OM'.x ); (composante de OM' selon x) particule[i].acc_y = 1/particule[i].masse * ( -K/d² * OM'.y ); particule[i].acc_z = 1/particule[i].masse * ( -9.81 * particule[i].masse - K/d² * OM'.z ); Et la toute tes particules seront attirées par le point X,Y,Z. Seul problème restant, tu inclus du frottement ? car sinon, il vont tourner autour en éllipse "indéfiniement". F = -K/d², c'est genre force gravitationnelle. Mais a toi de changer l'expression de la force si tu veux, c'est pas compliqué. Car j'ai peur de certain bug qui peuvent arrivé lorsque ta particule arrive trop pres du trou noir. M'enfin essaies tjs ca. La au moins, tu verras bien tes particules attirées. Des questions ? ++
|
|
mercredi 20 juillet 2005 à 01:56:07 |
Re : [OpenGL] Physique : Moteur de particules

keil
|
OK, je vais tester ta solution. En effet, j'ai ajouté une force à la particule vers le trou noir et ca fait des bugs quand certaines particules sont trop proches du centre. Cependant, il y a quelques particules qui se comportent très bien puisqu'elles sont prises par le trou noir et ne peuvent se dégager du centre. je vais voir s'il s'agit d'une erreur de précision en utilisant des double à la place de mes float. si ca marche, je ne testerai peut être pas ta solution puisque théoriquement elle fonctionne. En ce qui concerne mon niveau, ca fait 3 ans que j'ai pas fait de physiques, c'était en Terminale S, avant que je décroche un DUT et une licence pro en informatique. Merci de ton aide!
|
|
mercredi 20 juillet 2005 à 22:05:44 |
Re : [OpenGL] Physique : Moteur de particules

keil
|
Réponse acceptée !
Problème résolu (ou bricolé pour certains s'ils veulent!) Après m'être documenté sur "comment échapper à un trou noir", j'ai compris qu'il suffisait d'avoir une vitesse supérieur à la vitesse d'attraction pour s'en évader. C'était le problème que j'avais avec mes particules. Donc j'ai fait un test sur la norme du vecteur1 et de celle du vecteur2: vecteur 1, déplacement de la position de la particule à l'instant Tn-1 jusqu'à la position de la particule à l'instant Tn. vecteur 2, position de la particule à l'instant Tn vers position du centre du trou noir. Si la norme du vecteur 1 est supérieur à la norme du vecteur 2, alors on positionne la particule au centre du trou noir, sinon on applique un déplacement en fonction des forces présentes. Dans mon cas: 1- poids 2- attraction vers le trou noir (-GmM/r²) Voilà j'ai maintenant un joli effet de flamme 
|
|
Cette discussion est classée dans : pos, particules, sphère, particle, livedtime
Répondre à ce message
Sujets en rapport avec ce message
Qui veut gagné 50Frs!!!!!!!!!!!!!! [ par Akil ]
Bonjour à tousJe cherche quelqu'un qui sait bien programmer en langage C++ et Vb.J'ai un projet d'éditeur de texte Farsi (Righttoleft)en C++ et je vou
help : collisions particules en OpenGL [ par kx2k3 ]
je suis en train de plancher sur des particules en ce moment, en openGLje voudrais les faire rebondir sur un plantous les exemples que j'ai trouvés le
Comment savoir en win32 (MFC si pos) [ par thebestvinz ]
Comment savoir si une modification a été effectuée sur une boite de dialogue avant de continuer?
Erreur avec strcpy [ par ROnE91 ]
R-OnEBonjour, je n'arrive pas a faire fonctionner cette fonction. J'utilise vc++6, le compilateur ne m'indique pas d'erreur mais il se
connaitre la couleur d un pixel sous windows [ par vychnou ]
Bonjour a tous!Mon probleme:j ai besoin de connaitre la couleur d un pixel particulier(par exemple celui pointé par la souris ou bien un pixel dont on
opengl pos fenetre [ par mat74 ]
salut a ts je cherche comment je pourrai avoir la position de la fenetre en opengl . je prog en win32 . merci d'avance @+
pourquoi ca marche pas :'( [ par xboxut ]
salut j ai un probleme avec une fonction pour initialiser des particules,pouvez vous me dire pourquoi il ne marche pas et comment le faire marcher#inc
Erreur C++ [ par LordBob ]
bonjours a tous,je suis en train de faire un programme, mais j'ai un probleme, une ligne de code qui bug, mais je n'arrive pas a savoir pourquoi... je
classe [ par ToToL ]
Bonjour j'ai un eptit souci de classe. tout d'abor voici mon code source :#include #include #include int InitSDL( void );void Analise( void );int Draw
unicode et bianire help!!!! [ par youpiyoyo ]
bon j'ai visité cette page d'abord:http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vclib/html/_crt_unicode.99_.stream_i.2f.o_in_text_
Livres en rapport
|
Derniers Blogs
POUR RAPPEL ! LES SPéCIFICATIONS DES PROTOCOLES OFFICE ET SHAREPOINT SONT DISPONIBLES SUR MSDNPOUR RAPPEL ! LES SPéCIFICATIONS DES PROTOCOLES OFFICE ET SHAREPOINT SONT DISPONIBLES SUR MSDN par neodante
Quelle est le point commun entre : Microsoft il y a 10 ans et Apple aujourd'hui ? Réponse: avoir une politique de protocoles propriétaires et fermés :) Car pour rappel (si si je vous assure c'est important de le rappeler), la majorité des spécifications e...
Cliquez pour lire la suite de l'article par neodante JOYEUX ANNIVERSAIRE NIXJOYEUX ANNIVERSAIRE NIX par ebartsoft
Souhaitons un bon et joyeux anniversaire à notre hôte à tous, Nix.
Je ne le répéterais jamais assez mais sans lui rien ne serait possible. Il défit en permanence les lois de la gravité et comme il le dit si bien, si tu lui fais confiance ça devra...
Cliquez pour lire la suite de l'article par ebartsoft IMAGINE CUP 2012, MAKE A SIGN EN FINALEIMAGINE CUP 2012, MAKE A SIGN EN FINALE par junarnoalg
Voilà qui est fait, la nouvelle est officielle ! L'équipe belge "Make a Sign" va au pays des kangourous défendre son projet dans la catégorie Software Design. http://www.imaginecup.com/CompetitionsContent/Competition/WorldwideFinalists.aspx V...
Cliquez pour lire la suite de l'article par junarnoalg KINECT 1.5 IS OUT !KINECT 1.5 IS OUT ! par Vko
La version 1.5 du Kinect For Microsoft vient tout juste de sortir ! Plein de nouveautés: Tracking de squelette en Near Mode Détection en position assise Détection faciale avec un SDK dédié Documentation et des guideline (enfin) Un out...
Cliquez pour lire la suite de l'article par Vko LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) par richardc
Mise à jour des Web API du 14 Mai
Réservez dès maintenant votre journée du 20 juin pour le Windows Azure Dev Camp 2012 à Paris
Mise à jour de Team Foundation Service
MechCommander 2 sur Windows 8
Entity Framework 5 Release Candidate e...
Cliquez pour lire la suite de l'article par richardc
Forum
MATLAB PROGRAMME MATLAB PROGRAMME par wahab1087
Cliquez pour lire la suite par wahab1087 RGB2GRAYRGB2GRAY par musa18
Cliquez pour lire la suite par musa18
Logiciels
sDEVIS-FACTURES vlPRO (8.1.0.3)SDEVIS-FACTURES VLPRO (8.1.0.3)sDEVIS-FACTURES vlPRO a été mis au point pour les particuliers, créateurs, entrepreneurs, artisa... Cliquez pour télécharger sDEVIS-FACTURES vlPRO 974 Application Server (12.2.4.6)974 APPLICATION SERVER (12.2.4.6)Développez de puissantes applications dans un environnement de 'cloud computing', clusterisé, séc... Cliquez pour télécharger 974 Application Server vPicture (1.4.2.1)VPICTURE (1.4.2.1)Avec vPicture, hébergez vos images facilement et rapidement.
vPicture est un utilitaire simple, ... Cliquez pour télécharger vPicture Easy-Planning (2.2.1.6)EASY-PLANNING (2.2.1.6)Easy-Planning permet de créer des plannings sous la représentation de diagrammes et est adapté au... Cliquez pour télécharger Easy-Planning COM-BACKUP (2.0)COM-BACKUP (2.0)
COM-BACKUP est un logiciel de sauvegarde qui permet de planifier les sauvegardes de vos dossiers ...
Cliquez pour télécharger COM-BACKUP
|