La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

Copyright © 2001 Laurent Deruelle1 LE GRAPHISME AVEC JAVA 3D Laurent Deruelle

Présentations similaires


Présentation au sujet: "Copyright © 2001 Laurent Deruelle1 LE GRAPHISME AVEC JAVA 3D Laurent Deruelle"— Transcription de la présentation:

1 Copyright © 2001 Laurent Deruelle1 LE GRAPHISME AVEC JAVA 3D Laurent Deruelle

2 Copyright © 2001 Laurent Deruelle2 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).

3 Copyright © 2001 Laurent Deruelle3 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.*;

4 Copyright © 2001 Laurent Deruelle4 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

5 Copyright © 2001 Laurent Deruelle5 Exemple en Java 3D

6 Copyright © 2001 Laurent Deruelle6 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.

7 Copyright © 2001 Laurent Deruelle7 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 lorigine 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.

8 Copyright © 2001 Laurent Deruelle8 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).

9 Copyright © 2001 Laurent Deruelle9 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.

10 Copyright © 2001 Laurent Deruelle10 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.

11 Copyright © 2001 Laurent Deruelle11 Le gestionnaire Le gestionnaire (scheduler) de lAPI Java 3D réalise les fonctions suivantes: –Trouver tous les objets Behavior dont les régions coupent le volume d activation de lobjet ViewPlatform. –Pour chaque objet Behavior qui est dans le volume dactivation 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().

12 Copyright © 2001 Laurent Deruelle12 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

13 Copyright © 2001 Laurent Deruelle13 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.

14 Copyright © 2001 Laurent Deruelle14 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

15 Copyright © 2001 Laurent Deruelle15 Structure d un Univers

16 Copyright © 2001 Laurent Deruelle16 Structure d un Univers

17 Copyright © 2001 Laurent Deruelle17 La hiérarchie de classe Java3D

18 Copyright © 2001 Laurent Deruelle18 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.

19 Copyright © 2001 Laurent Deruelle19 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.

20 Copyright © 2001 Laurent Deruelle20 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.)

21 Copyright © 2001 Laurent Deruelle21 Pipeline de Rendu

22 Copyright © 2001 Laurent Deruelle22 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

23 Copyright © 2001 Laurent Deruelle23 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.

24 Copyright © 2001 Laurent Deruelle24 Hiérarchie des groupes d objet

25 Copyright © 2001 Laurent Deruelle25 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)

26 Copyright © 2001 Laurent Deruelle26 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.

27 Copyright © 2001 Laurent Deruelle27 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

28 Copyright © 2001 Laurent Deruelle28 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.

29 Copyright © 2001 Laurent Deruelle29

30 Copyright © 2001 Laurent Deruelle30 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.

31 Copyright © 2001 Laurent Deruelle31

32 Copyright © 2001 Laurent Deruelle32 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

33 Copyright © 2001 Laurent Deruelle33 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

34 Copyright © 2001 Laurent Deruelle34 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

35 Copyright © 2001 Laurent Deruelle35 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é.

36 Copyright © 2001 Laurent Deruelle36 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

37 Copyright © 2001 Laurent Deruelle37 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);

38 Copyright © 2001 Laurent Deruelle38 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

39 Copyright © 2001 Laurent Deruelle39 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

40 Copyright © 2001 Laurent Deruelle40 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)

41 Copyright © 2001 Laurent Deruelle41 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().

42 Copyright © 2001 Laurent Deruelle42 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);

43 Copyright © 2001 Laurent Deruelle43 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);

44 Copyright © 2001 Laurent Deruelle44 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);

45 Copyright © 2001 Laurent Deruelle45 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; }

46 Copyright © 2001 Laurent Deruelle46 Liens Utiles API de Java3D : –http://java.sun.com/products/java-media/3D/ forDevelopers/j3dapi/javax/media/j3d/ package-summary.html


Télécharger ppt "Copyright © 2001 Laurent Deruelle1 LE GRAPHISME AVEC JAVA 3D Laurent Deruelle"

Présentations similaires


Annonces Google