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
- Cooki3d (1 clic)
- Exemples en ligne (2 clics)
- Framework en ligne (1 clic)
- docs fr. framework (1 clic)
- OpenSceneGraph (1 clic)
- SDL (1 clic)
# simulation/affichage
Posté par Nicolas Boulay (site web personnel) . Évalué à 4.
Cooki3D peut aider a cela ?
"La première sécurité est la liberté"
[^] # Re: simulation/affichage
Posté par Matthieu Duchemin (site web personnel) . Évalué à 3.
http://www.linuxgraphic.org/section3d/openGL/didact.html
[^] # Re: simulation/affichage
Posté par Nicolas Boulay (site web personnel) . Évalué à 4.
"La première sécurité est la liberté"
[^] # Re: simulation/affichage
Posté par bertrandg . Évalué à 1.
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 bertrandg . Évalué à 3.
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 bertrandg . Évalué à 0.
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 Frederic Bourgeois (site web personnel) . Évalué à 3.
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 ThesmallgamerS . Évalué à 4.
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 bertrandg . Évalué à 3.
# encore un autre je de poker3d en preparation
Posté par cedric . Évalué à -1.
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.