Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

OPENGL - JEU DE BILLARD EN 3D PAS FINI


Information sur la source

Catégorie :Jeux Classé sous : billard, physique, 3d, jeu, opengl Niveau : Initié Date de création : 04/01/2008 Date de mise à jour : 04/01/2008 02:39:20 Vu : 7 380

Note :
Aucune note

Commentaire sur cette source (1)
Ajouter un commentaire et/ou une note

Description

Cliquez pour voir la capture en taille normale
Bonjour

le projet est trop lourd il fait 1.5mo au lieu de 1mo maximum
vous pouvez le télécharger sur mon ftp:
http://www.hacking.free.fr/paris8/continous_physic_billard.zip
(l'exe est dans le zip, il faut renommer le .ex_)

c'est un projet pour la fac qui m'a permis de bien avancer en opengl et en méca

la physique est gérée de manière continue

les librairies utilisées:
SDL
GL
glu
gsl (pour la résolution d'équations du 4ième degré)
glew (pour la lumière avec shader et les vbo)

il manque les choses suivantes pour en faire un super jeu de billard, mais je ne pense pas arriver au bout de tous ces problèmes:
- rajout des règles (8ball, snooker, billard français, ...)
- suppression du bug qui arrive parfois et qui fait sortir les boules de la table
- que la canne ne traverse plus les boules et la table
- permettre de faire sauter les boules avec la canne (le moteur physique peut déja les faire sauter)
- amélioraton du framerate et rajout de lumières, ombres mieux gérées...
- rajouter une gestion des collisions sur les forces et pas seulement sur la vélocité (c'est ça qui fait sortir les boules de la table ou bloquer le jeu parfois)


 

Source

  • // faire avancer la simulation de t secondes
  • int run_physic(Kbillard *b, Kreal t) {
  • if (!b->nb_collision) {
  • b->total_time += t;
  • return 1; // s'il n'y a pas de boule
  • }
  • while(t > 0) { // on va avancer la simulation de t secondes
  • int i = 0;
  • Kreal breakpoint = b->collision[0]->t;
  • if (breakpoint == -1) {
  • return 1;
  • }
  • if (breakpoint > b->total_time + t) { // si ça va arriver dans plus longtemps que t alors on quitte
  • b->total_time += t;
  • actualiser_positions(b);
  • return 0;
  • }
  • t -= breakpoint - b->total_time;
  • b->total_time = breakpoint;
  • faire_avancer_boule(b,b->collision[i]->a);
  • if (b->collision[i]->type == BALL) {
  • faire_avancer_boule(b,b->collision[i]->b);
  • }
  • traiter_collision(b);
  • printf("%f\n", b->ball[0]->angular_velocity.y);
  • getchar();
  • actualiser_collisions(b,b->collision[i]->a);
  • if (b->collision[i]->type == BALL) {
  • actualiser_collisions(b,b->collision[i]->b);
  • }
  • trier_collisions(b);
  • }
  • actualiser_positions(b);
  • return 0;
  • }
// faire avancer la simulation de t secondes

int run_physic(Kbillard *b, Kreal t) {

    if (!b->nb_collision) {
        b->total_time += t;
        return 1; // s'il n'y a pas de boule
    }

    while(t > 0) { // on va avancer la simulation de t secondes

        int i = 0;
        Kreal breakpoint = b->collision[0]->t;

        if (breakpoint == -1) {
            return 1;
        }

        if (breakpoint > b->total_time + t) { // si ça va arriver dans plus longtemps que t alors on quitte
            b->total_time += t;
            actualiser_positions(b);
            return 0;
        }

        t -= breakpoint - b->total_time;
        b->total_time = breakpoint;


        faire_avancer_boule(b,b->collision[i]->a);
        if (b->collision[i]->type == BALL) {
            faire_avancer_boule(b,b->collision[i]->b);
        }

        traiter_collision(b);

        printf("%f\n", b->ball[0]->angular_velocity.y);
        getchar();

        actualiser_collisions(b,b->collision[i]->a);

        if (b->collision[i]->type == BALL) {
            actualiser_collisions(b,b->collision[i]->b);
        }
        trier_collisions(b);
    }

    actualiser_positions(b);
    return 0;
}

Conclusion

il faut une carte graphique pour le faire fonctionner car j'utilise les shaders et les vbos !


ce n'est pas moi qui ai fait la table et la room je les ai piquées dans un jeu de billard :)


j'ai mis une version de gsl avec le .lib et le .a:
http://www.hacking.free.fr/paris8/gsl.rar
 

Historique

04 janvier 2008 02:39:20 :
....

Commentaires et avis

signaler à un administrateur
Commentaire de karima1984 le 26/10/2008 12:58:38

salut
je travaill avec 3dsmax8,et je ss entrain de modeliser qlq objets
mais j'ais besoin de connaitre la structure d'un fichier 3ds
ou on px trouver les dimensions et la position x,y,z
.....ect.
car je vx creer un base de données pour ces objets,donc j ais besoin de les fragmenter.
voila ce que je vx,donc si tu as qlq information ou documentation
sur la structur d'un fichier 3ds et le loader
j'ais vraiment besoin
merci

Ajouter un commentaire

Discussions en rapport avec ce code source dans le forum

Objects 3D Opengl [ par mastave ] Comment inclure dans un fenêtre OpenGl un fichier 3D DXF ou3DS??? un ptit jeu [ par BLaFarD ] euh, je viens de me pondre un petit moteur 3d de merde en opengldonc, si qlqun veut me filer des model 3d k'il a fait (sous 3dsmax si possible), bah, Moteur 3d OpenGL [ par Stormy ] Salut. Je recherche des personnes motives pour travailler sur un moteur 3d sous OpenGL. Les bases sont deja etablies (Detection de collisions, sons, m Faire un jeu (Voiture) [ par skone007 ] Voilà depuis peu le modeuleur 3D du projet nous a quitter. Nous recherchons des personnes capables de faires des voitures et des circuits en 3D. Nou OpenGl et objets 3D [ par mshn ] bonjour, est ce qu'on peux céer des objets 3D sous OpenGl, et les manipuler (animer et déplacer) par programme en utilisant un environnement de C++ ? Création d'un moteur physique pour un avion (3d) | comment calculer certaines forces [ par daneel17fr ] Bonjour,donc je voudrai développer un moteur 3d pour simuler le comportement d'un avion en l'air.il n'est pas (encore) question d'affichage 3d, mais j projet jeu voiture 3D [ par supergrey ] Bonjour a tous.Dans le cadre de notre dernier projet de développement, nous proposons au modéliste 3D un partenariat des plus simples.En effet nous vo Projet OpenGl [ par barraq ] salut,Voila j'ai un projet a faire pour ma fac, je doit réaliser tout un environement 3d en opengl .Je doit pouvoir me deplacer dans une map donnée et Projet de jeu sur quimper [ par vini123 ] ça y est après avoir fini mes études et connaissant une petite période de chômage j'en profite pour me lancer dans la programmation d'un moteur 3D. J'


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :

Comparez les prix Nouvelle version

Photothèque Nouveau !



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
Temps d'éxécution de la page : 2,964 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.