1 / 21

Java 3D

Java 3D. DESS TNI 2000-2001 Université MONTPELLIER II. Xavier ANDREANI. Introduction Objets pour la 3D Scène 3D Univers virtuel Transformations Méchanisme interne Affichage Compilation Animations. Interactions Structure d’un objet 3D Apparence Textures Lumières Material

Télécharger la présentation

Java 3D

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Java3D DESS TNI 2000-2001 Université MONTPELLIER II Xavier ANDREANI

  2. Introduction Objets pour la 3D Scène 3D Univers virtuel Transformations Méchanisme interne Affichage Compilation Animations Interactions Structure d’un objet 3D Apparence Textures Lumières Material Géométrie Créer ses propres objets Retour sur les lumières Conclusion Bibliographie Plan

  3. Introduction • Java 3D est destiné à l’affichage 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 java:Java 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 l’observateurViewPlatForm • Ecran sur lequel est projeté la scènecanvas3d • Les autres objets

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

  6. Univers Virtuel Définit la partie view du graphe de la scène • L’oeil de l’observateurViewPlatform • L’écran de projectioncanvas3d

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

  8. Affichage • L’affichage effectue un parcours de graphe, de bas en haut, des feuilles vers la racine. • Chaque branche de l’arbre 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é d’accélérer l’affichage grâce à la méthode compile de BranchGroup. • C’est 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 d’objets qui subissent la même transformation, ...).

  10. Animations • Il s’agit d’appliquer en boucle une transformation, une fois l’affichage effectué. • Pour celà, il suffit d’ajouter à l’objet 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 d’influence BoundingSphere, en dehors de laquelle l’animation 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 s’agit de provoquer un effet de bord (modification) sur graphe scénique, en fonction d’un événement (clavier, souris...). • L’objet 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)). • L’action à effectuer. • Une zone d’influence BoundingSphere à l’intérieur de laquelle est récupéré l’événement. • Attention: rappellez initialize pour réenregistrer les événements à détecter après l’exécution de l’action.

  12. Structure D’un 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 l’objet • La texture de l’objet (la couleur est ignorée) • Sa transparence (couche alpha, cf TP Photoshop) • Le type de rendu (plein, filaire...) • Le comportement de l’objet quand il est éclairé (la couleur ci-dessus est alors ignorée) • …

  14. Textures Il s’agit d’habiller 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 d’effet 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 d’une source (vecteurs directionnels concentriques)PointLight • La même, réduite à un cône d’émissionSpotLight • Les lumières ont une couleur, que l’on choisit blanche pour reproduire la lumière naturelle (celle du soleil) ou la lumière d’une lampe

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

  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 d’un processeur se fait sur des triangles. Il n’y a donc pas au préalable à décomposer l’objet en triangles. • Plus généralement, la géométrie d’un objet 3D, se compose d’objets 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 s’agit donc d’assembler 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 d’un 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 l’utilisation des optimisations pour DirectX et OpenGL, Java3d est crédible. • La grande généricité du modèle objet de Java3D lui permet d’ajouter tous types d’objets à notre monde, comme par exemple des sons 3D. Je n’ai trouvé aucune doc, à part les classes abstraites dans l’api. • Ce document avait pour but de vous introduire les bases de l’utilisation de Java3D dans les domaines les plus importants, maintenant c’est à vous de « continuer l’aventure »…

  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 l‘API 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/products/java-media/3D/forDevelopers/J3D_1_2_API/j3dapi/index.html • Java 3D API Specification http://java.sun.com/products/java-media/3D/forDevelopers/J3D_1_2_API/j3dguide/index.html • The java 3D Community http://www.j3D.org

More Related