II.3.2. Java3D
a.
Caractéristiques
Java3D actuellement à la version 1.5.2, est une
bibliothèque de classes destinée à créer des
scènes 3D (utilisation de formes complexes, d'éclairages, de
textures, d'animations, de sons ...) développée par
SunMicrosystem en 1998. Contrairement à OpenGL et DirectX qui ont chacun
leur implémentation, Java3D possède un support natif OpenGL,
DirectX et QuickDraw3D. Mais pourquoi développer Java3D alors qu'existe
déjà OpenGL et DirectX ? Le but est de faciliter la programmation
en disposant de fonctions de haut niveau ainsi que de permettre
l'écriture d'applets contenant des scènes 3D. Java3D est aussi
justifié par la portabilité de Java, ainsi une application ou
applet peut être lancée avec le même code compilé
dans toutes les plateformes ou Java3D existe (actuellement Solaris, SGI, HP-UX,
Linux et Windows).
b. Implémentation
Java3D est une extension du langage Java destinée
à créer des scènes 3D. Il se présente sous la forme
d'une bibliothèque de classes (packages J3D). Comme indiqué plus
haut, Java3D utilise OpenGL ou DirectX pour fonctionner, rajoutant un niveau
d'abstraction entre les bibliothèques 3D de base et le logiciel:
Figure II.9 : Abstraction entre les
bibliothèques 3D de base et le logiciel.
Java3D utilise la classe Transform3D pour gérer les
opérations de Translations, Rotations et Homotéties. Cette
opération est associée à une instance de la classe
TransformGroup, puis ajoutée à l'arbre de la scène pour
l'appliquer sur une forme. Il existe trois modèles de rendu pour Java3D
permettant d'espérer des optimisations conduisant à
l'amélioration de la vitesse d'affichage :
ü Immediate Mode: Permet d'utiliser ou
non la structure graphe de scène inhérente à l'API Java
3D. Plus flexible mais moins performant.
ü Retained mode : Tous les objets
définis dans le graphe de scène accessibles et manipulables par
programme, par sélection, ... Optimisation de la vitesse de rendu par
réalisation automatique d'optimisations par Java3D.
ü Compiled-Retained mode : Meilleures
performances de rendu par optimisation poussée, mais perte de la
flexibilité de programmation liée aux possibilités
d'accès et de modification des objets.
On notera enfin pour terminer sur Java3D qu'il existe une
methode compile() de la class BranchGroup permettant d'optimiser le sous-arbre
de ce BranchGroup.
c. Exemple
Peu d'applications industrielles sont
développées avec Java3D. On observe plutôt des applications
individuelles, du fait de la simplicité d'utilisation. Par exemple
Java3D est très utilisée pour la création d'applets des
sites scientifiques (représentations de molécules, simulations
physiques, ...).
Figure II.10 : Exemple du rendu produit par
Java3D [9]
|