TutorielsVous débutez ? C'est ici qu'on commence !
Mon compte
Recherche
Livre d'or
PublicitéVous devez être inscrit pour pouvoir poster des messages
Le problème de ce sujet a été résolu
| Page : 1 | |
| Auteur | Message |
|---|---|
| 1 visiteur sur ce sujet (1 anonyme) | |
| Page : 1 | |
atoboldom
|
# Posté le 03/06/2007 à 17:11:14 |
![]() Groupe : Membres |
Bonjour tout le monde !
Tout est un peu dans le titre
Je voudrais en effet avec Irrlicht simuler le lancer/la trajectoire d'un projectile. Mais celui ci devras être lancer dans la direction de la camera a la façon d'un FPS. Je reprend pour exemple la grenade de mon dernier post, je voudrais par exemple que elle soit lancer dans le sens de la camera. Je pensais plutôt faire sa avec la gravité ; mais après comment faire pour ajouter une force décroissante a la grenade en direction du point visé ? Il faudrait en plus que la grenade puisse rebondir si elle cogne contre un mur, mais sa sa serat pour plus tard, voyons l'essentiel pour le moment
J'ai bien pensé a utiliser Newton mais bon je préfèrerais ne pas utiliser de lib en plus étant donner que pour un simple lancer de grenade on doit pouvoir s'en passer... Merci a tous ! |
gp2mv3
|
# Posté le 03/06/2007 à 17:53:28 |
TPNH : Sauvons la planète !![]() Groupe : Membres |
Salut,
Si tu as dev c++, il y a un exemple avec des boules de feu. Tu peux peut etre t'en inspirer.
Gp2mv3 |
Kevin Leonhart
|
# Posté le 03/06/2007 à 18:07:28 |
![]() Groupe : Membres |
Salut.
La première solution qui me vient à l'esprit c'est de se servir de vecteurs pour déplacer ta grenade. Tu choppe le vecteur qui correspond à la visée de ta caméra. (tout est là dedans, cherche un peu : http://irrlicht.sourceforge.net/tut007.html)
Ensuite tu crée un vecteur pour la gravité. Et finalement tu déplace ta grenade des 2 vecteurs à chaque boucle de rendu (enfin je suis pas sur là. Faut voit si ça passe avec du time ellapsed) et tu te débrouille pour que le vecteur gravité augmente au fur et à mesure. Ou que l'autre diminue, ça dépend comment on voit les choses. Après pour les collisions c'est une autre histoire. Et pour les rebond c'est encore pire.
"Je vous emmerde, et je rentre à ma maison." Eric Cartman, philosophe. |
atoboldom
|
# Posté le 04/06/2007 à 13:06:05 |
![]() Groupe : Membres |
Pour le tuto d'irrlicht c'est pour mettre une gravité a un objet ?
En fait j'avais d'abord pensé a cette solution, mais le problème c'est que il faut utiliser les timer et la je n'y conait rien avec Irrlicht. Bon ba je vais chercher un peu dans la doc alors
Pour le principe il faudrait ne déplacer la grenade que d'une partie du vecteur tout les tant de ms pour que la grenade ne fasse pas tout le trajet d'un coup ? Est ce que cette méthode marche avec la gravité associé au mesh (createCollisionResponseAnimator) ? EDIT : Après un petit tour dans la doc l'utilisation du timer ne m'a pas l'air bien compliquer
Édité
le 04/06/2007 à 13:13:02
par atoboldom
|
Kevin Leonhart
|
# Posté le 04/06/2007 à 14:03:32 |
![]() Groupe : Membres |
Citation : Pas de titre
Pour le tuto d'irrlicht c'est pour mettre une gravité a un objet ?
Non, c'est pour récupérer le vecteur de visée de la caméra. Dans le tuto ils s'en servent pour créer un laser représentant ledit vecteur. Citation : Pas de titre En fait j'avais d'abord pensé a cette solution, mais le problème c'est que il faut utiliser les timer et la je n'y conait rien avec Irrlicht.
Pas forcément mais si tu veux avoir la même vitesse indépendamment du système, alors oui. Citation : Pas de titre Pour le principe il faudrait ne déplacer la grenade que d'une partie du vecteur tout les tant de ms pour que la grenade ne fasse pas tout le trajet d'un coup ?
Non, le vecteur entier. Pour faire simple mettons sans gravité : Tu as le vecteur représentant la visée de ta caméra. Tu ajoute ce vecteur à la position de ta grenade. Et c'est tout.
C'est là que le time ellapsed peux entrer en jeu pour déterminer combien de fois tu bouge les coordonnées de ta grenade dans un certain intervalle de temps. Après pour ajouter de la gravité, tu crée un vecteur pointant vers le sol. Puis au moment d'ajouter le vecteur de visée de la caméra, tu ajoute aussi le vecteur de gravité. Le truc c'est que pour plus de réalisme, il faudrait que le vecteur de gravité soit plus important au fil du temps. Comme ça la grenade descend plus vite en fin de parcours qu'au début. "Je vous emmerde, et je rentre à ma maison." Eric Cartman, philosophe. |
Yno
|
# Posté le 04/06/2007 à 15:03:52 |
SCE![]() Groupe : Membres |
<un peu hs>
Un tuto sur les vecteurs : http://www.siteduzero.com/tuto-3-18391-1-les-vecteurs.html </un peu hs>
Édité
le 04/06/2007 à 15:04:39
par Yno
Tutos OpenGL : Les shaders en GLSL | Rendus optimisés avec les VBOs FAQs programmation : FAQ C | FAQ OpenGL / SDL / GTK+ Un moteur 3D à que il rox | Un canal IRC qu'il est bieng : #opengl@irc.epiknet.org |
atoboldom
|
# Posté le 04/06/2007 à 15:23:27 |
![]() Groupe : Membres |
Ok j'ai compris le principe.
Du toute façon pour les collision il suffit que je rajoute ceci : Code : C++ scene::ISceneNodeAnimator *anim = scenegraph->createCollisionResponseAnimator(
selector, Ngrenade, core::vector3df(10,10,10), core::vector3df(0,-0.1,0), core::vector3df(0,0,0)); Ngrenade->addAnimator(anim); anim->drop(); Sa devrait arrêter la grenade si elle rencontre un mur et elle devrait tomber net. Mais sa ne gère pas le rebondissement, dommage... Je vais tester un peu tout sa et vous dire si sa marche
Merci beaucoup ! EDIT : Je vais lire ton tuto Yno sa ma l'air des plus interressant, notemment que je ne connaissait pas le principe de la normalisation alors qu'on en voit souvent dans Irrlicht , Merci !
Édité
le 04/06/2007 à 15:37:00
par atoboldom
|
atoboldom
|
# Posté le 06/06/2007 à 21:03:09 |
![]() Groupe : Membres |
Bon après un acharnement terrible(j'avais oublier le Ngrenade->setPosition()
) j'ai enfin obtenus un résultat potable.
Quand je lance la grenade une parrabole se créer et la grenade a une trajectoire a peu près réel. Seuleument je voudrais pouvoir simuler une force de frotement. Pour le moment c'est l'inertie qui s'applique, ducoup la grenade continue d'avancer sans arrêter... |
neuneutrinos
|
# Posté le 08/06/2007 à 10:16:10 |
![]() Groupe : Membres |
la il faut que tu te mettent à la physique
tu doit definir une vittesse max par rappor au poids (et oui une balle de tennis ne va pas à la meme vittesse qu'une boule de pétanque sauf si tu les lance dans le "vide absolue ")
et code les forces freinante (c'est assez simple il suffit d'un peu de logique)
|
atoboldom
|
# Posté le 08/06/2007 à 11:34:14 |
![]() Groupe : Membres |
Pour cela il suffit d'etablir une éqation toute bete du genre vitesse max = poid * n ou n est un réel qui determine la vitese max par exemple n = 10.
Pour les forces de frotements il faudrait ensuite réduire le vecteur de déplacement a chqaue fois qu'il y a une collision, sa me parrais bien. Je vais tester tout sa encore merci ! |
neuneutrinos
|
# Posté le 08/06/2007 à 13:18:51 |
![]() Groupe : Membres |
presque
mais ca devrait etre pas mal quand meme
Citation : atoboldom il suffit d'etablir une éqation toute bete du genre vitesse max = poid * n ou n est un réel qui determine la vitese max par exemple n = 10.
en fait il faudrait plutôt vitesseMax = poid*(n*n)); et oui la vitesse est plus important que le poid .
|
atoboldom
|
# Posté le 09/06/2007 à 00:36:23 |
![]() Groupe : Membres |
Merci je vais continuer a plancher sur les forces de frotements car en fait pour le moment le calcul de la vitesse max n'est pas très important, étant donner que ma grenade ferat toujours le même poid la vitesse au moment du lancé seras toujours la même !
Par contre si l'un de vous connaitrais une solution pour savoir si un objet est en collision avec un autre sa m'aiderais beaucoup, parceque la je vois comment faire pour un mur mais pas pour le sol...
Édité
le 09/06/2007 à 00:37:05
par atoboldom
|
Pole
|
# Posté le 09/06/2007 à 08:25:55 |
Chieur professionnel![]() Groupe : Membres |
Les forces de frottements sont une décélération.
Normalement, tu as un vecteur vitesse. Pour prendre en compte la gravité, tu fais z-=constante. Pour prendre ne compte les frottements, vecteur vitesse*=une constante. (Force de frottement linéaire) Les collisions, c'est beaucoup plus compliqué. Il faut un moteur physique (peut-être que Irrlicht le peut aussi) En savoir plus sur la théorie des cordes Les caisses sont vides Traité européen de 1965 : Citation : Traité FONCTIONNAIRES ET AGENTS DES COMMUNAUTÉS EUROPÉENNES Article 12 Sur le territoire de chacun des États membres et quelle que soit leur nationalité, les fonctionnaires et autres agents des Communautés: a) jouissent de l'immunité de juridiction pour les actes accomplis par eux, y compris leurs paroles et écrits, en leur qualité officielle, sous réserve de l'application des dispositions des traités relatives, d'une part, aux règles de la responsabilité des fonctionnaires et agents envers les Communautés et, d'autre part, à la compétence de la Cour pour statuer sur les litiges entre les Communautés et leurs fonctionnaires et autres agents. Ils continueront à bénéficier de cette immunité après la cessation de leurs fonctions, |
atoboldom
|
# Posté le 09/06/2007 à 14:08:33 |
![]() Groupe : Membres |
Pour la gravitée Irrlicht le gère très bien et ma grenade retombe normalement
Pour ce qui est des collisions Irrlicht le gère aussi, si la grenade rencontre un mur elle serat stoppée et continueras a redescendre, le rebond n'est pas gérer mais je crois, vue la complexité(en dehors du moteur physique), que je vais m'en passer
Mais bonne nouvelle j'ai trouver dans la doc une class très interressante : Code : C++ irr::scene::ISceneNodeAnimatorCollisionResponse
Et dedans se trouve une méthode permettant de savoir si l'objet est en train de tomber ou si sa chute a été stopper par quelque chose(mur, objet, ect...), cette méthode : Code : C++ virtual bool irr::scene::ISceneNodeAnimatorCollisionResponse::isFalling()
Méthode qui retourne simplement un booléen ! Avec sa je teste si la grenade tombe, si ce n'est pas le cas alors je diminue le vecteur de déplacement jusqua qu'il atteigne 0
J'ai tester et cela marche plutôt bien, la grenade s'arrête bien ! |
Pole
|
# Posté le 09/06/2007 à 14:16:40 |
Chieur professionnel![]() Groupe : Membres |
Résolu?
En savoir plus sur la théorie des cordes Les caisses sont vides Traité européen de 1965 : Citation : Traité FONCTIONNAIRES ET AGENTS DES COMMUNAUTÉS EUROPÉENNES Article 12 Sur le territoire de chacun des États membres et quelle que soit leur nationalité, les fonctionnaires et autres agents des Communautés: a) jouissent de l'immunité de juridiction pour les actes accomplis par eux, y compris leurs paroles et écrits, en leur qualité officielle, sous réserve de l'application des dispositions des traités relatives, d'une part, aux règles de la responsabilité des fonctionnaires et agents envers les Communautés et, d'autre part, à la compétence de la Cour pour statuer sur les litiges entre les Communautés et leurs fonctionnaires et autres agents. Ils continueront à bénéficier de cette immunité après la cessation de leurs fonctions, |
atoboldom
|
# Posté le 09/06/2007 à 15:36:10 |
![]() Groupe : Membres |
Ben il me reste deux trois petits problèmes de réalisme à pofiner mais je devrais pouvoir me débrouiller
Merci à tous(encore une fois ) !
Édité
le 09/06/2007 à 15:38:42
par atoboldom
|
Retour au forum "Langage C++" ou à la liste des forums
Vous devez être inscrit pour pouvoir poster des messages
Changer de design |
En savoir plus |
Plan du site |
Politique d'accessibilité |
Règles |
RSS tutoriels |
RSS news
Édité par Simple IT SARL :
Nous contacter
| Notre blog | Revue de presse | Publicité
Y'a plus rien à lire, faut remonter maintenant !
Hébergement web - Correction de tutoriels - Créer un site
Vous souhaitez apparaître ici ? Contactez-nous.
150 Zéros connectés |
7 requêtes |
0.0235s (0.007s)
