| Faire tourner un personnage. |
Lo

Grade : Expert
Inscrit le: 26 Dec 2007, 17:33
|
| Ecrit le: 16 Dec 2008, 15:14 Message non corrigé | |
|
Purée, c'est d'une de ces complication le fait de faire tourner un personnage, ainsi que la caméra et l'endroit ou il regarde à l'aide de la souris.
J'arrive pas à comprendre ces fichues formules!
________ Parce qu'on ne peut s'exprimer que par nos créations. ^^
|
|
| |
|
|
Lo

Grade : Expert
Inscrit le: 26 Dec 2007, 17:33
|
| Ecrit le: 17 Dec 2008, 17:16 Message non corrigé | |
|
Non en faîtes ce qui est dur c'est de gérer les coordonnées de la souris sur la fenêtre, qui sont en 2D, avec le monde qui est en 3D.
J'ai vu qu'il faut le faire en calculant les coordonnées rectangulaire grâce à l'angle formé par le déplacement de la souris. (Fin un truc du genre)
Mais c'est chaud, et je ne peux faire que des terrains plat pour l'instant, je sais pas comment on fait les terrains en pentes.
Encore heureux qu'il y ai un bon tutos en français pour le chargement des modèles md2, mais il n'y a pas vraiment de bon tutos pour créer un jeux, ça me gâve, je passe des heures à chercher des formules à cause de ça...
Et chercher la structure des fichiers binaires, avec leur formats, vu que je ne sais pas le deviner.
Je vais devoir réfléchir à une méthode pour tracer des terrains en pentes...
________ Parce qu'on ne peut s'exprimer que par nos créations. ^^
|
|
| |
|
|
David

Grade : Expert
Inscrit le: 11 Mai 2005, 20:30
|
| Ecrit le: 17 Dec 2008, 17:45 Message non corrigé | |
|
Pour générer un terrain en pente, tu peux utiliser une image nuageuse.
Regarde sur cette page : http://www.videotutorialsrock.com/opengl_tutorial/terrain/text.php
Cette page est en anglais mais je pense que le fait de visionner ces 3 images devrait te suffire pour comprendre le mécanisme.
http://www.videotutorialsrock.com/opengl_tutorial/terrain/screenshot.png http://www.videotutorialsrock.com/opengl_tutorial/terrain/heightmap.png
http://www.videotutorialsrock.com/opengl_tutorial/terrain/diagonal.gif
Ce qu'il faut bien comprend, c'est que sur cette derière image, ce terrain est généré à partir d'une image de 3x3 px. Et en mode triangle strip, tu n'as qu'a suivre les numéros dans l'ordre pour reconstituer la map.
Si tu ne veux pas te prendre la trop la tête, enregistre l'image en BMP. La description du format BMP est ici. (peu atraillant mais très bien expliqué)
J'en profite au passage pour te dire que le mail est volontairement bloqué. Je ferais le sommaire dès que j'aurrais le temps, et il y a quelques petits trucs à corriger. Aussi, j'ai reçu un mail à propos de ton tuto ; il s'adresse donc surtout à toi donc je te montrerais tout ça.
Cette semaine c'est la semaine des partiels donc j'ai pas trop le temps mais la semaine prochaine j'suis en vacances donc on regardera ça.
________ Apprenez à créer votre propre FPS en C++ avec OpenGL. C'est pas dur ! :-)
|
|
| |
|
|
Lo

Grade : Expert
Inscrit le: 26 Dec 2007, 17:33
|
| Ecrit le: 17 Dec 2008, 18:38 Message non corrigé | |
|
Ha oui, je vois un peut mieux, fin j'attaquerai ça une fois que j'aurais réussi à déterminer les coordonnées ou le personnage doit regarder, lorsqu'il tourne grâce à la souris, mais j'y suis toujours pas arrivé.
________ Parce qu'on ne peut s'exprimer que par nos créations. ^^
|
|
| |
|
|
Lo

Grade : Expert
Inscrit le: 26 Dec 2007, 17:33
|
| Ecrit le: 17 Dec 2008, 19:23 Message non corrigé | |
|
Y'a pas un tutoriel pour faire une caméra FPS, pcq là je vosi pas comment le faire avec gluLookAt...
________ Parce qu'on ne peut s'exprimer que par nos créations. ^^
|
|
| |
|
|
David

Grade : Expert
Inscrit le: 11 Mai 2005, 20:30
|
| Ecrit le: 17 Dec 2008, 19:46 Message non corrigé | |
|
Au début, tu ne t'occupes pas de la caméra. Tu gères d'abord le déplacement du personnage.
Le personne a 3 attributs :
- X
- Y
- Angle
A partir de là, lorsque le personnage tourne vers la gauche, tu augmentes l'Angle.
Lorsqu'il avance, tu incrémentes X et Y d'une valeur que tu détermines à partir de l'angle en utilisant cos et sin. Le calcul est sur la page de mes brouillons.
Regarde :
http://www.jeux-libres.com/ne_pas_effacer/brouillons_jeux_video/img006.jpg
Ensuite, pour la caméra, tu la positionnes derière le personnage. Pour ça, tu utilises les coordonnées du personnage puis l'Angle. Puis tu regardes vers le devant du peronnage. Là encore, tu utilises le X, le Y et l'angle du personnage. Finalement, le plus difficile, c'est d'organiser son code.
________ Apprenez à créer votre propre FPS en C++ avec OpenGL. C'est pas dur ! :-)
|
|
| |
|
|
David

Grade : Expert
Inscrit le: 11 Mai 2005, 20:30
|
| Ecrit le: 17 Dec 2008, 19:56 Message non corrigé | |
|
Je vais détailler un peu plus.
Pour donner l'impression que le personnage avance de A devant lui ('A' étant une distance), il faut augmenter la position en du personnage en X d'une valeur de :
X += (cos(angle) * A);
et Y d'une valeur de :
Y += (sin(angle) * A);
Et voilà ! Ton personnage aurras translaté de A devant lui.
-----------------------------------------------------------------
Pour en revenir à la génération de terrain, le plus difficile, c'est de gérer les collisions entre le personnage et le sol. Si tu trouves un algorithme efficace pour ça je suis preneur. Je pense qu'il faut se pencher sur la question de la gestion des collisions avant de générer des terrains. Je n'ai encore pas généré de terrain mais ça a l'aire facil.
Aussi, je me demande si c'est vraiment util. Par exemple, le jeu trackmania gère des blocs. En gros, ils fournissent un gros travaille lorsqu'il cré les classes de ces bloc (rendu, collisions...). Puis ensuite, il genère des map directement à partir de ces blocs, ce qui leur permet de créer de bonnes maps assez rapidement en réutilisant leurs blocs.
________ Apprenez à créer votre propre FPS en C++ avec OpenGL. C'est pas dur ! :-)
|
|
| |
|
|
Lo

Grade : Expert
Inscrit le: 26 Dec 2007, 17:33
|
| Ecrit le: 17 Dec 2008, 21:27 Message non corrigé | |
|
D'accord, d'accord, ... Mais mes maps, je crois que je vais utiliser un moteur 3D qui sera commun pour tout les jeux que je voudrait faire.
Ca va être dur, mais une fois le truc fini, je n'aurait quasiment plus rien à faire à part dessiner les persos.
Pour les collisions, je pense que je vais utiliser Newton, se sera plus facile.
En géométrie de l'espace j'y connais plus rien et en physique non plus, et j'ai du mal à me remémorer comment ça fonctionne la trigonométrie, les vecteurs, etc...
D'ailleurs il utilise une classe Vector3D pour les pentes, mais je vois ce qu'elle fait.
Pour faire avancer le pero, oké, là j'essaye de faire suivre la direction caméra.
Mais façon je suis obligé de faire un terrain en pente si je veux gérer les collisions face au sol.
________ Parce qu'on ne peut s'exprimer que par nos créations. ^^
|
|
| |
|
|
Lo

Grade : Expert
Inscrit le: 26 Dec 2007, 17:33
|
| Ecrit le: 18 Dec 2008, 17:58 Message non corrigé | |
|
Yes, j'arrive à faire bouger l'ogre avec la souris et le clavier. (Trop cool)
Bon bah maintenant il me reste quoi à apprendre.
Euh, bah l'import des modèles 3D, texture et tout ça c'est oké, maintenant, maintenant bah il me reste les terrain en pentes et les collisions, et normalement, j'ai fini les bases je crois. (Enfin!)
Yes, je pense que si je vais à cette allure là, je pourrai dans une ou deux années déjà commencer un jeux vidéo.
En fait j'ai mit ma formule dans le lookAt et ça marche, mais avec des variables à part, ça me faisait n'importe quoi.
Et le angle * 3.14 / 180 c'est parce que l'angle à donner à la fonction sinus et cosinus doit être en radiant.
J'ai enfin capté!
________ Parce qu'on ne peut s'exprimer que par nos créations. ^^
|
|
| |
|
|
Lo

Grade : Expert
Inscrit le: 26 Dec 2007, 17:33
|
| Ecrit le: 18 Dec 2008, 19:18 Message non corrigé | |
|
Wai nickel, j'ai même fait en sorte que le personnage regarde vers le bas ou vers le haut. (Truc que tu n'as pas fais)
________ Parce qu'on ne peut s'exprimer que par nos créations. ^^
|
|
| |
|
| |