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 :
- Télécharger et Installer le JDK (20M)
- Télécharger et Installer la bibliotheque Java3D (1.8M)
- Télécharger et Installer Java Plugin (12.2M)
- 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
- Réinstaller Java3D
- 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 :
- JNI
- Programmes externes
- Communication de messages/signaux
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 :
- Il est preferable de réutiliser les objets
que les désalouer (garbage colector) et les recréer.
-
java.awt.image.MemoryImage
-
Jax
http://www.research.ibm.com/jax
- ...
Conclusion
On peux donc discerner 2 possiblilités :
- Java 1.1 : refaire les classes necessaires au renderer
- Java 1.2 = java plugin + java3D :
batir l'application sur une couche OpenGL
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/