Title: Les langages de descriptions 3D
1Les langages de descriptions 3D
Mars 2006
Mastères Créations et Productions Multimédias
Eric.Varadaradjou_at_enst.fr
http//www.enst.fr/varadara/VRML
2Description 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
3Pourquoi 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
4Virtual Reality Modeling Language
5Historique 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
6Introduction
- 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,
7Introduction 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
8Structure 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.
9Geometry
Apparence
Geometry
Geometry
10Structure 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.)
11Principaux 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
13Principaux 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
15Les lumières
3D
16Divers 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
17Animation 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
18VRML 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
19Interactions
- 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
20VRML 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
21Diverses 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/
22Exemple 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 "
23Group 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
24Transform 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
25Critique 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
26eXtensible 3D
27Historique 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
28Apports 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
29lt?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
30Java / Java3D
31Historique 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
32Contenu 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.
33Cré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
34Organisation d'une scène Java3D
35Exemple 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
36Suite 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
38Apports 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
39VRML/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-