Les langages de descriptions 3D - PowerPoint PPT Presentation

1 / 39
About This Presentation
Title:

Les langages de descriptions 3D

Description:

Standards : Java/Java3D(Sun), OpenGL(SGI) Propri taires : GL (SGI), PHIGS : Programers ... Apparences. Mat riaux : couleur, transparence, effets lumineux ... – PowerPoint PPT presentation

Number of Views:105
Avg rating:3.0/5.0
Slides: 40
Provided by: I119127
Category:

less

Transcript and Presenter's Notes

Title: Les langages de descriptions 3D


1
Les langages de descriptions 3D
Mars 2006
Mastères Créations et Productions Multimédias
  • VRML/X3D Java3D

Eric.Varadaradjou_at_enst.fr
http//www.enst.fr/varadara/VRML
2
Description et Programmation
  • Langages de descriptions
  • Standards VRML (W3C), X3D (W3C), blend(Blender)
  • Propriétaires 3DS (3D Studio), LWO(Lightwave)
  • Formats déchange
  • Bibliothèques de programmation
  • Standards Java/Java3D(Sun), OpenGL(SGI)
  • Propriétaires GL (SGI), PHIGS  Programers
    Hierarchical Interactive Graphics System
  • ? Programmation complexe

3
Pourquoi la 3D ?
  • Exemples d'applications
  • Simulation, visualisation scientifique
  • Apprentissage
  • Observation
  • Télé opération
  • Ludique jeux, dialogue
  • Caractéristiques
  • Représentation plus  naturelle 
  • Interaction intuitive

3D
3D
3D
4
Virtual Reality Modeling Language
5
Historique de VRML/X3D
  • 1993 Développement d'une interface 3D (Mark
    Pesce,Tony Parisi )
  • 1994 Conférence de Genève
  • Nécessite de créer un langage commun pour la
    définition de scène 3D et sa diffusion sur
    Internet.
  • OpenInventor de SGI
  • 1995 Le VRML est conçu pour
  • S'adapter a toutes les plate-formes (Unix,
    Windows,...)
  • Evolutif (Evolution rapide dinternet)
  • Faible bande passante (visualisable sur le net
    modem 28k)
  • 1997 Apparition de VRML 2.0 / 97
  • 2004 Apparition de X3D
  • Interopérabilité
  • Outils communs

6
Introduction
  • Format VRML 1.0 ? VRML 2.0/97 ? X3D
    (gestion de la
    souris,du son et l'animation)
  • Langage de description de scènes.
  • Les outils nécessaires
  • Un éditeur de texte
  • Un module dextension (plugin)
    ou programme autonome
  • Module dextension VRML CosmoPlayer,
    Cortona, WorldView, Blaxxun, ...
  • Module dextension VRML/X3D BitManagement,
    Xj3D(OpenSource), Octaga(Utilisé en TP), Cortona,

7
Introduction par lexemple
  • VRML V2.0 utf8
  • NavigationInfo type "EXAMINE"speed 1.0
    headlight TRUE
  • Transform translation 10 0 10
  • children Shape geometry Box
    size 2 2 2
  • lt?xml version"1.0" encoding"UTF-8"?gt
  • lt!DOCTYPE X3D PUBLIC "ISO//Web3D//DTD X3D
    3.0//EN" "http//www.web3d.org/specifications/x
    3d-3.0.dtd"gt
  • ltX3D version'3.1' profile'Immersive' 'gt
  • ltScenegt
  • ltShapegt
  • ltAppearancegt
  • ltMaterial diffuseColor'0 .5 1'/gt
  • lt/Appearancegt
  • ltCylinder/gt
  • lt/Shapegt
  • lt/Scenegt
  • lt/X3Dgt

3D
3D
VRML 97
X3D
8
Structure des scènes
  • Organisation hiérarchique
  • Scène VRML représentée comme un arbre
  • Nuds VRML ensemble de champs clés
  • Champ d'un nud
  • Valeurs de base vecteurs 3D, entiers, ...
  • Instances de nuds
  • Structure 3D
  • Imbrication de repères d'objets et
    transformations géométriques sur les repères.

9
Geometry
Apparence
Geometry
Geometry
10
Structure des scènes
VRML V2.0 utf8Group children
Shape apparence Apparence
geometry Box Shape
geometry Cone Group
children Shape geometry Sphere
  • Chaque noeud est délimité par des accolades. Les
    objets sont organisés de façon hiérarchique.
  • On a ici deux groupes. Le premier a deux enfants
    (children) une boîte (Box) et un Cône, le
    second possède une Sphère.
  • Les groupes sont utilisés pour partager certaines
    propriétés entre plusieurs objets (repère
    géographique, réaction à un événement
    particulier, etc.)

11
Principaux nuds
  • Point de vue
  • Coordonnées depuis lesquelles lutilisateur peut
    visualiser la scène
  • Taille de lutilisateur
  • Méthode dinteractions avec la scène
  • Formes 3D simples
  • Formes primitives Cônes, Boîtes, Cylindres,
    Sphères
  • Listes de facettes

12
  • VRML V2.0 utf8NavigationInfo type
    "EXAMINE" speed 1.0 headlight TRUE
    Group children Transform
    children Shape appearance Appearance
    material Material
    geometry Box
    size 2 2 2 Fin children
    Shape translation 0 0 0 Fin
    children Transform Fin Group

13
Principaux nuds
  • Apparences
  • Matériaux couleur, transparence, effets
    lumineux
  • Textures fichier, pixels, modifications
  • Transformations géométriques
  • Rotations, translations, homothéties, définition
    des collisions
  • Lumières
  • Lumière directionnelle éclairage avec des
    rayons parallèles selon une direction.
  • Lumière omnidirectionnelle (effet  Soleil )
    éclairage avec des rayons en faisceau.
  • Lumière spot éclairage suivant un angle solide
    (point spécifique, vecteur directionnel.)

14
  • children Shape appearance DEF MonAspect
    Appearance material DEF Laspect Material
    ambientIntensity 0.2 diffuseColor 0.8 0.8 0.8
    emissiveColor 0 0 0 shininess 0.2
    specularColor 0 0 0 transparency 0
    texture DEF Matexture ImageTexture url
    "texture.jpg" repeatS TRUE repeatT TRUE
    textureTransform TextureTransform center 0
    0 rotation 0 scale 1 1 translation 0 0
    geometry Box
  • Transform center 0 0 0 children Shape
    rotation 0 0 1 0 scale 1 1 1
    scaleOrientation 0 0 1 0 translation 0 0 0
    bboxCenter 0 0 0 bboxSize -1 -1 -1 Fin
    Transform

3D
15
Les lumières
3D
16
Divers nuds
  • Les autres nuds intéressants
  •  USE  et  DEF  réutilisation de nuds ou
    formes
  • Affichage de textes 2D
  • Brouillard (effets atmosphériques)
  • Fond de la scène simule le décor
  • Sons lecture de fichiers sonores
  • Boîtes de collision prévient lavatar de
    lentrée en collision avec le monde
  • Ancres lien hypertexte vers une page web ou un
    autre monde VRML

3D
17
Animation et Interaction
  • Mécanisme dévénements
  • Nous utilisons les modifications dun champ en
    sortie vers un champ en entrée du même type
  • Champs reliés par des routes
  • Animation
  • Modification des champs par routage dévénements
  • Keyframe définition des moments clés de
    lanimation ainsi que sa durée
  • liste de couples (instant, valeur)
  • interpolateurs calcul les mouvements permettant
    de relier tous les keyframes

18
VRML V2.0 utf8 un transform pour faire bouger
un cube C'est bien sur ce noeud que sera
appliqué le PositionInterpolator DEF Cube
Transform children Shapegeometry Box
Le TimeSensor qui va rythmer
l'animation DEF TimeSource TimeSensor
cycleInterval 4.0 l'animation va durer
en tout 4 seondes startTime 1 loop TRUE
Voila le PositionInterpolator
DEF Animation PositionInterpolator Vous
verrez que le cube est plus ou moins rapide
en fonction de intervalle des key key
0 , 0.2 , 0.6 , 0.8 , 1
keyValue 0 0 0 , 4 0 0 , 4 4 0 , 0 4 0,
0 0 0 liste des positions du cube il
revient à sa position de départ, pour faire une
boucle on copie la fraction
du TimeSensor sur la fraction de
l'animation ROUTE TimeSource.fraction_changed TO
Animation.set_fraction On copie la valeur
calculée sur la position du cube ROUTE
Animation.value_changed TO Cube.translation
3D
19
Interactions
  • Interaction les sensors
  • passive
  • Capteur de proximité utilise la position de
    lutilisateur.
  • Capteur de visibilité utilise le champ de
    vision.
  •  Billboard  système de panneau toujours
    dirigé vers lutilisateur.
  • active
  • Capteur de contact clic de la souris
  • Déplacement dobjets de manière circulaire,
    planaire ou sphérique.

3D
20
VRML V2.0 utf8 on créer un objet, ici une
sphère Shape appearance Appearance
material Material diffuseColor 1 0 0
geometry Sphere on crée un son Sound
source DEF Click AudioClip
url "dring.wav" stopTime 1
direction 0 0 1 minFront 100
maxFront 100 minBack 1
maxBack 1 On crée un TouchSensor on le
nomme TS avec DEF DEF TS TouchSensor on
route eventOut touchTime du touchSensor vers
le champs startTime de l'AudioClip Ce qui veut
dire au moment où je clique, je joue le
son ROUTE TS.touchTime TO Click.startTime
3D
21
Diverses fonctions
  • Les prototypes
  •  PROTO  permet de créer des fonctions de
    dessins avec des paramètres.
  •  EXTERNPROTO  permet lappel de fonction
    depuis un autre fichier.
  • Scripts
  • Interface avec des langages de programmation
  • Java, JavaScript, VRMLScript
  • Référence http//apia.u-strasbg.fr/vrml/

22
Exemple de Scripts
VRML V2.0 utf8 DEF LaPorte Transform Debut
de la description de la porte et de son
animation children DEF Capteur TouchSensor
si je clique sur la porte, debut du
temps DEF ScriptRelais Script eventOut
SFTime DepartOuverture eventOut SFTime
DepartFermeture eventIn SFTime JaiTouche
field SFBool Ouvert FALSE
url "vrmlscriptfunction JaiTouche(valeur,
temps) Ouvert !Ouvert if (Ouvert)
DepartOuverture temps else DepartFermeture
temps "
23
Group tout pour l'ouverture childrenDEF
ChronoOuverture TimeSensor cycleInterval 1
La duree d'ouverture startTime 0
DEF RotationOuverture OrientationInterpolato
r key 0, 1 keyValue 0 0 1 0,0 1 0
1.5708 Les deux rotations a interpoler
Fin de tout pour l'ouverture Group
tout pour la fermeture children DEF
ChronoFermeture TimeSensor cycleInterval 1
La duree de fermeture startTime 0 DEF
RotationFermeture OrientationInterpolator
key 0, 1 keyValue 0 1 0
1.5708,0 0 1 0 Les deux rotations a
interpoler Fin de tout pour
la fermeture
24
Transform geometrie et aspect de la porte
children Shape Fin de geometrie et
aspect de la porte Fin Transform,
description de la porte et de son
animation Transform Fin du mur gris on
lie le temps du  touché  au temps du touché du
script ROUTE Capteur.touchTime TO
ScriptRelais.JaiTouche on lie le temps de
depart au debut avec le debut de l animation
douverture ROUTE ScriptRelais.DepartOuverture TO
ChronoOuverture.set_startTime ROUTE
ChronoOuverture.fraction_changed TO
RotationOuverture.set_fraction ROUTE
RotationOuverture.value_changed TO
LaPorte.set_rotation on lie le temps de depart
au debut avec le debut de l animation
douverture ROUTE ScriptRelais.DepartFermeture TO
ChronoFermeture.set_startTime ROUTE
ChronoFermeture.fraction_changed TO
RotationFermeture.set_fraction ROUTE
RotationFermeture.value_changed TO
LaPorte.set_rotation
3D
25
Critique de VRML
  • Avantages
  • Format simple de description de scènes 3D
  • Standardisé
  • Enorme galerie dexemples
  • Langage adapté au Web
  • Visualiseurs gratuits
  • Utilisation de VRML comme format dexportation
  • Inconvénients
  • Visualiseurs peu fiables (norme pas assez
    précise)
  • Mauvais mélange description / programmation
  • Mono-utilisateur
  • Gestion des interactions uniquement avec
    lutilisateur
  • Seul laspect visuel est pris en compte

26
eXtensible 3D
27
Historique de X3D
  • Août 2004 (ISO) Format X3D (Soutenu par 3DLabs,
    Sony, ATI, ParallelGraphics, Blaxxun, et le Web3D
    Consortium)
  • Standard en constante évolution
  • Web3D travaille avec le W3C pour intégrer X3D aux
    langage XML du web
  • Le standard X3D est en passe de devenir la base
    de tout contenu MPEG-4 intégrant du contenu 3D

28
Apports de X3D
  • Les avantages de X3D
  • Extension facile des propriétés
  • Accès aux données (XQL/ XPATH)
  • Programmation simplifiée
  • Interopérabilité très intéressante
  • Utilisation des nouveaux librairies
  • Nouveaux nuds
  • Lecture et manipulation de vidéos
  • Les effets dombres
  • Visualisation du standard http//www.web3d.org/x
    3d/overview.html

3D
29
lt?xml version"1.0" encoding"UTF-8"?gt lt!DOCTYPE
X3D PUBLIC "ISO//Web3D//DTD X3D 3.0//EN"
"http//www.web3d.org/specifications/x3d-3.0.dtd"gt
ltX3D version'3.1' profile'Immersive' gt
ltScenegt ltColorInterpolator DEFXXX'
keyValue' 1 0 0, 0 1 0, 0 0 1, 1 0 0' key' 0.0
0.333 0.666 1.0'/gt ltTimeSensor DEF'myClock'
cycleInterval'10.0' loop'true'/gt ltShapegt
ltSphere/gt ltAppearancegt ltMaterial
DEF'myMaterial'/gt lt/Appearancegt lt/Shapegt
ltROUTE fromNode'myClock' fromField'fraction_ch
anged' toNodeXXX' toField'set_fraction'/gt
ltROUTE fromNodeXXX' fromField'value_changed'
toNode'myMaterial' toField'diffuseColor'/gt
lt/Scenegt lt/X3Dgt
3D
30
Java / Java3D
31
Historique de Java3D
  • 1995 le langage Java (Projet Oak)
  • 1997 la 3D émerge sur le web VRML
  • 1999 lapi de java3D avec OpenGL
  • 2000 version supportant DirectX
  • Caractéristiques
  • Domaines dapplications différents
  • Programmation avancée possible
  • Intégration au sein dapplications existantes
  • Mise en place plus lourde

32
Contenu de Java3D
  • Bibliothèque de programmation
  • Création de scènes
  • Manipulation des objets 3D
  • Rendu 3D complexe
  • Les packages
  • Base javax.media.j3d.
  • Utilitaires com.sun.j3d.utils.

33
Création dune scène
  • Créer
  • Un caneva 3D (zone daffichage)
  • Un univers (VirtualUniverse)
  • Un repère local (Locale) attaché à lUnivers
  • Construire un sous-graphe de visualisation
  • Créer une vue 3D (View) et une plate-forme de
    visualisation (ViewPlateform)
  • Mise en place du contexte physique
  • Attacher la plate-forme, le caneva 3D et contexte
    physique à la vue
  • Construire le sous graphe de contenu
  • Attacher les 2 sous-graphes au repère local

34
Organisation d'une scène Java3D
35
Exemple de code en Java3D
//Java standard API import java.awt.Frame import
java.awt.event.WindowEvent import
java.awt.event.WindowListener import
java.awt.BorderLayout //Java 3d API import
com.sun.j3d.utils.universe.SimpleUniverse import
javax.media.j3d.Canvas3D import
javax.media.j3d.BranchGroup import
javax.media.j3d.TransformGroup import
com.sun.j3d.utils.geometry.ColorCube //
classes nécessaires à la rotation import
javax.media.j3d.BoundingSphere import
javax.media.j3d.Alpha import javax.media.j3d.Rota
tionInterpolator
36
Suite du Code
public class rotAnim extends Frame implements
WindowListener public rotAnim()
super("- une rotation d'un simple cube -")
this.addWindowListener(this) setLayout(new
BorderLayout()) Canvas3D canvas3D new
Canvas3D(SimpleUniverse.getPreferredConfiguration(
)) add("Center", canvas3D) BranchGroup
scene createSceneGraph() scene.compile()
SimpleUniverse simpleU new
SimpleUniverse(canvas3D) simpleU.getViewingPlat
form().setNominalViewingTransform()
simpleU.addBranchGraph(scene)
37
// crée un regroupement d'objets contenant un
objet cube qui tourne // grâce au Transforme
groupe objSpin public BranchGroup
createSceneGraph() //on crée le Bg
principal BranchGroup objRootnew
BranchGroup() // on crée la rotation TransformG
roup objSpinnew TransformGroup() // permet de
modifier l'objet pendant l'exécution objSpin.setC
apability(TransformGroup.ALLOW_TRANSFORM_WRITE)
// on crée un fonction de rotation au cours du
temps Alpha rotationAlphanew Alpha(-1,4000) //
on crée un comportement qui va appliquer la
rotation a l'objet voulu RotationInterpolator
rotatornew RotationInterpolator(rotationAlpha,obj
Spin) // on définit la zone sur laquelle va
s'appliquer la rotation BoundingSphere
boundsnew BoundingSphere() rotator.setSchedulin
gBounds(bounds) objSpin.addChild(rotator) objR
oot.addChild(objSpin) // on crée un
cube objSpin.addChild(new ColorCube(0.5))// de
rayon 50 cm return objRoot ..initialisation
et exécution
38
Apports de Java3D
  • Avantages
  • API puissante liée à Java
  • Intégration de périphéries non standards
  • Nombreux exemples et possibilités
  • Chargeur VRML/X3D
  • Multi OS
  • Inconvénients
  • API complexe
  • Création lourde Beaucoup dobjets
  • Exécution lente
  • API non modifiable
  • Mauvaise distinction description/programmation

39
VRML/X3D et Java3D
  • Ressemblances
  • Structure de scène
  • Concepts des animations et interactions
  • Différences
  • VRML/X3D simple et extensible
  • Java3D très complète mais lourde
  • Description ou programmation
  • VRML Description
  • Java3D Programmation
  • X3D Description et programmation-
Write a Comment
User Comments (0)
About PowerShow.com