Expliquez-moi
 
21/08/2007

L'API Java 3D

Structurant les scènes graphiques en arbre, l'interface permet de construire des environnements en trois dimensions pour la plate-forme Java. Présentation de ses fonctionnalités avec code à l'appui.
  Envoyer Imprimer  

 
En savoir plus
 
 
 

Java 3D est une extension de Java, ayant pour fonction d'afficher des environnements en trois dimensions. Cette API permet la création d'applications graphiques en 3 dimensions et d'applets Internet à base de 3D. Elle fournit des outils pour la création et la manipulation de géométrie 3D, pour la construction de structures utilisées pour le rendu de cette géométrie. Avec cette API, il est possible de définir et d'afficher efficacement des mondes virtuels.

Les programmes écrits en Java 3D sont exécutables sur n'importe quelle plate-forme ainsi que sur Internet. Conçu dans le but de faciliter la programmation, Java 3D est justifiée par la portabilité de ses applications sur toute plate-forme où Java3D existe (actuellement Solaris et Windows). Depuis la version 1.2, Java 3D est développée dans le cadre du Java Community Process de Sun.

Graphe de scène

Java3D n'est pas seulement une API graphique, mais aussi une interface qui encapsule la programmation des graphiques utilisant un concept orienté objet : une scène est construite en utilisant un graphe de scène structuré comme un arbre contenant les éléments qui sont nécessaires pour afficher les objets. Ce graphe est organisé sous forme d'arborescence par assemblage d'éléments (objets) liés par des relations de type "père/fils". En plus, Java 3D supporte des effets audio 3D.

Principales fonctionnalités

Evidemment, Java 3D requiert une connaissance minimum de Java et de la programmation en général. L'API Java 3D se base sur des technologies déjà existantes telles que DirectX et OpenGL. Java 3D peut également implémenter des objets créés avec des programmes de modélisation 3D comme TrueSpace ou VRML.

Parmi les fonctionnalités, on peut citer :
» l'évolutivité par dérivation de classes,
» la détection des collisions entre objets,
» la gestion de périphériques de saisie,
» la gestion des sons dans l'environnement 3D,
» la programmation des ombres, du brouillard, de l'antialiasing,
» la configuration de plusieurs éclairages d'écran.

Structure d'un objet

Java 3D étant très orienté objet, son modèle induit une représentation des scènes sous forme d'un arbre sans cycle. C'est un graphe formé de nœuds et d'arcs, où un nœud ne pointe jamais vers l'un de ses parents (direct ou non), et où un nœud n'a jamais plusieurs pères. La racine de l'arbre est l'univers virtuel auquel un point de référence est rattaché ; ce point va servir de repère pour placer les différents objets.

Un objet peut être vu comme un regroupement d'objets élémentaires. Chaque objet élémentaire est issu de l'association d'une géométrie (ensemble de faces triangulaires ou de primitives) et d'une apparence (couleur, transparence, texture). Java3D fournit les primitives suivantes: sphère, boîte, cône et cylindre. Mais il est possible de construire ses propres objets point par point.

Voici un schéma qui résume l'organisation d'une scène 3D en Java3D. Le rectangle arrondi hachuré est l'univers virtuel et le losange est un point de référence.

Graphe de scène Java3D
 
BG : regroupement d'objets (BranchGroup)
TG : Groupe de transformation (TransformGroup)
S : Objet primitif (Shape 3D)
graphe de scène © Sun
 

Pour construire des objets complexes, il est nécessaire, dans un premier temps, de les placer les uns par rapport aux autres dans un repère : c'est l'utilité des groupes de transformation correspondant à la classe TransformGroup. Lors de la construction d'un objet à l'aide de primitives, celles-ci sont assemblées par rapport à un repère relatif et les TransformGroup servent à placer les objets dans ce repère. Les TransformGroup permettent de faire autant de translations et de rotations que l'on souhaite, et sont utilisés par la suite pour créer des animations.

Enfin, lorsque tous les objets sont construits, il est possible de les rassembler dans une classe BranchGroup. On peut relier autant de BranchGroup que l'on souhaite (une au minimum) au point de référence.

 

Exemple de code

Le programme suivant présente les premiers pas pour l'affichage de graphismes en 3D. Une fois compilé et exécuté, le programme affichera un cube montrant sa seule face rouge.

 

import com.sun.j3d.utils.universe.SimpleUniverse;
import com.sun.j3d.utils.geometry.ColorCube;
import com.sun.j3d.utils.geometry.Sphere;
import javax.media.j3d.BranchGroup;
public class Hello3d {
public Hello3d()
{
/* Creation de l'univers virtuel contenant la scene : */
SimpleUniverse universe = new SimpleUniverse();
/* Creation une structure de donnees contenant un groupe d'objets : */ BranchGroup group = new BranchGroup();
/* Ajout d'un objet au groupe : */
group.addChild(new ColorCube(0.3));
/* Position de la camera pour faire face a l'objet : */
universe.getViewingPlatform().
setNominalViewingTransform();
/* Ajout du groupe d'objet a l'univers virtuel */
universe.addBranchGraph(group);
}
public static void main( String[] args ) {
new Hello3d();
}
} // end of class Hello3d



JDN Développeur Envoyer Imprimer Haut de page

Sondage

Adobe parviendra-t-il à percer avec sa nouvelle suite de création Web Edge ?

Tous les sondages