Cooki3d : une première version GNU/GPL

Posté par  . Modéré par j.
Étiquettes :
0
20
nov.
2006
Jeu
Cooki3d est un moteur de jeu et d'applications de réalité virtuelle.

C'est un projet Open Source et multi plate-forme dédié à la 3D (limité à Linux et Windows pour cette première version). Cet outil s'appuie sur des bibliothèques multi plates-formes et Open Source robustes (SDL, OpenSceneGraph...) ainsi que sur l'OpenGL. La licence de diffusion choisie est la GNU GPL pour les projets open sources. Néanmoins une licence propriétaire commerciale payante est disponible pour les entreprises ou particuliers ne désirant pas diffuser leur code source.

Vous pouvez d'ores et déjà tester des démos dans votre navigateur. Une api C++ :
Cooki3d est d'abord une API pour la 3D développée en C++. Ce langage a été choisi pour son efficacité, sa portabilité et surtout pour sa richesse en terme de ressources existantes dans la 3D (SDL, OpenSceneGraph [1500 utilisateurs déclarés!], ...). Cet outil veut rendre la vie facile aux programmeurs (que j'encourage au passage à travailler sous Linux pour des raisons de productivité, d'efficacité, de coût, d'éthique...). Ainsi, cette première version offre aux programmeurs environ 18 classes de base chargeables en XML et permettant de gérer les modèles 3D, les événements, les médias... Cooki3d peut être utilisé directement comme une API ou bien le plus souvent comme un chargeur d'application grâce à un système de greffons C++.

Un framework dédié :
Cooki3d est ensuite facile d'utilisation. Un framework écrit en Java est directement accessible et déployé depuis une page web (on peut également l'utiliser en local). Il permet de créer le fichier XML décrivant l'application. Il permet également de générer et compiler des greffons de manière automatique. Ce framework nécessite encore d'avoir des connaissances de base en programmation pour cette première version si l'on utilise les greffons. [*] Néanmoins les prochaines versions supporteront les langages de script Lua et Tcl. De plus, des facilités graphiques seront ajoutées pour les nombreux utilisateurs potentiels moins portés sur la programmation.
L'utilisateur a aussi la possibilité de choisir son GUI. Les GUI disponibles pour cette première version sont SDL, Producer, Java et QT4 (ces GUI sont multi plates-formes et open source). Le GUI Java offre cette possibilité du port web, intégré à la page HTML, via une applet Java/jogl. [*] Un ajout de Gtk sera fait dans les versions suivantes.
La compilation d'un greffon nécessite d'avoir installé Mingw et Msys.


[ce texte est extrait pour 90% d'une interview donnée à www.3d-test.com]

Aller plus loin

  • # simulation/affichage

    Posté par  (site web personnel) . Évalué à 4.

    Je cherche une lib qui puisse faire une affichage 3D, juste bouger des cubes un peu comme on bouge des carres dans un caneva. C'est juste de la visualisation.

    Cooki3D peut aider a cela ?

    "La première sécurité est la liberté"

    • [^] # Re: simulation/affichage

      Posté par  (site web personnel) . Évalué à 3.

      Franchement, si c'est juste pour bouger des cubes, tu peux le faire en OpenGL ça suffit amplement. Voir les excellents tutoriels sur la programmation OpenGL qui étaient publiés dans Linux Mag dont une bonne partie est disponible sur :
      http://www.linuxgraphic.org/section3d/openGL/didact.html
      • [^] # Re: simulation/affichage

        Posté par  (site web personnel) . Évalué à 4.

        Je préfairerais largement une lib avec un objet que je bouge avec obj.move(x,y,z) que de repartir d'un truc ou je dois me poser la question du sens des faces ou de l'effets des différents éclairages.

        "La première sécurité est la liberté"

        • [^] # Re: simulation/affichage

          Posté par  . Évalué à 1.

          tu peux le faire facilement avec cooki3d
          dans le framework fait

          sur noeud root faire : new Level (level0)
          sur level0 faire : new File (file0):
          => précise le chemin du modèle du cube à charger
          => précise sa position initiale

          ensuite tu pourra changer la position dynamiquement
          en fesant dans le code d'un évenement en fesant
          file0->getPat()->setPositon( x, y, z);
          ...
        • [^] # Re: simulation/affichage

          Posté par  . Évalué à 3.

          en fait si tu utilise par exemple tu utilise des évenements claviers le code exact (testé) pourra être celui ci

          void Clevel0::codeEvtKeyGroup0( EvtKey * evt ){
          //debut section utilisateur
          //
          if (evt->getKeySymbol() == osgGA::GUIEventAdapter::KEY_Right){
          file0->getPat()->setPosition( file0->getPat()->getPosition() + osg::Vec3( 1,0,0) );
          }
          if (evt->getKeySymbol() == osgGA::GUIEventAdapter::KEY_Left){
          file0->getPat()->setPosition( file0->getPat()->getPosition() + osg::Vec3( -1,0,0) );
          }
          if (evt->getKeySymbol() == osgGA::GUIEventAdapter::KEY_Up){
          file0->getPat()->setPosition( file0->getPat()->getPosition() + osg::Vec3( 0,0,1) );
          }
          if (evt->getKeySymbol() == osgGA::GUIEventAdapter::KEY_Down){
          file0->getPat()->setPosition( file0->getPat()->getPosition() + osg::Vec3( 0,0,-1) );
          }
          //</modifiable1> fin de section
          }
        • [^] # Re: simulation/affichage

          Posté par  . Évalué à 0.

          en fait si tu utilise par exemple des évenements claviers le code exact (testé) pourra être celui ci

          void Clevel0::codeEvtKeyGroup0( EvtKey * evt ){
          //debut section utilisateur
          //
          if (evt->getKeySymbol() == osgGA::GUIEventAdapter::KEY_Right){
          file0->getPat()->setPosition( file0->getPat()->getPosition() + osg::Vec3( 1,0,0) );
          }
          if (evt->getKeySymbol() == osgGA::GUIEventAdapter::KEY_Left){
          file0->getPat()->setPosition( file0->getPat()->getPosition() + osg::Vec3( -1,0,0) );
          }
          if (evt->getKeySymbol() == osgGA::GUIEventAdapter::KEY_Up){
          file0->getPat()->setPosition( file0->getPat()->getPosition() + osg::Vec3( 0,0,1) );
          }
          if (evt->getKeySymbol() == osgGA::GUIEventAdapter::KEY_Down){
          file0->getPat()->setPosition( file0->getPat()->getPosition() + osg::Vec3( 0,0,-1) );
          }
          //</modifiable1> fin de section
          }
  • # Moteur 3D

    Posté par  (site web personnel) . Évalué à 3.

    Bonjour,

    Je suis surpris du nombre de moteur 3D (ou de projet de moteur ...).
    Je ne connais pas le domaine, mais il n'existe pas de logiciel ayant suffisamment de fonctionnalités pour les usages courants ? Ou le problème est-il ailleurs ?

    Ce n'est pas un troll hein, juste une question
    • [^] # Re: Moteur 3D

      Posté par  . Évalué à 4.

      La raison courte est : Faire un moteur 3d, c'est cool.

      La réponse longue est plus complexe. Le libre regorge de bon moteur 3d, que ce soit http://www.ogre3d.org/ ou http://www.crystalspace3d.org/tikiwiki/tiki-view_articles.ph(...) . Ces deux là sont matures.

      Si des gens continue a créer des moteurs 3d, c'est parce que c'est un formidable entraînement pour la gestion des coordonnées de l'espace, le rendering, la gestion de la mémoire, des textures... Et puis on en voit tout de suite la fin : Si le cube s'affiche, on peut crier victoire ;-)
    • [^] # Re: Moteur 3D

      Posté par  . Évalué à 3.

      Cooki3d n'est pas un moteur comme les autres, il permet notamment de porter les applications directement dans un contenu web.
  • # encore un autre je de poker3d en preparation

    Posté par  . Évalué à -1.

    bon ok je trolle peut etre....

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.