RENDU 3D DANS APPLETS JAVA

Les browsers web proposent une interface au langage java ainsi l'affichage d'une zone de la page html est à la charge de l'applet (mini application) et non du browser.

L'utilisation d'applet permet d'incruster de véritables applications dans une page web, les applets ont beaucoup été utilisés pour faire des petites présentations multimédia qui donnent de l'effet aux homepages.
Mais java étant un puissant langage de programmation, de nombreuses bibliothèques ont été réalisées ainsi (jdbc, java.wallet) ainsi les utilisations d'applets sont devenues plus poussées.

APPLETS Java 1.0 / 1.1

Gràce au package (java.awt.*), un applet est une zone graphique, on peut donc y tracer des polygones et donc effectuer un rendu 3d.
View3D
Library free permettant de visualiser des objets 3D avec une configuration classique (jvm de IE) http://visualbeans.com/View3D/
GL4Java & Joglh
Passe par JNI ou Direct3D http://www.jausoft.com/gl4javaw , Package java implementant les spécifications OpenGL http://www.pajato.com/jogl
Anfy3d
Moteur de rendu 3d, differents formats supportés (vrml, 3dsmax) , livré avec éditeur.
100 % Sofware (java 1.1) sans plugins, ne requiet pas de configuration préalable. Pas d'accélération matérielle. http://anfyteam.com/panfy3d.html
Shout3d
Package commercial proposant un ensemble de classes java pour le rendu 3D avec de nombreux effets Textures, Morphing, Navigation Interactive, Gestion du son, Transparance, Modeles hierachiques ... http://www.shout3d.com

JAVA 3D (sous Java 1.2,+)

Parmi les API java disponibles Sun a proposé une bibliothèque 3D de haut niveau.
Cet ensemble de classes est destiné au tracé d'objets tridimentionnel dans des applications ou applets.
Des méthodes de compression de géométrie sont également fournies .
Java.3d s'interface entre la machine virtuelle java et la machine OpenGL (soit hardware, soit software). Ainsi le tracé 3D n'est pas ralenti.

Le probleme majeur et que son intégration dans les browsers web est loin d'etre simple. En effet la seule solution est que l'utilisateur soit extrement comprehensif et patient pour effectuer la demarche suivante :

  1. Télécharger et Installer le JDK (20M)
  2. Télécharger et Installer la bibliotheque Java3D (1.8M)
  3. Télécharger et Installer Java Plugin (12.2M)
  4. Copier manuellement les fichiers de c:\jdk1.2.2\jre\lib\ext
    vers c:\jdk1.2.2\jre\lib & c:\programfiles\javasoft\jre\1.2\lib
  5. Réinstaller Java3D
  6. Modifier l'Environement :
    REM AUTOEXEC.BAT file 
    set PATH c:\jdk1.2.2\bin
    set CLASSPATH=.;c:\jdk1.2.2\lib\classes.zip
    
http://java.sun.com/products/java-media/3D/

Applet Java 1.2 avec JAVA Plug'in

Ce mécanisme aurait tendance à (enfin) instaurer une certaine stabilité et à abolir les restrictions actuelles des applets Java.
Car jusqu'alors JAVA avait la réputation d'être instable, de plus chaque browser web a son propre interpréteur java (JVM) ce qui n'arrangait pas les problèmes de compatibilité, version ...
Dorénavant la Machine Virtuelle Java n'est plus propre au browser web mais directement au système d'exploitation. De plus de nouveaux packages peuvent être mis à jour par le réseau (Intranet par exemple). http://192.9.48.9/products/plugin/1.1.3/demos/applets.html , http://www.javasoft.com/products/plugin

CODE NATIF

Java propose plusieurs solutions pour collaborer avec du code natif (compilé pour l'OS hôte).
Les solutions sont :

Par exemple pour le tutorial JPot, les programmes sont écrits en C, ils utilisent la lib OpenGL, et communiquent avec l'interface par communication messages/signaux.

Cette technique est extremement interessante mais beaucoup plus pour les applications que les applets. Donc si la solution est techniquement possible, les problèmes de sécurité et de compatibilité sont à traiter et ce n'est pas une mince affaire.

Performances liées a Java

Java a la réputation d'être trop lent, mais de nombreux exemples prouvent le contraire.
Il ne faut pas oublier que "La solidité d'une chaine est celle de son plus faible maillon", c'est a dire que si l'application utilise de la bande passante, le debit du réseau fixera la rapidité perçue par l'utilisateur.
En effet les performances actuelles des ordinateurs alliées à l'efficacité des algorithmes, me permettent de croire que les applets java peuvent etre adaptées à nos besoins.

On peut toujours utiliser les optimisations suivantes :

Conclusion

On peux donc discerner 2 possiblilités : Malheuresement, il n'existe pas (encore) de solution viable pour utiliser Java3D en applet... en Intranet cela serait possible.
La meilleure solution actuelle est donc l'applet java 1.1 où le tracé graphique se fait par le package java.awt de dessin 2D.

Si on cherche à optimiser les calculs le résultat est plus que satisfaisant pour beaucoup d'utilisations.

Ressources Java

Java :
Faqs : http://www-net.com/java/faq/ , http://www.faqs.org/faqs/computer-lang/java/programmers/faq/
Java3D :
Sun : http://java.sun.com/products/java-media/3D/
Faq : http://www.javasoft.com/products/java-media/3D/forDevelopers/java3dfaq.html
Utilisations de Java3D : http://www.ncsa.uiuc.edu/~srp/Java3D/
Tutorial : http://www.j3d.org
Loaders : http://www.billday.com/Java3DArchive/index.html
Démos : http://www.stud.uni-hamburg.de/users/peter/java/battle/index.html
Misc: http://www.gamasutra.com/features/programming/19990115/java3d_01.htm
Applets 3D : http://www.jars.com/classes/jresout.cgi?category=Multimedia+-+3D+Graphics&language=Java&rating=All
Misc: Java + OpenInventor :
http://www.igd.fhg.de/CP/kahlua/