Télécharger la présentation
1
LE GRAPHISME AVEC JAVA 3D
Laurent Deruelle Copyright © 2001 Laurent Deruelle
2
Copyright © 2001 Laurent Deruelle
L ’API JAVA3D API JAVA3D ensemble d ’interfaces pour des applications 3D à haute performance gestion de l ’accélération matérielle (Open GL et Direct3D) compression des modèles 3D pour un téléchargement rapide (Web 3D). Copyright © 2001 Laurent Deruelle
3
Copyright © 2001 Laurent Deruelle
L ’API JAVA3D L ’API Java3D Intègre le son 3D : immersion LOD (level of Detail) : la résolution des objets dépend de leur proximité. Localisation : import com.sun.j3d.utils.universe.*; import javax.media.j3d.*; import javax.vecmath.*; Copyright © 2001 Laurent Deruelle
4
Copyright © 2001 Laurent Deruelle
Utilisations de Java3D Java3D peut être utilisé dans les cas suivants: Web : navigation en 3D (applets), logos 3D Systèmes de réalité virtuelle : monde complexe 3D Jeux 3D Systèmes CAO/DAO Copyright © 2001 Laurent Deruelle
5
Copyright © 2001 Laurent Deruelle
Exemple en Java 3D Copyright © 2001 Laurent Deruelle
6
Modélisation d ’une Scène
L ’API Java3D est basée sur un modèle de graphes pour la représentation d ’une scène. Le graphe décrit entièrement la scène (monde virtuel) : Les données géométriques , les attributs pour le rendu, les points de vues. Copyright © 2001 Laurent Deruelle
7
Modélisation d ’une Scène
Le graphe d ’une scène consiste en une structure de composants : un univers virtuel représente un univers nommé Java 3D peut créer plusieurs univers dans une application un objet local, qui définit l’origine de l ’univers: coordonnées de ses sous graphes (0.0, 0.0, 0.0) un ensemble de sous graphes décrivant les objets, leurs comportements, etc. Copyright © 2001 Laurent Deruelle
8
Copyright © 2001 Laurent Deruelle
Le nœud BranchGroup Ce type de nœud est la racine des sous graphes du monde virtuel. Il consiste en un nœud Behavior qui contient le code Java pour manipuler l ’objet (matrices) un nœud TransformGroup qui spécifie la position, l ’orientation, l échelle de l ’objet. Un nœud ViewPlatform définit la vue utilisateur de l ’objet dans l ’univers (rendu) compile() permet d ’optimiser la scène (cache). Copyright © 2001 Laurent Deruelle
9
Copyright © 2001 Laurent Deruelle
Le nœud Behavior Il permet l ’animation des objets, la gestion des événements claviers, souris ainsi que de sélection des objets dans l ’univers. Ces interactions permettent de changer l ’état de l ’objet et d ’exécuter des traitements sur l ’objet. Copyright © 2001 Laurent Deruelle
10
Copyright © 2001 Laurent Deruelle
Le nœud Behavior Il contient un objet de gestion d ’une région du monde virtuel et deux méthodes : initialize() définit l ’état interne de l ’objet et ses conditions de réveil. Elle doit être redéfinie dans les sous classes, et est appelée automatiquement par le gestionnaire. processStimulus() doit être redéfinie dans une sous classe pour gérer des événements lorsque la région est visualisée par l ’utilisateur (ViewPlatform) . Elle est appelée par le gestionnaire. Copyright © 2001 Laurent Deruelle
11
Copyright © 2001 Laurent Deruelle
Le gestionnaire Le gestionnaire (scheduler) de l’API Java 3D réalise les fonctions suivantes: Trouver tous les objets Behavior dont les régions coupent le volume d ’activation de l’objet ViewPlatform. Pour chaque objet Behavior qui est dans le volume d’activation du ViewPlatform, vérifier le WakupCondition de l ’objet Behavior. Ordonnancer l ’objet Behavior pour son exécution si sa WakupCondition est true. La Condition de réveil est gérée par la méthode processStimulus(). Copyright © 2001 Laurent Deruelle
12
Copyright © 2001 Laurent Deruelle
Les comportements Il existe des comportements prédéfinis : Billboard Interpolator ColorInterpolator (modification de la couleur) PositionInterpolator (translation d ’un objet) RotationInterpolator (rotation d ’un objet) ScaleInterpolator (mise à l ’échelle) TransparencyInterpolator (attribut de transparence) LOD -> DistanceLOD Copyright © 2001 Laurent Deruelle
13
Copyright © 2001 Laurent Deruelle
Le BillBoard Il opère sur un nœud TransformeGroup pour spécifier une transformation qui alignera toujours l ’objet de façon perpendiculaire au point de vue de l ’utilisateur. Exemple : des arbres dans une scène. Copyright © 2001 Laurent Deruelle
14
Copyright © 2001 Laurent Deruelle
La Caméra Les API de bas niveau (Direct3D et Open GL) utilise des caméras pour définir le point de vue de l ’utilisateur: position dans le monde son orientation Copyright © 2001 Laurent Deruelle
15
Structure d ’un Univers
Copyright © 2001 Laurent Deruelle
16
Structure d ’un Univers
Copyright © 2001 Laurent Deruelle
17
La hiérarchie de classe Java3D
Copyright © 2001 Laurent Deruelle
18
Copyright © 2001 Laurent Deruelle
Le Rendu L ’API Java3D gère une double buffer d ’affichage true color, et un Z-buffer pour le calcul des positions des objets. Il dispose des modes de rendu suivant: Immediate mode :le programmeur donne les détails des méthodes d ’affichage Retained mode et Retained mode compilé : construction du graphe, des animations, etc. Copyright © 2001 Laurent Deruelle
19
Copyright © 2001 Laurent Deruelle
Le Rendu L ’objet View spécifie les attributs de rendu. Il effecue le rendu des caméras. L ’objet Canvas3D conteint toutes les informations relatives à la fenêtre de rendu. Copyright © 2001 Laurent Deruelle
20
Copyright © 2001 Laurent Deruelle
Le Rendu L ’objet Screen3D associe les paramètres relatifs à l’écran physique (monieur, casque, etc.) les objets PhysicalBody et Phyical Environment contienent les paramètres de calibration (périphériques 6 degrés de libertés, etc.) Copyright © 2001 Laurent Deruelle
21
Copyright © 2001 Laurent Deruelle
Pipeline de Rendu Copyright © 2001 Laurent Deruelle
22
Copyright © 2001 Laurent Deruelle
Les groupes d ’objets L ’objet GroupNode regroupe un ensemble de nœuds, sur lesquels des opérations de rendu seront réalisées. Les opérations sont : ajout d ’un nœud suppression d ’un nœud, énumération des nœuds Copyright © 2001 Laurent Deruelle
23
Copyright © 2001 Laurent Deruelle
Les groupes d ’objets Les nœuds sont : BranchGroup OrderedGroup : rendu suivant l ’ordre d ’ajout SharedGroup : les sous graphes sont partagés Swicth : choix de sous graphes dynamiquement TransformGroup : transformation qui spécifie la position, l ’orientation, l ’échelle des nœuds du sous graphes. Copyright © 2001 Laurent Deruelle
24
Hiérarchie des groupes d ’objet
Copyright © 2001 Laurent Deruelle
25
Copyright © 2001 Laurent Deruelle
Les objets feuilles Les objets feuilles spécifient les lumières, la géométrie et les sons et le partage d ’objets dans une scène (SharedGroup) Copyright © 2001 Laurent Deruelle
26
Copyright © 2001 Laurent Deruelle
Les objets feuilles L ’objet BackGround spécifie la couleur ou une image utilisée pour remplir la fenêtre à chaque début d ’image. L ’objet BoundingLeaf spécifie une région limite, pour définir une région d ’activation, ou une région du gestionnaire. L ’objet ClipNode définit un zone pour éliminer des objets. Copyright © 2001 Laurent Deruelle
27
Copyright © 2001 Laurent Deruelle
Les objets feuilles L ’objet Fog spécifie les attributs pour effectuer un brouillard. Les objets Light et AmbientLight définissent les propriétés des lumières (couleur, état on/off) L ’objet Link permet de référencer un sous graphes partagés Copyright © 2001 Laurent Deruelle
28
Copyright © 2001 Laurent Deruelle
Les objets feuilles L ’objet Morph permet un morphing entre de multiples géométries (GeometyArrays) L ’objet Shape3D spécifie les géométries de l ’objet et contient deux composants : une référence sur la forme de l ’objet, une référence sur son apparence. Copyright © 2001 Laurent Deruelle
29
Copyright © 2001 Laurent Deruelle
30
Les attributs des nœuds
Les objets attributs décrivent des informations concernant l ’apparence de l ’objet (matériaux, textures, images). Ils implémentent des propriétés telles que les zones limites (bounding box), etc. Copyright © 2001 Laurent Deruelle
31
Copyright © 2001 Laurent Deruelle
32
Copyright © 2001 Laurent Deruelle
Le nœud Appearance Il définit l ’apparence d ’une forme 3D (Shape3D). Il définit les méthodes suivantes : Material getMaterial() : l ’objet fil de fer RenderingAttributes getRenderingAttributes() : les attributs de rendu Texture getTexture() : la texture de l ’objet TransparencyAttributes getTransparencyAttributes() : options de transparence idem avec set Copyright © 2001 Laurent Deruelle
33
Le nœud ColoringAttributes
Il définit une couleur à mettre sur une forme (remplace la texture) et les options de lissage. Les méthodes sont: setColor(float r, v ,b) setShadeModel(int model) ColoringAttributes.FASTEST ColoringAttributes.SHADE_FLAT ColoringAttributes.FASTEST_GOURAUD Copyright © 2001 Laurent Deruelle
34
Le nœud LineAttributes
Il permet de définir les attributs de rendu des lignes d ’une forme 3D (taille, style de ligne, antialiasing) Les méthodes sont : setLineAntialiasingEnable(boolean etat) setLineWidth(float taille) setLinePattern(int modele) LineAttributes.PATTERN_DASH, LineAttributes.PATTERN_DOT, LineAttributes.PATTERN_SOLID Copyright © 2001 Laurent Deruelle
35
Le nœud RenderingAttributes
Il définit toutes les propriétés de rendu des formes 3D. Les méthodes sont : setAlphaTestValue (float valeur) setAlphaTestFunction (int fonction) ALWAYS : toujours afficher le pixel EQUAL : l ’alpha du pixel = la valeur alpha test GREATER, GREATER_OR_EQUAL, LESS, LESS_OR_EQUAL, NOT_EQUAL NEVER : pixel jamais dessiné. Copyright © 2001 Laurent Deruelle
36
Le nœud TextureAttributes
Il définit tous les effets à appliquer à un objet 3D. Les constantes pour le mode sont : BLEND : applique l ’alpha blending MODULATE : modulation de la couleur de l ’objet avec la couleur de la texture FASTEST : la plus rapide (interne) NICEST : la plus belle (interne) REPLACE : remplace la couleur de l ’objet Copyright © 2001 Laurent Deruelle
37
Copyright © 2001 Laurent Deruelle
Le nœud Texture Il définit les attributs à appliquer à la texture d ’un objet 3D. (import com.sun.j3d.utils.image.TextureLoader) Il est spécialisé en Texture2D et Texture3D Le chargement des textures est réalisé par TextureLoader tex = new TextureLoader(URL Image, new String("RGB"), this); TextureLoader tex = new TextureLoader(String Image, this); ImageComponent2D img = tex.getImage(); //existe tex.getTexture(); Texture2D t =new Texture2D(); t.setImage(0, img); Appearance ap = new Appearance() ap.setTexture(t); Copyright © 2001 Laurent Deruelle
38
Le nœud TransparencyAttributes
Il définit tous les effets de transparence appliqués à un objet 3D par les méthodes setTransparency(float valeur) et setTransparencyMode(int mode) Les constantes pour le mode sont : BLENDED : transparence par alpha blending FASTEST : la plus rapide (interne) NICEST : la plus belle (interne) NONE : objet opaque Copyright © 2001 Laurent Deruelle
39
Copyright © 2001 Laurent Deruelle
Le nœud Material Il est utilisé par l ’objet Appearance et spécifie les polygones qui constituent l ’objet. Il est utilisé lorsque l ’objet est soumis à une lumière. Material(Color3f ambientColor, Color3f emissiveColor, Color3f diffuseColor, Color3f specularColor, float brillance) Par défaut : lighting enable : true ambient color : (0.2, 0.2, 0.2) emmisive color : (0.0, 0.0, 0.0) diffuse color : (1.0, 1.0, 1.0) specular color : (1.0, 1.0, 1.0) brillance: 64 Copyright © 2001 Laurent Deruelle
40
Copyright © 2001 Laurent Deruelle
Le nœud Bounds Il définit deux types de volumes pour la sélection des objets : BoundingBox : boîte englobante BoundingSphere : sphère englobante (centre et un rayon) Copyright © 2001 Laurent Deruelle
41
Copyright © 2001 Laurent Deruelle
Le nœud Transform3D Il définit une matrice 4x4 pour effectuer des transformations des objets 3D définis dans l ’univers. Il définit des opérations de multiplications, de transpositions, d ’inversions, de normalisation, etc. Il définit des méthodes rotX(), rotY(), rotZ(). Copyright © 2001 Laurent Deruelle
42
Copyright © 2001 Laurent Deruelle
Le nœud Text3D Il permet de dessiner du texte dans un environnement en 3D : setString(String texte); Il est possible de spécifier une fonte : setFont3D(Font3D fonte); Il est possible de donner une position: setPosition(Point3f position); Copyright © 2001 Laurent Deruelle
43
Développement d ’un monde 3D
GraphicsConfiguration config =SimpleUniverse.getPreferredConfiguration(); Canvas3D c = new Canvas3D(config); add("Center", c); // createSceneGraph est une méthode à définir BranchGroup scene = createSceneGraph(); u = new SimpleUniverse(c); // Modifie la position de la vue pour que // les objets dans la scène puissent être visualisé. u.getViewingPlatform().setNominalViewingTransform(); TransformGroup viewTrans = u.getViewingPlatform().getViewPlatformTransform(); GestionComportement(); scene.compile(); u.addBranchGraph(scene); Copyright © 2001 Laurent Deruelle
44
Gestion des interactions Souris (com.sun.j3d.utils.behaviors.mouse)
// Créer le nœud de comportement Behavior pour la rotation MouseRotate behavior1 = new MouseRotate(viewTrans); scene.addChild(behavior1); behavior1.setSchedulingBounds(bounds); //Créer le nœud de comportement Behavior pour le zoom MouseZoom behavior2 = new MouseZoom(viewTrans); scene.addChild(behavior2); behavior2.setSchedulingBounds(bounds); //Créer le nœud de comportement Behavior pour la translation MouseTranslate behavior3 = new MouseTranslate(viewTrans); scene.addChild(behavior3); behavior3.setSchedulingBounds(bounds); Copyright © 2001 Laurent Deruelle
45
Copyright © 2001 Laurent Deruelle
Création de la scène public BranchGroup createSceneGraph() { // création du nœud racine du graphe BranchGroup objRoot = new BranchGroup(); // ajouter les transformations ex: objScale objRoot.addChild(objScale); // ajouter les objets 3d avec leurs transformations, textures // définir les lumières return objRoot; } Copyright © 2001 Laurent Deruelle
46
Copyright © 2001 Laurent Deruelle
Liens Utiles API de Java3D : forDevelopers/j3dapi/javax/media/j3d/ package-summary.html Copyright © 2001 Laurent Deruelle
Présentations similaires
© 2024 SlidePlayer.fr Inc.
All rights reserved.