Java 3D - PowerPoint PPT Presentation

About This Presentation
Title:

Java 3D

Description:

Tr s bon mod le de hi rarchie objet g n rique pour repr senter un univers 3D. ... rayons lumineux, il faut fournir son Appearance, un objet Material qui d crit: ... – PowerPoint PPT presentation

Number of Views:83
Avg rating:3.0/5.0
Slides: 22
Provided by: dparte8
Category:
Tags: appearance | java

less

Transcript and Presenter's Notes

Title: Java 3D


1
Java 3D
DESS TNI 2000-2001 Université MONTPELLIER II
Xavier ANDREANI
2
Plan
  • Introduction
  • Objets pour la 3D
  • Scène 3D
  • Univers virtuel
  • Transformations
  • Méchanisme interne
  • Affichage
  • Compilation
  • Animations
  • Interactions
  • Structure dun objet 3D
  • Apparence
  • Textures
  • Lumières
  • Material
  • Géométrie
  • Créer ses propres objets
  • Retour sur les lumières
  • Conclusion
  • Bibliographie

3
Introduction
  • Java 3D est destiné à laffichage 3D sous java.
  • Conçu dans le but de faciliter la
    programmation.Très bon modèle de hiérarchie
    objet générique pour représenter un univers 3D.
  • Justifié par la portabilité de javaJava 3D est
    disponible sous Windows, Solaris, SPARC, Linux,
    HP-UX, SGI Irix.

4
Objets Pour La 3D
  • Univers virtuelVirtualUniverse
  • Scène 3D à afficherBranchGroup
  • Oeil de lobservateurViewPlatForm
  • Ecran sur lequel est projeté la scènecanvas3d
  • Les autres objets

5
Scène 3D
  • Représentée sous la forme dun arbre (graphe)
    dobjets.
  • Les feuilles de larbre sont les objets à
    afficher.
  • Les autres noeuds définissent des regroupements
    dobjets (pour y appliquer des transformations...)
    .
  • Le groupe englobant (BranchGroup pour la racine)
    est à passer en référence à lunivers virtuel.

6
Univers Virtuel
  • Définit la partie view du graphe de la scène
  • Loeil de lobservateurViewPlatform
  • Lécran de projectioncanvas3d

7
Transformations
  • Tous les objets du graphe scénique sont crées à
    lorigine du repère (0,0,0), doù lutilité des
    transformations pour les positionner.
  • On associe à chaque noeud TransformGroup, une
    transformation transform3d.
  • Les transformations élémentaires disponibles
    sont
  • Rotations.
  • Rotation selon laxe X.
  • Rotation selon laxe Y.
  • Rotation selon laxe Z.
  • Translation.
  • Retaillage (zoom).
  • Autres transformations obtenues par composition
    par la méthode mul de Transform3d.Attention à
    lordre du produit!!!
  • Pour 1 objet, équivalence entre une
    transformation appliqué à cet objet, et une
    transformation appliqué à lobjet ViewPlatform
    (déplacement de lobservateur dans le monde).

8
Affichage
  • Laffichage effectue un parcours de graphe, de
    bas en haut, des feuilles vers la racine.
  • Chaque branche de larbre détermine entièrement
    les propriétés de sa feuille. Pour chaque
    feuille, Java 3D parcours donc les parents
    jusquà la racine.

9
Compilation
  • Possibilité daccélérer laffichage grâce à la
    méthode compile de BranchGroup.
  • Cest une transformation du graphe scénique en
    une structure interne rapidement manipulable.
  • Les propriétés des noeuds doivent donc être
    précisées avant la compilation accessible en
    lecture, écriture (animation...)...
  • La compilation peut effectuer des optimisations
    (non documentées) dans le graphe scénique
    (composition de plusieurs transformations,
    regroupement dobjets qui subissent la même
    transformation, ...).

10
Animations
  • Il sagit dappliquer en boucle une
    transformation, une fois laffichage effectué.
  • Pour celà, il suffit dajouter à lobjet
    TransformGroup en question un enfant Interpolator
    qui contient
  • Une fonction de rotation au cours du temps alpha
    (nombre de répétitions de la transformation ou -1
    si infini, et intervalle de temps entre 2
    transformations).
  • Le comportement à appliquer périodiquement.
  • Une zone dinfluence BoundingSphere, en dehors de
    laquelle lanimation ne sera plus effectuée.
  • Les Interpolator correspondant aux 3
    transformations élémentaires sont fournis
    (RotationInterpolator, PositionPathInterpolator,
    ScaleInterpolator).
  • Attention ne pas oublier avant la compilation de
    donner le droit en écriture au noeud de la
    transformation!!!

11
Interactions
  • Il sagit de provoquer un effet de bord
    (modification) sur graphe scénique, en fonction
    dun événement (clavier, souris...).
  • Lobjet qui sert à ça est Behavior, toujours à
    ajouter comme enfant du TransformGroup associé,
    et contient
  • Les événements à détecter (définis dans
    initialize par des wakeupOn(AWTEvent)).
  • Laction à effectuer.
  • Une zone dinfluence BoundingSphere à lintérieur
    de laquelle est récupéré lévénement.
  • Attention rappellez initialize pour
    réenregistrer les événements à détecter après
    lexécution de laction.

12
Structure Dun Objet 3D
  • Un objet 3D (Shape3d) se compose de 2 parties
    distinctes
  • Son apparence qui précise comment il doit être
    affichéAppearance
  • Sa géométrie qui détaille sa formeGeometry

13
Apparence
  • Pour rendre nos objets visibles, il faut leur
    associer une Appearence qui définit plusieurs
    choses
  • La couleur de lobjet
  • La texture de lobjet (la couleur est ignorée)
  • Sa transparence (couche alpha, cf TP Photoshop)
  • Le type de rendu (plein, filaire...)
  • Le comportement de lobjet quand il est éclairé
    (la couleur ci-dessus est alors ignorée)

14
Textures
  • Il sagit dhabiller un objet en lui appliquant
    une image sur chacune de ces faces.
  • Pour cela, sur chaque face il faut définir un
    repère (qui par défaut sera le repère unitaire).

15
Lumières
  • Il existe différents types de lumières pour
    éclairer vos objets
  • Lumières ambiantes éclairant indifféremment toute
    la scène (éclairage global ne donnant pas deffet
    de volume)AmbiantLight
  • Lumière directionnelle selon un vecteur
    (éclairage calculé en fonction des normales aux
    surfaces, une surface orthogonale à ce vecteur
    sera uniforméménet éclairée)DirectionalLight
  • Lumière ponctuelle, émettant à partir dune
    source (vecteurs directionnels concentriques)Poin
    tLight
  • La même, réduite à un cône démissionSpotLight
  • Les lumières ont une couleur, que lon choisit
    blanche pour reproduire la lumière naturelle
    (celle du soleil) ou la lumière dune lampe

16
Material
  • Afin quun objet soit sensible aux rayons
    lumineux, il faut fournir à son Appearance, un
    objet Material qui décrit
  • La couleur renvoyée par lobjet lorsquil est
    éclairé par une lumière ambiante
    blancheambiantColor
  • La couleur émise par lobjet (utile pour une
    lampe, noir sinon)emissiveColor
  • La teinte de lobjet éclairé (proche de notre
    définition  naturelle  de la couleur dun
    objet)diffuseColor
  • La couleur des tâches de lumières (brillance sur
    un métal par exemple cest le reflet de la
    source lumineuse)specularColor
  • La brillance de lobjetshininess

17
Géométrie
  • Les primitives de Java3D sont toutes définies à
    partir de triangles 2D rassemblés pour former un
    volume.
  • En effet, le calcul 3D au niveau dun processeur
    se fait sur des triangles. Il ny a donc pas au
    préalable à décomposer lobjet en triangles.
  • Plus généralement, la géométrie dun objet 3D, se
    compose dobjets points, lignes, triangles,
    quadrilatères, et constructions géométriques
    utiles LineStripArray, TriangleStripArray,
    TriangleFanArray

18
Créer Ses Propres Objets
  • Comme expliqué précédemment, il sagit donc
    dassembler des objets 2D représentant les faces
    de notre objet 3D.
  • Le principe de placage des textures sur ces
    nouvelles formes reste strictement le même.

19
Retour sur les lumières
  • Les calculs pour léclairage dun objet se font
    par rapport aux vecteurs normaux des faces, et
    aux vecteurs incidents des rayons lumineux.
  • Pour les primitives de Java3D, il suffisait de
    préciser un paramètre pour que les normales
    soient calculées.
  • Ici, il va falloir définir chacun de ces
    vecteurs. (un pour chaque sommet de chaque face)

20
Conclusion
  • Grâce à son modèle objet, Java3D permet de
    développer rapidement et efficacement, la plupart
    des fonctionnalités étant automatisées.
  • Niveau rapidité, le Java 1.3 qui est sorti a
    corrigé la lenteur du Java 1.2 sous Linux (la
    version Windows était beaucoup plus rapide), et
    en ajoutant à ça lutilisation des optimisations
    pour DirectX et OpenGL, Java3d est crédible.
  • La grande généricité du modèle objet de Java3D
    lui permet dajouter tous types dobjets à notre
    monde, comme par exemple des sons 3D. Je nai
    trouvé aucune doc, à part les classes abstraites
    dans lapi.
  • Ce document avait pour but de vous introduire les
    bases de lutilisation de Java3D dans les
    domaines les plus importants, maintenant cest à
    vous de  continuer laventure 

21
Bibliographie
  • En français
  • Mon site web Java3d http//charon/xandrean/java3d
    (intranet Université Montpellier 2 / LIRMM
    uniquement, non maintenu à jour)
    http//xandrean.free.fr/java3d
  • Le tutoriel de lAPI Java 3D, traduction en
    français (incomplet 3 chapitres sur 7)
    http//www.latelier-virtuel.com/2armel/tutj3d/
  • jCosmos http//www.jcosmos.claranet.fr/
  • En anglais
  • Java 3D API tutorial http//developer.java.sun.com
    /developer/onlineTraining/java3d/
  • Java 3D API documentation http//java.sun.com/prod
    ucts/java-media/3D/forDevelopers/J3D_1_2_API/j3dap
    i/index.html
  • Java 3D API Specification http//java.sun.com/prod
    ucts/java-media/3D/forDevelopers/J3D_1_2_API/j3dgu
    ide/index.html
  • The java 3D Community http//www.j3D.org
Write a Comment
User Comments (0)
About PowerShow.com