LE GRAPHISME AVEC JAVA 3D

Slides:



Advertisements
Présentations similaires
Transformation de documents XML
Advertisements

SI3 MAM3 Hydro Nathan Cohen Igor Litovsky Christophe Papazian
Introduction à la Programmation Orientée Objet Retour sur les principaux concepts SI3 MAM3 Hydro Nathan Cohen
Langages objet Définitions Traduction des méthodes en C++
(Classes prédéfinies – API Java)
Modélisation 3D Réalisation d'une image de synthèse
Copyright © 2001 Laurent Deruelle1 LE GRAPHISME AVEC JAVA 2D Laurent Deruelle
VI50 – TP3 Introduction à Virtools. Virtools Virtools Media Design 3DS, Maya, Lightwave… Sound Design wav, mp3… Texture, 2D interface jpg, bmp… Specific.
Exportation des données
Introduction à Virtools
12 novembre 2012 Grégory Petit
Réalisation dun travail concret avec des matrices Afficher un objet 3D sur une surface Lui appliqué des transformations Le voir se transformer suivant.
Création d’un programme :
IFT3730: Infographie 3D Transformations Géométriques
Introduction au paradigme objet Concepts importants surcharge (overload) redéfinition (override) Définition d’une classe Définition des attributs.
77 Utilisation des classes (suite). 7-2 Objectifs A la fin de ce cours, vous serez capables de : Définir des méthodes surchargées dans une classe Fournir.
Langage Oriente Objet Cours 2.
Master 1 SIGLIS Java Lecteur Stéphane Tallard Chapitre 5 – Héritage, Interfaces et Listes génériques.
IFT3730 : Infographie 3D Systèmes et modèles graphiques Pierre Poulin, Derek Nowrouzezahrai Hiver 2013 DIRO, Université de Montréal.
IFT2740 : Outils de l'infographie 3D Systèmes et modèles graphiques
LIFI-Java 2004 Séance du Jeudi 9 sept. Cours 1. La notion de langage Décrire une tâche à effectuer –programme Écrire à un haut niveau –facile pour lutilisateur.
IFT3355: Infographie Transformations Géométriques
Animateur : Med HAIJOUBI
1 Modèles de particules Reeves, W. T., "Particle Systems - A technique for Modeling a Class of Fuzzy Objects," SIGGRAPH 83, Reeves, W. T., and.
Tutoriel java3D Projet tutore.
Conception et développement d ’une interface entre un environnement de réalité virtuelle et un périphérique d ’interaction.
JavaScript Nécessaire Web.
Java 3D DESS TNI Université MONTPELLIER II Xavier ANDREANI.
Modélisation géométrique
Programmation objet La base.
Créer des packages.
 Objet window, la fenêtre du navigateur
Interfaces graphiques. Composants d'interface utilisateur graphique (GUI) 1 Bibliothèques Awt et Swing Procédures communes pour l'utilisation de ces clases.
Programmation créative – Les vecteurs
Master 1 SIGLIS Java Lecteur Stéphane Tallard Chapitre 1 – Objets et Classes Master 1 SIGLIS1Java Lecteur - Chapitre 1 Objets et classes.
PHP objet Jérôme CUTRONA 10:13:27 Programmation Web
SIMulateur Aquitain de Procédés d’ Incinération
SMIL Synchronized Multimedia Integration Language
1 Déformation Bi-manuelle en Réalité Virtuelle Encadrants : Antonio Capobianco, Jérôme Grosjean Étudiants : Michaël Kolomytzeff, Manuel Veit.
La programmation par objets Principes et concepts Etude de Smalltalk.
Initiation au JavaScript
GRAPHISME PAR ORDINATEUR SIF Contenu du cours 8 Rendu de surfaces –Modèles de rendu de surfaces –Illumination de la scène –Sources lumineuses –Composante.
GRAPHISME PAR ORDINATEUR
Architecture et Fonctionnement d’un GPU Géométrie Rendu.
LCIN4U73 Bases géométriques de l’imagerie
Éléments de présentation
Introduction à SVG Scalable Vector Graphic. Informations ● Plus d'informations ici (draft, tutoriaux, outils... ): –
Projet LIF Eduardo San Martin Morote Yoann Maret-Verdant
Programmation créative – Les vecteurs
Premières notions de la 3D
Scénario Les scénarios permettent de modifier la position, taille … des calques au cours du temps. Son fonctionnement est très proche de celui de Macromedia.
Dreamweaver Séance 1.
Dreamweaver MX Jauneau Marie Claude-Antoine Zarate.
Image Ready SI28 _ P09 MACHIN Alexandre BRUTEL Aline.
** Flash séance 2 Action script. ** Action Script Ajoute de l’interactivité Permet de contrôler les clips  Langage de programmation orienté objet.
Flash MX – Séance 2 Interactions & ActionScript David Rapin Si28 P06.
Dreamweaver le retour Avec Les Formulaires Les Calques
FORMULAIRES FOMULAIRE Permet à l’utilisateur d’entrer des renseignements le concernant. Utilisation –Inscription sur un site –Mise à jour d’une base.
Les formulaires Les calques Les comportements Les scénarios Les modèles Les feuilles de styles (CSS) La mise en ligne Les formulaires permettent à l’utilisateur.
OSSIA Open Scenario Systems for Interactive Application Contrôle de paramètres spatiaux Jean-Michel Couturier, Blue Yeti, mai 2014.
SI 28 - Présentation Image Ready Aurélie Letenoux GSU 4.
SI28 : Adobe Image Ready 3.0 Agathe Edange.
Elise Pierrot, GSU04 ImageReady, traitement d’image pour le WEB Présentation SI28.
Introduction au HTML Qu’est ce que le HTML ?
Dreamweaver 2 Feuilles de Style CSS Formulaires Calques Comportements
Les calques Les Template (modèles) Les Comportements Les scénarios Les formulaires Les CSS Le serveur Web de l’UTC Présentation.
BOUTET Antoine MARICOT Benoit ActionScript Flash Séance 2.
Présentation Courtin maxime – GI05Automne Présentation | Rappel Photoshop | ImageReady | Utils Courtin Maxime – GI05 2 / 17 Automne 2004 Plan :
Présentation Excel Microsoft Excel est le tableur de la suite bureautique propriétaire « Office System ». Développé pour les plateformes Windows et Macintosh.
Transcription de la présentation:

LE GRAPHISME AVEC JAVA 3D Laurent Deruelle deruelle@lil.univ-littoral.fr Copyright © 2001 Laurent Deruelle

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

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

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

Copyright © 2001 Laurent Deruelle Exemple en Java 3D Copyright © 2001 Laurent Deruelle

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

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

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

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

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

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

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

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

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

Structure d ’un Univers Copyright © 2001 Laurent Deruelle

Structure d ’un Univers Copyright © 2001 Laurent Deruelle

La hiérarchie de classe Java3D Copyright © 2001 Laurent Deruelle

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

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

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

Copyright © 2001 Laurent Deruelle Pipeline de Rendu Copyright © 2001 Laurent Deruelle

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

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

Hiérarchie des groupes d ’objet Copyright © 2001 Laurent Deruelle

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

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

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

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

Copyright © 2001 Laurent Deruelle

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

Copyright © 2001 Laurent Deruelle

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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