Java 3D Concepts de base - maverick -...
Transcript of Java 3D Concepts de base - maverick -...
![Page 1: Java 3D Concepts de base - maverick - inriamaverick.inria.fr/Members/Emmanuel.Turquin/enseignement/3id/java3d.… · Java 3D Concepts de base Licence Professionnelle : M etiers de](https://reader031.fdocuments.net/reader031/viewer/2022022502/5aad164f7f8b9a2b4c8e0189/html5/thumbnails/1.jpg)
Java 3DConcepts de base
Licence Professionnelle : Metiers de l’Informatique
Image et Video
Patrick ReignierUniversite Joseph Fourier
2000 – 2001
Java 3D P. Reignier
![Page 2: Java 3D Concepts de base - maverick - inriamaverick.inria.fr/Members/Emmanuel.Turquin/enseignement/3id/java3d.… · Java 3D Concepts de base Licence Professionnelle : M etiers de](https://reader031.fdocuments.net/reader031/viewer/2022022502/5aad164f7f8b9a2b4c8e0189/html5/thumbnails/2.jpg)
Plan
• Generalites
• Presentation de Java3D
• Graphe de scenes
• Exemple
Java 3D P. Reignier
.1
![Page 3: Java 3D Concepts de base - maverick - inriamaverick.inria.fr/Members/Emmanuel.Turquin/enseignement/3id/java3d.… · Java 3D Concepts de base Licence Professionnelle : M etiers de](https://reader031.fdocuments.net/reader031/viewer/2022022502/5aad164f7f8b9a2b4c8e0189/html5/thumbnails/3.jpg)
A
Generalites sur la synthese d’imagestemps reel
Java 3D P. Reignier
![Page 4: Java 3D Concepts de base - maverick - inriamaverick.inria.fr/Members/Emmanuel.Turquin/enseignement/3id/java3d.… · Java 3D Concepts de base Licence Professionnelle : M etiers de](https://reader031.fdocuments.net/reader031/viewer/2022022502/5aad164f7f8b9a2b4c8e0189/html5/thumbnails/4.jpg)
Synthese d’images temps reel
• Aspect materiel : facultatif mais fortement conseille.
– Stations specialisees :
SGI, Sun, HP, IBM
– Cartes acceleratrices :
PC, Mac dans une moindre mesure.
• Aspect logiciel :
– APIs
Java 3D P. Reignier
A.1
![Page 5: Java 3D Concepts de base - maverick - inriamaverick.inria.fr/Members/Emmanuel.Turquin/enseignement/3id/java3d.… · Java 3D Concepts de base Licence Professionnelle : M etiers de](https://reader031.fdocuments.net/reader031/viewer/2022022502/5aad164f7f8b9a2b4c8e0189/html5/thumbnails/5.jpg)
APIs
• Grande variete.
• Deux grandes categories :
– Les APIs bas niveau
– Les APIs haut niveau
Java 3D P. Reignier
A.2
![Page 6: Java 3D Concepts de base - maverick - inriamaverick.inria.fr/Members/Emmanuel.Turquin/enseignement/3id/java3d.… · Java 3D Concepts de base Licence Professionnelle : M etiers de](https://reader031.fdocuments.net/reader031/viewer/2022022502/5aad164f7f8b9a2b4c8e0189/html5/thumbnails/6.jpg)
APIs bas niveau
• Interface avec le materiel.
• Emule le materiel inexistant.
• Tres bas niveau d’abstraction :
– Sommets, faces
– Processus de rendu
• Exemples :
– OpenGL : Standard multi OS, multi machines.
– Direct3D IM : Windows.
Java 3D P. Reignier
A.3
![Page 7: Java 3D Concepts de base - maverick - inriamaverick.inria.fr/Members/Emmanuel.Turquin/enseignement/3id/java3d.… · Java 3D Concepts de base Licence Professionnelle : M etiers de](https://reader031.fdocuments.net/reader031/viewer/2022022502/5aad164f7f8b9a2b4c8e0189/html5/thumbnails/7.jpg)
APIs haut niveau
• S’appuient sur les APIs bas niveau.
• Haut niveau d’abstraction :
– Objets par opposition a sommets
– Contenu par opposition a processus de rendux
• Graphe de scenes (voir transparents suivants)
• Exemples
– Open Inventor, Performer, OpenGL Optimizer, Java3D . . .
– Direct3D RM
Java 3D P. Reignier
A.4
![Page 8: Java 3D Concepts de base - maverick - inriamaverick.inria.fr/Members/Emmanuel.Turquin/enseignement/3id/java3d.… · Java 3D Concepts de base Licence Professionnelle : M etiers de](https://reader031.fdocuments.net/reader031/viewer/2022022502/5aad164f7f8b9a2b4c8e0189/html5/thumbnails/8.jpg)
Graphe de scenes
• Univers 3D ;
– Un ensembles d’objets 3D.
– Une ou plusieurs cameras.
• Objet 3D :
– Formes eux-memes d’un ensemble d’objets 3D.
– Exemple :
Un Avion = un fuselage + des ailes.
Java 3D P. Reignier
A.5
![Page 9: Java 3D Concepts de base - maverick - inriamaverick.inria.fr/Members/Emmanuel.Turquin/enseignement/3id/java3d.… · Java 3D Concepts de base Licence Professionnelle : M etiers de](https://reader031.fdocuments.net/reader031/viewer/2022022502/5aad164f7f8b9a2b4c8e0189/html5/thumbnails/9.jpg)
Graphe de scenes
• Scene 3D = hierarchie d’objets
⇒ notion de graphe de scenes
• Exemple : elements constituantsa
aextrait de JavaOne 99, Sun
Java 3D P. Reignier
A.6
![Page 10: Java 3D Concepts de base - maverick - inriamaverick.inria.fr/Members/Emmanuel.Turquin/enseignement/3id/java3d.… · Java 3D Concepts de base Licence Professionnelle : M etiers de](https://reader031.fdocuments.net/reader031/viewer/2022022502/5aad164f7f8b9a2b4c8e0189/html5/thumbnails/10.jpg)
Graphe de scenes
• On commence a grouper les elements de base
Java 3D P. Reignier
A.7
![Page 11: Java 3D Concepts de base - maverick - inriamaverick.inria.fr/Members/Emmanuel.Turquin/enseignement/3id/java3d.… · Java 3D Concepts de base Licence Professionnelle : M etiers de](https://reader031.fdocuments.net/reader031/viewer/2022022502/5aad164f7f8b9a2b4c8e0189/html5/thumbnails/11.jpg)
Graphe de scenes
• On finit l’avion.
Java 3D P. Reignier
A.8
![Page 12: Java 3D Concepts de base - maverick - inriamaverick.inria.fr/Members/Emmanuel.Turquin/enseignement/3id/java3d.… · Java 3D Concepts de base Licence Professionnelle : M etiers de](https://reader031.fdocuments.net/reader031/viewer/2022022502/5aad164f7f8b9a2b4c8e0189/html5/thumbnails/12.jpg)
Graphe de scenes
Java 3D P. Reignier
A.9
![Page 13: Java 3D Concepts de base - maverick - inriamaverick.inria.fr/Members/Emmanuel.Turquin/enseignement/3id/java3d.… · Java 3D Concepts de base Licence Professionnelle : M etiers de](https://reader031.fdocuments.net/reader031/viewer/2022022502/5aad164f7f8b9a2b4c8e0189/html5/thumbnails/13.jpg)
Graphe de scenes
Java 3D P. Reignier
A.10
![Page 14: Java 3D Concepts de base - maverick - inriamaverick.inria.fr/Members/Emmanuel.Turquin/enseignement/3id/java3d.… · Java 3D Concepts de base Licence Professionnelle : M etiers de](https://reader031.fdocuments.net/reader031/viewer/2022022502/5aad164f7f8b9a2b4c8e0189/html5/thumbnails/14.jpg)
B
Presentation
Java 3D P. Reignier
![Page 15: Java 3D Concepts de base - maverick - inriamaverick.inria.fr/Members/Emmanuel.Turquin/enseignement/3id/java3d.… · Java 3D Concepts de base Licence Professionnelle : M etiers de](https://reader031.fdocuments.net/reader031/viewer/2022022502/5aad164f7f8b9a2b4c8e0189/html5/thumbnails/15.jpg)
Java 3D
• API 3D developpee par SUN en 1998
• Base sur la notion de graphe de scenes.
• Classes Java pour :
– la creation
– la manipulation des scenes 3D
• Acces a tous les packages Java
Java 3D P. Reignier
B.1
![Page 16: Java 3D Concepts de base - maverick - inriamaverick.inria.fr/Members/Emmanuel.Turquin/enseignement/3id/java3d.… · Java 3D Concepts de base Licence Professionnelle : M etiers de](https://reader031.fdocuments.net/reader031/viewer/2022022502/5aad164f7f8b9a2b4c8e0189/html5/thumbnails/16.jpg)
Rendu 3D
• Rendu haute performance.
• Utilisation de l’acceleration 3D materielle si disponible.
• Base sur :
– OpenGL.
– Direct3D.
Java 3D P. Reignier
B.2
![Page 17: Java 3D Concepts de base - maverick - inriamaverick.inria.fr/Members/Emmanuel.Turquin/enseignement/3id/java3d.… · Java 3D Concepts de base Licence Professionnelle : M etiers de](https://reader031.fdocuments.net/reader031/viewer/2022022502/5aad164f7f8b9a2b4c8e0189/html5/thumbnails/17.jpg)
Applications
• Visualisation scientifique.
• Visualisation d’informations.
• Entraınement medical.
• Systeme d’information geographique.
• CAO.
• etc. . .
Java 3D P. Reignier
B.3
![Page 18: Java 3D Concepts de base - maverick - inriamaverick.inria.fr/Members/Emmanuel.Turquin/enseignement/3id/java3d.… · Java 3D Concepts de base Licence Professionnelle : M etiers de](https://reader031.fdocuments.net/reader031/viewer/2022022502/5aad164f7f8b9a2b4c8e0189/html5/thumbnails/18.jpg)
Visualisation scientifique
Java 3D P. Reignier
B.4
![Page 19: Java 3D Concepts de base - maverick - inriamaverick.inria.fr/Members/Emmanuel.Turquin/enseignement/3id/java3d.… · Java 3D Concepts de base Licence Professionnelle : M etiers de](https://reader031.fdocuments.net/reader031/viewer/2022022502/5aad164f7f8b9a2b4c8e0189/html5/thumbnails/19.jpg)
Visualisation medicale
Java 3D P. Reignier
B.5
![Page 20: Java 3D Concepts de base - maverick - inriamaverick.inria.fr/Members/Emmanuel.Turquin/enseignement/3id/java3d.… · Java 3D Concepts de base Licence Professionnelle : M etiers de](https://reader031.fdocuments.net/reader031/viewer/2022022502/5aad164f7f8b9a2b4c8e0189/html5/thumbnails/20.jpg)
Conception Assistee par Ordinateur
Java 3D P. Reignier
B.6
![Page 21: Java 3D Concepts de base - maverick - inriamaverick.inria.fr/Members/Emmanuel.Turquin/enseignement/3id/java3d.… · Java 3D Concepts de base Licence Professionnelle : M etiers de](https://reader031.fdocuments.net/reader031/viewer/2022022502/5aad164f7f8b9a2b4c8e0189/html5/thumbnails/21.jpg)
C
Graphe de scenes
Java 3D P. Reignier
![Page 22: Java 3D Concepts de base - maverick - inriamaverick.inria.fr/Members/Emmanuel.Turquin/enseignement/3id/java3d.… · Java 3D Concepts de base Licence Professionnelle : M etiers de](https://reader031.fdocuments.net/reader031/viewer/2022022502/5aad164f7f8b9a2b4c8e0189/html5/thumbnails/22.jpg)
Graphe de scenes
• Java3D repose sur la notion de graphe de scenes
– Feuilles : formes 3D, lumieres, sons, comportements . . .
– Parents : groupes d’enfants, transformations 3D . . .
⇒ groupement hierarchique de formes.
Java 3D P. Reignier
C.1
![Page 23: Java 3D Concepts de base - maverick - inriamaverick.inria.fr/Members/Emmanuel.Turquin/enseignement/3id/java3d.… · Java 3D Concepts de base Licence Professionnelle : M etiers de](https://reader031.fdocuments.net/reader031/viewer/2022022502/5aad164f7f8b9a2b4c8e0189/html5/thumbnails/23.jpg)
Application Java3D
• Developpeur :
– Construction et mise a jour d’un graphe a l’aide des
classes et des methodes Java3D
• Service assure par Java3D :
– Rendu a l’ecran du contenu du graphe
Java 3D P. Reignier
C.2
![Page 24: Java 3D Concepts de base - maverick - inriamaverick.inria.fr/Members/Emmanuel.Turquin/enseignement/3id/java3d.… · Java 3D Concepts de base Licence Professionnelle : M etiers de](https://reader031.fdocuments.net/reader031/viewer/2022022502/5aad164f7f8b9a2b4c8e0189/html5/thumbnails/24.jpg)
Rendu
• Ordre de parcours du graphe :
– Choisi par Java 3D
• Rendu via des threads independants et asynchrones
– Graphique.
– Son.
– Comportement (animation).
– Peripheriques d’entree-sortie.
– Evenements (detection de collisions).
Java 3D P. Reignier
C.3
![Page 25: Java 3D Concepts de base - maverick - inriamaverick.inria.fr/Members/Emmanuel.Turquin/enseignement/3id/java3d.… · Java 3D Concepts de base Licence Professionnelle : M etiers de](https://reader031.fdocuments.net/reader031/viewer/2022022502/5aad164f7f8b9a2b4c8e0189/html5/thumbnails/25.jpg)
Vocabulaire
Node : un noeud du graphe de scenes
• Leaf node : une feuille
– Formes, sons, lumieres
– Comportement (animation)
• Group node : un noeuds avec enfants
– Transformations, switch . . .
Node component : les attributs d’un noeud
• La description geometrique d’une forme
• La couleur d’une forme
• Un son a jouer.
• . . .
Java 3D P. Reignier
C.4
![Page 26: Java 3D Concepts de base - maverick - inriamaverick.inria.fr/Members/Emmanuel.Turquin/enseignement/3id/java3d.… · Java 3D Concepts de base Licence Professionnelle : M etiers de](https://reader031.fdocuments.net/reader031/viewer/2022022502/5aad164f7f8b9a2b4c8e0189/html5/thumbnails/26.jpg)
Classes Java3D
Java 3D P. Reignier
C.5
![Page 27: Java 3D Concepts de base - maverick - inriamaverick.inria.fr/Members/Emmanuel.Turquin/enseignement/3id/java3d.… · Java 3D Concepts de base Licence Professionnelle : M etiers de](https://reader031.fdocuments.net/reader031/viewer/2022022502/5aad164f7f8b9a2b4c8e0189/html5/thumbnails/27.jpg)
Univers : terminologie
• Univers Virtuel (Virtual Universe)
– Collection de graphes de scene
∗ Un par application
∗ C’est le sommet du graphe
• Repere (Locale)
– Generalement un par univers
• Graphe de scenes (Branch Graph)
– generalement, plusieurs graphes par repere
Java 3D P. Reignier
C.6
![Page 28: Java 3D Concepts de base - maverick - inriamaverick.inria.fr/Members/Emmanuel.Turquin/enseignement/3id/java3d.… · Java 3D Concepts de base Licence Professionnelle : M etiers de](https://reader031.fdocuments.net/reader031/viewer/2022022502/5aad164f7f8b9a2b4c8e0189/html5/thumbnails/28.jpg)
Graphe de scenes : terminologie
• Branches de scenes :
– Formes, lumieres . . .
• Branche de visualisation
– Generation d’images
– Generalement une par univers
Java 3D P. Reignier
C.7
![Page 29: Java 3D Concepts de base - maverick - inriamaverick.inria.fr/Members/Emmanuel.Turquin/enseignement/3id/java3d.… · Java 3D Concepts de base Licence Professionnelle : M etiers de](https://reader031.fdocuments.net/reader031/viewer/2022022502/5aad164f7f8b9a2b4c8e0189/html5/thumbnails/29.jpg)
Graphe de scene : representation graphique
Java 3D P. Reignier
C.8
![Page 30: Java 3D Concepts de base - maverick - inriamaverick.inria.fr/Members/Emmanuel.Turquin/enseignement/3id/java3d.… · Java 3D Concepts de base Licence Professionnelle : M etiers de](https://reader031.fdocuments.net/reader031/viewer/2022022502/5aad164f7f8b9a2b4c8e0189/html5/thumbnails/30.jpg)
Graphe de scene : representation graphique
Java 3D P. Reignier
C.9
![Page 31: Java 3D Concepts de base - maverick - inriamaverick.inria.fr/Members/Emmanuel.Turquin/enseignement/3id/java3d.… · Java 3D Concepts de base Licence Professionnelle : M etiers de](https://reader031.fdocuments.net/reader031/viewer/2022022502/5aad164f7f8b9a2b4c8e0189/html5/thumbnails/31.jpg)
Background
Java 3D P. Reignier
C.10
![Page 32: Java 3D Concepts de base - maverick - inriamaverick.inria.fr/Members/Emmanuel.Turquin/enseignement/3id/java3d.… · Java 3D Concepts de base Licence Professionnelle : M etiers de](https://reader031.fdocuments.net/reader031/viewer/2022022502/5aad164f7f8b9a2b4c8e0189/html5/thumbnails/32.jpg)
Background
• Definit une couleur ou une image de fond
• Un ou plusieurs par graphe de scene :
– Zone d’activation
– Aucun fond actif ⇒ fond noir
• javax.media.j3d.Background
Java 3D P. Reignier
C.11
![Page 33: Java 3D Concepts de base - maverick - inriamaverick.inria.fr/Members/Emmanuel.Turquin/enseignement/3id/java3d.… · Java 3D Concepts de base Licence Professionnelle : M etiers de](https://reader031.fdocuments.net/reader031/viewer/2022022502/5aad164f7f8b9a2b4c8e0189/html5/thumbnails/33.jpg)
Exemple
BoundingSphere bounds =
new BoundingSphere(new Point3d(0.0,0.0,0.0), 100.0);
Color3f bgColor = new Color3f(0.05f, 0.05f, 0.7f);
Background bgNode = new Background(bgColor);
bgNode.setApplicationBounds(bounds);
• Il reste a mettre le noeud dans le graphe.
Java 3D P. Reignier
C.12
![Page 34: Java 3D Concepts de base - maverick - inriamaverick.inria.fr/Members/Emmanuel.Turquin/enseignement/3id/java3d.… · Java 3D Concepts de base Licence Professionnelle : M etiers de](https://reader031.fdocuments.net/reader031/viewer/2022022502/5aad164f7f8b9a2b4c8e0189/html5/thumbnails/34.jpg)
Lights
Java 3D P. Reignier
C.13
![Page 35: Java 3D Concepts de base - maverick - inriamaverick.inria.fr/Members/Emmanuel.Turquin/enseignement/3id/java3d.… · Java 3D Concepts de base Licence Professionnelle : M etiers de](https://reader031.fdocuments.net/reader031/viewer/2022022502/5aad164f7f8b9a2b4c8e0189/html5/thumbnails/35.jpg)
Lights
• Classe abstraite :
– AmbientLight
– DirectionalLight
– PointLight
∗ Spotlight
• Couteux
• OpenGL : au plus 7 lumieres.
• javax.media.j3d.Light
Java 3D P. Reignier
C.14
![Page 36: Java 3D Concepts de base - maverick - inriamaverick.inria.fr/Members/Emmanuel.Turquin/enseignement/3id/java3d.… · Java 3D Concepts de base Licence Professionnelle : M etiers de](https://reader031.fdocuments.net/reader031/viewer/2022022502/5aad164f7f8b9a2b4c8e0189/html5/thumbnails/36.jpg)
Exemple
Color3f light1Color = new Color3f(1.0f, 1.0f, 0.9f);
Vector3f light1Direction = new Vector3f(4.0f, -7.0f, -12.0f);
Color3f ambientColor = new Color3f(0.1f, 0.1f, 0.1f);
AmbientLight ambientLightNode = new AmbientLight(ambientColor);
ambientLightNode.setInfluencingBounds(bounds);
DirectionalLight light1
= new DirectionalLight(light1Color, light1Direction);
light1.setInfluencingBounds(bounds);
• Il reste a mettre le noeud dans le graphe.
Java 3D P. Reignier
C.15
![Page 37: Java 3D Concepts de base - maverick - inriamaverick.inria.fr/Members/Emmanuel.Turquin/enseignement/3id/java3d.… · Java 3D Concepts de base Licence Professionnelle : M etiers de](https://reader031.fdocuments.net/reader031/viewer/2022022502/5aad164f7f8b9a2b4c8e0189/html5/thumbnails/37.jpg)
Shape 3D
Java 3D P. Reignier
C.16
![Page 38: Java 3D Concepts de base - maverick - inriamaverick.inria.fr/Members/Emmanuel.Turquin/enseignement/3id/java3d.… · Java 3D Concepts de base Licence Professionnelle : M etiers de](https://reader031.fdocuments.net/reader031/viewer/2022022502/5aad164f7f8b9a2b4c8e0189/html5/thumbnails/38.jpg)
Shape 3D
• Shape 3D :
– Noeud feuille.
– Deux attributs :
∗ Geometrie
∗ Apparence
Java 3D P. Reignier
C.17
![Page 39: Java 3D Concepts de base - maverick - inriamaverick.inria.fr/Members/Emmanuel.Turquin/enseignement/3id/java3d.… · Java 3D Concepts de base Licence Professionnelle : M etiers de](https://reader031.fdocuments.net/reader031/viewer/2022022502/5aad164f7f8b9a2b4c8e0189/html5/thumbnails/39.jpg)
Geometrie
• De maniere tres generale :
Java 3D P. Reignier
C.18
![Page 40: Java 3D Concepts de base - maverick - inriamaverick.inria.fr/Members/Emmanuel.Turquin/enseignement/3id/java3d.… · Java 3D Concepts de base Licence Professionnelle : M etiers de](https://reader031.fdocuments.net/reader031/viewer/2022022502/5aad164f7f8b9a2b4c8e0189/html5/thumbnails/40.jpg)
Geometrie
Java 3D P. Reignier
C.19
![Page 41: Java 3D Concepts de base - maverick - inriamaverick.inria.fr/Members/Emmanuel.Turquin/enseignement/3id/java3d.… · Java 3D Concepts de base Licence Professionnelle : M etiers de](https://reader031.fdocuments.net/reader031/viewer/2022022502/5aad164f7f8b9a2b4c8e0189/html5/thumbnails/41.jpg)
Geometrie
Java 3D P. Reignier
C.20
![Page 42: Java 3D Concepts de base - maverick - inriamaverick.inria.fr/Members/Emmanuel.Turquin/enseignement/3id/java3d.… · Java 3D Concepts de base Licence Professionnelle : M etiers de](https://reader031.fdocuments.net/reader031/viewer/2022022502/5aad164f7f8b9a2b4c8e0189/html5/thumbnails/42.jpg)
Appparence
• Controle l’aspect de l’objet
– Couleur.
– Materiaux (eclairage).
– Transparence.
– Texture
– . . .
Java 3D P. Reignier
C.21
![Page 43: Java 3D Concepts de base - maverick - inriamaverick.inria.fr/Members/Emmanuel.Turquin/enseignement/3id/java3d.… · Java 3D Concepts de base Licence Professionnelle : M etiers de](https://reader031.fdocuments.net/reader031/viewer/2022022502/5aad164f7f8b9a2b4c8e0189/html5/thumbnails/43.jpg)
Exemple
Java 3D P. Reignier
C.22
![Page 44: Java 3D Concepts de base - maverick - inriamaverick.inria.fr/Members/Emmanuel.Turquin/enseignement/3id/java3d.… · Java 3D Concepts de base Licence Professionnelle : M etiers de](https://reader031.fdocuments.net/reader031/viewer/2022022502/5aad164f7f8b9a2b4c8e0189/html5/thumbnails/44.jpg)
Classes Java
Java 3D P. Reignier
C.23
![Page 45: Java 3D Concepts de base - maverick - inriamaverick.inria.fr/Members/Emmanuel.Turquin/enseignement/3id/java3d.… · Java 3D Concepts de base Licence Professionnelle : M etiers de](https://reader031.fdocuments.net/reader031/viewer/2022022502/5aad164f7f8b9a2b4c8e0189/html5/thumbnails/45.jpg)
Chargement
• Shape3D ⇒ construction de la forme par programme
• Possibilite de chargement de fichiers de donnees
• Par defaut :
– format OBJ
– format Lightwave
• Sur internet :
– vrml 97
– 3DS Max
– ac3d
– . . .
Java 3D P. Reignier
C.24
![Page 46: Java 3D Concepts de base - maverick - inriamaverick.inria.fr/Members/Emmanuel.Turquin/enseignement/3id/java3d.… · Java 3D Concepts de base Licence Professionnelle : M etiers de](https://reader031.fdocuments.net/reader031/viewer/2022022502/5aad164f7f8b9a2b4c8e0189/html5/thumbnails/46.jpg)
Exemple
import com.sun.j3d.loaders.objectfile.ObjectFile ;import com.sun.j3d.loaders.* ;import java.io.FileNotFoundException ;
public Node loadObject(){
ObjectFile f = new ObjectFile() ;
try {s = f.load("maison.obj") ;
} catch (FileNotFoundException error){
System.err.println(error) ;System.exit(1) ;
}return s.getSceneGroup() ;
}
Java 3D P. Reignier
C.25
![Page 47: Java 3D Concepts de base - maverick - inriamaverick.inria.fr/Members/Emmanuel.Turquin/enseignement/3id/java3d.… · Java 3D Concepts de base Licence Professionnelle : M etiers de](https://reader031.fdocuments.net/reader031/viewer/2022022502/5aad164f7f8b9a2b4c8e0189/html5/thumbnails/47.jpg)
Transform Group
• Noeud groupe :
– Plusieurs fils possibles
• Noeud Transform :
– Positionne les fils dans l’espace
– Possede une Matrice 4x4 de positionnement Transform3D
• javax.media.j3d.TransformGroup
Java 3D P. Reignier
C.26
![Page 48: Java 3D Concepts de base - maverick - inriamaverick.inria.fr/Members/Emmanuel.Turquin/enseignement/3id/java3d.… · Java 3D Concepts de base Licence Professionnelle : M etiers de](https://reader031.fdocuments.net/reader031/viewer/2022022502/5aad164f7f8b9a2b4c8e0189/html5/thumbnails/48.jpg)
Transform3D
Java 3D P. Reignier
C.27
![Page 49: Java 3D Concepts de base - maverick - inriamaverick.inria.fr/Members/Emmanuel.Turquin/enseignement/3id/java3d.… · Java 3D Concepts de base Licence Professionnelle : M etiers de](https://reader031.fdocuments.net/reader031/viewer/2022022502/5aad164f7f8b9a2b4c8e0189/html5/thumbnails/49.jpg)
Transform3D
• Represente :
– Une translation
– Une rotation
– Un changement d’echelle
• Methodes principales :
– setTranslation(Vector3d trans)
– setRotation(Quat4f q1) ;
∗ Quaternion = axe + angle de rotation.
– setScale(Vector3d scale) ;
• javax.media.j3d.Transform3D
Java 3D P. Reignier
C.28
![Page 50: Java 3D Concepts de base - maverick - inriamaverick.inria.fr/Members/Emmanuel.Turquin/enseignement/3id/java3d.… · Java 3D Concepts de base Licence Professionnelle : M etiers de](https://reader031.fdocuments.net/reader031/viewer/2022022502/5aad164f7f8b9a2b4c8e0189/html5/thumbnails/50.jpg)
BranchGroup
Java 3D P. Reignier
C.29
![Page 51: Java 3D Concepts de base - maverick - inriamaverick.inria.fr/Members/Emmanuel.Turquin/enseignement/3id/java3d.… · Java 3D Concepts de base Licence Professionnelle : M etiers de](https://reader031.fdocuments.net/reader031/viewer/2022022502/5aad164f7f8b9a2b4c8e0189/html5/thumbnails/51.jpg)
BranchGroup
• Noeud groupe :
– Contient un ou plusieurs fils
• Quelques methodes (heritees de Group):
– addChild(Node child)
– insertChild(Node child, int index)
– removeChild(int index)
• Seul noeud pouvant etre insere dans un noeud Locale.
• javax.media.j3d.BranchGroup
Java 3D P. Reignier
C.30
![Page 52: Java 3D Concepts de base - maverick - inriamaverick.inria.fr/Members/Emmanuel.Turquin/enseignement/3id/java3d.… · Java 3D Concepts de base Licence Professionnelle : M etiers de](https://reader031.fdocuments.net/reader031/viewer/2022022502/5aad164f7f8b9a2b4c8e0189/html5/thumbnails/52.jpg)
ViewPlatform
Java 3D P. Reignier
C.31
![Page 53: Java 3D Concepts de base - maverick - inriamaverick.inria.fr/Members/Emmanuel.Turquin/enseignement/3id/java3d.… · Java 3D Concepts de base Licence Professionnelle : M etiers de](https://reader031.fdocuments.net/reader031/viewer/2022022502/5aad164f7f8b9a2b4c8e0189/html5/thumbnails/53.jpg)
ViewPlatform
• Noeud feuille.
• Camera a travers laquelle on navigue dans l’univers.
• Navigation en changeant le noeud Transform pere de ViewPlat-
form
• javax.media.j3d.ViewPlatform
Java 3D P. Reignier
C.32
![Page 54: Java 3D Concepts de base - maverick - inriamaverick.inria.fr/Members/Emmanuel.Turquin/enseignement/3id/java3d.… · Java 3D Concepts de base Licence Professionnelle : M etiers de](https://reader031.fdocuments.net/reader031/viewer/2022022502/5aad164f7f8b9a2b4c8e0189/html5/thumbnails/54.jpg)
View
Java 3D P. Reignier
C.33
![Page 55: Java 3D Concepts de base - maverick - inriamaverick.inria.fr/Members/Emmanuel.Turquin/enseignement/3id/java3d.… · Java 3D Concepts de base Licence Professionnelle : M etiers de](https://reader031.fdocuments.net/reader031/viewer/2022022502/5aad164f7f8b9a2b4c8e0189/html5/thumbnails/55.jpg)
View
• Passage d’une scene 3D a une image 2D
• Affichage de l’image 2D dans un Canvas3D
• Canvas3D
– Extension du Canvas d’awt
• Classes :
– javax.media.j3d.View
– javax.media.j3d.Canvas3D
Java 3D P. Reignier
C.34
![Page 56: Java 3D Concepts de base - maverick - inriamaverick.inria.fr/Members/Emmanuel.Turquin/enseignement/3id/java3d.… · Java 3D Concepts de base Licence Professionnelle : M etiers de](https://reader031.fdocuments.net/reader031/viewer/2022022502/5aad164f7f8b9a2b4c8e0189/html5/thumbnails/56.jpg)
SimpleUniverse
Java 3D P. Reignier
C.35
![Page 57: Java 3D Concepts de base - maverick - inriamaverick.inria.fr/Members/Emmanuel.Turquin/enseignement/3id/java3d.… · Java 3D Concepts de base Licence Professionnelle : M etiers de](https://reader031.fdocuments.net/reader031/viewer/2022022502/5aad164f7f8b9a2b4c8e0189/html5/thumbnails/57.jpg)
SimpleUniverse
• Objectif :
– Simplifier la creation d’une application Java3D
– Prend en charge une partie du graphe de scene
Java 3D P. Reignier
C.36
![Page 58: Java 3D Concepts de base - maverick - inriamaverick.inria.fr/Members/Emmanuel.Turquin/enseignement/3id/java3d.… · Java 3D Concepts de base Licence Professionnelle : M etiers de](https://reader031.fdocuments.net/reader031/viewer/2022022502/5aad164f7f8b9a2b4c8e0189/html5/thumbnails/58.jpg)
SimpleUniverse
• ViewingPlatform :
– ViewPlatform
– Geometrie associee :
∗ Tableau de bord de voiture
∗ etc
• ViewPlatform getViewPlatform()
Java 3D P. Reignier
C.37
![Page 59: Java 3D Concepts de base - maverick - inriamaverick.inria.fr/Members/Emmanuel.Turquin/enseignement/3id/java3d.… · Java 3D Concepts de base Licence Professionnelle : M etiers de](https://reader031.fdocuments.net/reader031/viewer/2022022502/5aad164f7f8b9a2b4c8e0189/html5/thumbnails/59.jpg)
SimpleUniverse
• Viewing :
– View (Canvas3D)
– ViewerAvatar
– etc
• View getView()
Java 3D P. Reignier
C.38
![Page 60: Java 3D Concepts de base - maverick - inriamaverick.inria.fr/Members/Emmanuel.Turquin/enseignement/3id/java3d.… · Java 3D Concepts de base Licence Professionnelle : M etiers de](https://reader031.fdocuments.net/reader031/viewer/2022022502/5aad164f7f8b9a2b4c8e0189/html5/thumbnails/60.jpg)
SimpleUniverse
• Creation :
– new SimpleUniverse() :
∗ cree une Frame awt compose d’un canvas 3D.
– new SimpleUniverse(Canvas3D c) :
∗ Permet d’inserer une vue 3D dans une IHM complete
Java 3D P. Reignier
C.39
![Page 61: Java 3D Concepts de base - maverick - inriamaverick.inria.fr/Members/Emmanuel.Turquin/enseignement/3id/java3d.… · Java 3D Concepts de base Licence Professionnelle : M etiers de](https://reader031.fdocuments.net/reader031/viewer/2022022502/5aad164f7f8b9a2b4c8e0189/html5/thumbnails/61.jpg)
SimpleUniverse
• Quelques methodes :
– void addBranchGraph(BranchGroup g)
– ViewingPlatform getViewingPlatform()
– ViewerPlatform getViewer()
• com.sun.j3d.utils.universe.SimpleUniverse
Java 3D P. Reignier
C.40
![Page 62: Java 3D Concepts de base - maverick - inriamaverick.inria.fr/Members/Emmanuel.Turquin/enseignement/3id/java3d.… · Java 3D Concepts de base Licence Professionnelle : M etiers de](https://reader031.fdocuments.net/reader031/viewer/2022022502/5aad164f7f8b9a2b4c8e0189/html5/thumbnails/62.jpg)
Terminologie
• Un noeud peut etre :
– Vivant (Live)
– Compile (Compiled)
Java 3D P. Reignier
C.41
![Page 63: Java 3D Concepts de base - maverick - inriamaverick.inria.fr/Members/Emmanuel.Turquin/enseignement/3id/java3d.… · Java 3D Concepts de base Licence Professionnelle : M etiers de](https://reader031.fdocuments.net/reader031/viewer/2022022502/5aad164f7f8b9a2b4c8e0189/html5/thumbnails/63.jpg)
Vivant
• Noeuds d’un BranchGroup lors de son ajout a un noeud Locale
(participent au rendu)
• Exemple :
myBranch = new BranchGroup( );myBranch.addChild( myShape );myLocale.addBranchGraph( myBranch ); // make live!
• Les noeuds ne sont plus vivants lors du retrait :
myLocale.removeBranchGraph( myBranch );// not live
• Verification si le noeud est vivant :
boolean isLive() ;
Java 3D P. Reignier
C.42
![Page 64: Java 3D Concepts de base - maverick - inriamaverick.inria.fr/Members/Emmanuel.Turquin/enseignement/3id/java3d.… · Java 3D Concepts de base Licence Professionnelle : M etiers de](https://reader031.fdocuments.net/reader031/viewer/2022022502/5aad164f7f8b9a2b4c8e0189/html5/thumbnails/64.jpg)
Compile
• Optimisation du rendu
• Methode de BranchGroup :
void compile() ;
• Les noeuds doivent etre compiles avant d’etre rendus vivants :
BranchGroup myBranch = new BranchGroup( );myBranch.addChild( myShape );myBranch.compile( );myLocale.addBranchGraph( myBranch );
Java 3D P. Reignier
C.43
![Page 65: Java 3D Concepts de base - maverick - inriamaverick.inria.fr/Members/Emmanuel.Turquin/enseignement/3id/java3d.… · Java 3D Concepts de base Licence Professionnelle : M etiers de](https://reader031.fdocuments.net/reader031/viewer/2022022502/5aad164f7f8b9a2b4c8e0189/html5/thumbnails/65.jpg)
Attributs des noeuds
• Lecture ou ecriture des attributs :
– Avant d’etre vivant ou compile.
• Apres :
– Doit etre autorise
⇒ Capacites d’un noeud
• Peu de capacites ⇒ plus d’optimisation a la compilation.
Java 3D P. Reignier
C.44
![Page 66: Java 3D Concepts de base - maverick - inriamaverick.inria.fr/Members/Emmanuel.Turquin/enseignement/3id/java3d.… · Java 3D Concepts de base Licence Professionnelle : M etiers de](https://reader031.fdocuments.net/reader031/viewer/2022022502/5aad164f7f8b9a2b4c8e0189/html5/thumbnails/66.jpg)
Capacites
• Methodes de SceneGraphObject
void setCapability( int bit )void clearCapability( int bit )boolean getCapability( int bit )
Java 3D P. Reignier
C.45
![Page 67: Java 3D Concepts de base - maverick - inriamaverick.inria.fr/Members/Emmanuel.Turquin/enseignement/3id/java3d.… · Java 3D Concepts de base Licence Professionnelle : M etiers de](https://reader031.fdocuments.net/reader031/viewer/2022022502/5aad164f7f8b9a2b4c8e0189/html5/thumbnails/67.jpg)
Exemple : Shape3D
• Capacites :
– ALLOW APPEARANCE READ
– ALLOW APPEARANCE WRITE
– ALLOW GEOMETRY READ
– ALLOW GEOMETRY WRITE
– . . .
Java 3D P. Reignier
C.46
![Page 68: Java 3D Concepts de base - maverick - inriamaverick.inria.fr/Members/Emmanuel.Turquin/enseignement/3id/java3d.… · Java 3D Concepts de base Licence Professionnelle : M etiers de](https://reader031.fdocuments.net/reader031/viewer/2022022502/5aad164f7f8b9a2b4c8e0189/html5/thumbnails/68.jpg)
D
Exemple
Java 3D P. Reignier
![Page 69: Java 3D Concepts de base - maverick - inriamaverick.inria.fr/Members/Emmanuel.Turquin/enseignement/3id/java3d.… · Java 3D Concepts de base Licence Professionnelle : M etiers de](https://reader031.fdocuments.net/reader031/viewer/2022022502/5aad164f7f8b9a2b4c8e0189/html5/thumbnails/69.jpg)
import java.awt.* ;import java.awt.BorderLayout;import java.awt.event.*;import java.awt.GraphicsConfiguration;import com.sun.j3d.utils.applet.MainFrame;import com.sun.j3d.utils.geometry.ColorCube;import com.sun.j3d.utils.universe.*;import javax.media.j3d.*;import javax.vecmath.*;import com.sun.j3d.loaders.objectfile.ObjectFile ;import com.sun.j3d.loaders.* ;import java.io.FileNotFoundException ;
Java 3D P. Reignier
D.1
![Page 70: Java 3D Concepts de base - maverick - inriamaverick.inria.fr/Members/Emmanuel.Turquin/enseignement/3id/java3d.… · Java 3D Concepts de base Licence Professionnelle : M etiers de](https://reader031.fdocuments.net/reader031/viewer/2022022502/5aad164f7f8b9a2b4c8e0189/html5/thumbnails/70.jpg)
public class Beethoven extends Frame {
protected BranchGroup scene ;protected SimpleUniverse u ;
public BranchGroup createSceneGraph() {// Create the root of the branch graphBranchGroup objRoot = new BranchGroup();
// Create a bounds for the background and lightsBoundingSphere bounds =
new BoundingSphere(new Point3d(0.0,0.0,0.0), 100.0);// Set up the background ColorColor3f bgColor = new Color3f(0.05f, 0.05f, 0.7f);Background bgNode = new Background(bgColor);bgNode.setApplicationBounds(bounds);objRoot.addChild(bgNode);
Color3f light1Color = new Color3f(1.0f, 1.0f, 0.9f);Vector3f light1Direction = new Vector3f(4.0f, -7.0f, -12.0f);Color3f light2Color = new Color3f(0.3f, 0.3f, 0.4f);Vector3f light2Direction = new Vector3f(-6.0f, -2.0f, -1.0f);Color3f ambientColor = new Color3f(0.1f, 0.1f, 0.1f);
Java 3D P. Reignier
D.2
![Page 71: Java 3D Concepts de base - maverick - inriamaverick.inria.fr/Members/Emmanuel.Turquin/enseignement/3id/java3d.… · Java 3D Concepts de base Licence Professionnelle : M etiers de](https://reader031.fdocuments.net/reader031/viewer/2022022502/5aad164f7f8b9a2b4c8e0189/html5/thumbnails/71.jpg)
// Second, define the ambient light, and insert it in the branchAmbientLight ambientLightNode = new AmbientLight(ambientColor);ambientLightNode.setInfluencingBounds(bounds);objRoot.addChild(ambientLightNode);
// Lastly, define the directional lights and insert itDirectionalLight light1
= new DirectionalLight(light1Color, light1Direction);light1.setInfluencingBounds(bounds);objRoot.addChild(light1);
DirectionalLight light2= new DirectionalLight(light2Color, light2Direction);
light2.setInfluencingBounds(bounds);objRoot.addChild(light2);
Java 3D P. Reignier
D.3
![Page 72: Java 3D Concepts de base - maverick - inriamaverick.inria.fr/Members/Emmanuel.Turquin/enseignement/3id/java3d.… · Java 3D Concepts de base Licence Professionnelle : M etiers de](https://reader031.fdocuments.net/reader031/viewer/2022022502/5aad164f7f8b9a2b4c8e0189/html5/thumbnails/72.jpg)
TransformGroup objTrans = new TransformGroup();objTrans.setCapability(TransformGroup.ALLOW_TRANSFORM_WRITE);objRoot.addChild(objTrans);
Scene s ;// Create a simple Shape3D node; add it to the scene graph.ObjectFile f = new ObjectFile() ;
try {s = f.load("beethoven.obj") ;objTrans.addChild(s.getSceneGroup()) ;
} catch (FileNotFoundException error){
System.err.println(error) ;System.exit(1) ;
}
// allows to read the bounding sphereobjRoot.setCapability(BranchGroup.ALLOW_BOUNDS_READ) ;
// Have Java 3D perform optimizations on this scene graph.objRoot.compile();
return objRoot;}
Java 3D P. Reignier
D.4
![Page 73: Java 3D Concepts de base - maverick - inriamaverick.inria.fr/Members/Emmanuel.Turquin/enseignement/3id/java3d.… · Java 3D Concepts de base Licence Professionnelle : M etiers de](https://reader031.fdocuments.net/reader031/viewer/2022022502/5aad164f7f8b9a2b4c8e0189/html5/thumbnails/73.jpg)
public Beethoven() {super("Beethoven") ;setLayout(new BorderLayout());
GraphicsConfiguration config =SimpleUniverse.getPreferredConfiguration();
Canvas3D c = new Canvas3D(config);add("Center", c);
// Create a simple scene and attach it to the virtual universescene = createSceneGraph();u = new SimpleUniverse(c);
// This will move the ViewPlatform back a bit so the// objects in the scene can be viewed.
u.getViewingPlatform().setNominalViewingTransform();viewAll() ;
u.addBranchGraph(scene);
pack() ;setSize(300,300) ;
}
Java 3D P. Reignier
D.5
![Page 74: Java 3D Concepts de base - maverick - inriamaverick.inria.fr/Members/Emmanuel.Turquin/enseignement/3id/java3d.… · Java 3D Concepts de base Licence Professionnelle : M etiers de](https://reader031.fdocuments.net/reader031/viewer/2022022502/5aad164f7f8b9a2b4c8e0189/html5/thumbnails/74.jpg)
public void viewAll(){
BoundingSphere mybounds = (BoundingSphere) scene.getBounds() ;double t[] = new double[3] ;Point3d center=new Point3d() ;mybounds.getCenter(center) ;center.get(t) ;
// on positionne la camera de facon a voir la sphereTransformGroup cameraPosition = u.getViewingPlatform().
getViewPlatformTransform() ;
Transform3D trans = new Transform3D() ;trans.setTranslation(new Vector3f((float)t[0],
(float)t[1],(float)t[2]+(float) mybounds.getRadius()*3));
cameraPosition.setTransform(trans) ;}
//// The following allows Beethoven to be run as an application// as well as an applet//public static void main(String[] args) {
new Beethoven().show() ;}
}Java 3D P. Reignier
D.6