NEWS         TESTS         INTERVIEWS         DOSSIERS         GALLERY 3D         3D SITES
 Q&A Cooki3d,
Bertrand Greslier
November 2006
 

 

 

"L'exemple osgDepthShadow utilise les fragment shaders pour réaliser des ombres portées. Open Scene Graph supporte aussi d'autres effets spéciaux comme les champs de particules, les flammes, le rendu cartoon et beaucoup d'autres [...]
Pour la partie web utilisant JOGL seule une infime partie du code est interprétée car JOGL est aussi écrit pour partie en C/C++ et n'est utilisé par Cooki3d que pour déclarer le contexte OpenGL. Donc les performances sont comparables à un moteur 100% C++, la perte sur le port web est minime."

< Cooki3D (mode JOGL)

   
Q1 Pouvez-vous nous présenter Cooki3d ainsi que vos activités ?
A1

Cooki3d
Cooki3d est un projet Open Source et multi plate-forme dédié à la 3D (limité à Linux et Windows pour cette première version). Cet outil est donc basé uniquement sur des librairies 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.
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 enrivon 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 plugins 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 plugins 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 plugins. [*] Néanmoins les prochaines versions supporteront les languages 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.

Mes activités
Ma première activité est de promouvoir cet outil. Je me consacre à : améliorer cet outil et installer des démos sur d'autres sites web, créer plus de documentation, plus d'exemples... Les quelques licences propriétaires vendues seront un apport symbolique.
Lié à cette activité, je propose mes services de consultation, mes compétences de chef de projet et de programmeur spécialisé pour le développement d'applications spécifiques dans la réalité virtuelle (imagerie, jeu vidéo, ...).
J'espère à moyen terme, avoir les ressources financières suffisantes pour à mon tour lancer des projets de réalité virtuelle et embaucher des équipes d'infographistes et de programmeurs.

   
Q2 Cooki3d est présenté comme un game engine. Peut-on l'utiliser pour créer un jeu en 3D avec du son, des gestions de collision (...) ?
A2 Effectivement, Cooki3d offre des objets permettant la gestion d'un son wav, mp3 de manière très simple (play, pause, stop, setPostion...). La gestion des collisions se fait sous forme d'obstacles statiques (différenciel de terrain) ou dynamiques (boites emglobantes...) qui génèrent des événements de collision. Ces objets sont déjà directement utilisables depuis le framework. De plus Cooki3d offre également une gestion des personnages, de leurs différents comportements, les déplacements à la souris sur un terrain... ainsi que beaucoup d'autres fonctionnalités.
   
Q3 Le format Open Scene Graph n'est pas particulièrement réputé pour son niveau d'optimisation pour le web (compression). Cela ne génère t-il pas des fichiers de grosses tailles par rapport au VRML par exemple ?
A3 Tout d'abord OpenSceneGraph est un des outils les plus riches en terme de format. Il offre un accès direct à une multitude de format : OpenFlight (.flt), TerraPage (.txp) (including multi-threaded paging support), LightWave (.lwo), Alias Wavefront (.obj), Carbon Graphics GEO (.geo), 3D Studio MAX (.3ds), Peformer (.pfb), Quake Character Models (.md2). Direct X (.x), and Inventor Ascii 2.0 (.iv)/ VRML 1.0 (.wrl), Designer Workshop (.dw) and AC3D (.ac) et le format natif ASCII .osg. Donc OpenSceneGraph gère en natif VRML. Effectivement le format ASCII est loin d'être compressé et il est parfois utilisé pour des raisons de compatibilité entre versions d'OSG et aussi de simplicité de lecture et de modification directement en mode texte.
En envisageant même le cas ou l'utilisateur veut utiliser le format osg, l'application (plugin) finale Cooki3d diffusée sur le web est compressée sous forme de zip. Et l'on sait que le texte se compresse à des taux de compression très fort. De plus, l'utilisateur pourra très facilement adapter son format propriétaire au système de format d'Open Scene Graph en écrivant un plugin adapté. En fait la taille final du modèle dépend surtout du nombre de facettes qu'il contient et donc de la manière dont il a été modélisé et optimisé par l'infographiste.
Néanmoins, par défaut, Cooki3d limite volontairement le nombre de format pour réduire la taille des librairies déployées sur le poste client . [*] Pour utiliser un format autre, une librairie de format additionnelle sera déployée séparément.
   
Q4 L'utilisation d'une applet Java pour diffuser les contenus dans la fenêtre du navigateur, ne devrait nécessiter aucune installation particulière. Pourquoi Cooki3d requière un fichier d'installation ?
A4 Tout d'abord , Java (Sun JVM) n'est pas fourni en standard avec les navigateurs. L'utilisateur doit donc posséder une JVM (Java Virtual Machine ou JRE Java Runtime Edition) de Sun > 1.4.2. La page d'installation de Cooki3d conseille donc l'utilisateur pour installer une jvm s'il n'en a pas déjà une, ou si son navigateur n'a pas réussit à le rediriger ou installer automatiquement le plugin Java (Sun JVM)...
Ensuite une applet java n'autorise pas par défaut à charger une librairie ou à copier un fichier sur la machine cliente pour des raisons de sécurité. La solution proposée est donc de rajouter une permission spécifique pour que l'applet puisse effectuer ces opérations, l'utilisateur doit donner son autorisation en executant l'installation (fichier .bat sous windows, fichier .sh sous linux). Et ensuite redémarrer son navigateur ou bien rafraîchir la politique java des sécurités dans la console java.
[*] Néanmoins, cette solution va être simplifiée, cette manipulation ne sera plus nécéssaire dans les versions suivantes. Une applet signée, centralisée, sera utilisée et l'utilisateur aura donc juste à cliquer sur 'Oui j'accepte Cooki3d...' uniquement pour la toute première fois qu'il se retrouvera devant une applet Cooki3d.
   
Q5 L'exemple "osgprerender" montre de larges possibilités du moteur, supporte t-il les fragment ou vertex shaders ?
A5 L'exemple osgDepthShadow utilise les fragment shaders pour réaliser des ombres portées. Open Scene Graph supporte aussi d'autres effets spéciaux comme les champs de particules, les flammes, le rendu cartoon et beaucoup d'autres...
[*] Dans une prochaine version des objets complémenaires seront ajoutés dans le framework et l'api pour gérer directement des effets spéciaux sans passer par du code. Hélas, ce genre d'exemple nécéssite généralement que l'utilisateur ait une bonne carte graphique pour pouvoir en profiter, pour ce cas là supportant l'OpenGL et les shaders...
   
Q6 Nous avons constaté une grande stabilité de votre solution, même avec plusieurs scènes 3D affichées. Est-ce que l'on peut obtenir des performances comparables à une solution 100% C++ avec Cooki3d ?
A6 Lors d'une execution externe (SDL, Producer, QT4) la solution est déjà 100% C++. Pour la partie web utilisant la GUI java/jogl seule une infime partie du code est interprétée car jogl est aussi écrit pour partie en C/C++ et n'est utilisé par Cooki3d que pour déclarer le contexte OpenGL. Ecrire une solution 100% C++ pour le web nécessiterait d'écrire un plugin pour chaque navigateur web et donc un gros investissement en temps et en argent, avec comme résultat beaucoup de bugs et des améliorations peut convainquantes au vue des efforts accomplient. Donc effectivement les performances sont comparables, la perte sur le port web est, en tous les cas, minime.
   
Q7 Sous quelle forme est proposée Cooki3d ?
A7 Aujoud'hui, la partie 'runtime' de Cooki3d et ses dépendances se déployent automatiquement sur le poste client lorsqu'il visite pour la première fois une démo. De même, la partie 'developement' de Cooki3d est déployée automatiquement lorsque l'utilisateur utilise le framework Cooki3d. Sous windows, il faut avoir installer Mingw et Msys pour compiler des plugins.
Les sources de l'api C++ (GNU/GPL) sont disponibles sur le site www.cooki3d.org sur simple demande d'un compte utilisateur.
   
Q8 Quels sont vos objectifs avec Cooki3d, et quelles seront ses évolutions ?
A8

Mes objectifs avec Cooki3d sont de diffuser très largement sur le web des applications Cooki3d et d'imposer cette solution comme un standard reconnu, fonctionnant sur n'importe quelle plate-forme.
Les évolutions sont annotées d'une [*] au cours de l'interview. Les principaux axes à souligner sont l'amélioration de la documentation, des exemples et de l'accessibilité aux fonctions avancées pour les utilisateurs autres que les développeurs.

   
   
   
   
 
  Search on 3d-test with Google
      A PROPOS DE 3D-TEST            INFORMATIONS LEGALES               LINKS              TRANSLATE WITH GOOGLE
 
© 2001-2007 3d-test, Panorama of web 3D technologies, 3d-test is edited by Westimages Realtime 3D Solution Provider