Introduction a X3D Sebti Foufou 10/11/2006 1
Historique X3D est la 3e version de VRML Le VRML (Virtual Reality Modeling Langage ou Langage de Modélisation de la Réalité Virtuelle) est un langage qui permet la création et la diffusion de mondes virtuels et interactifs en 3d sur Internet. La norme VRML 1.0 sort en 1995. Les développeurs commencent à créer des mondes 3d statiques. Il connait un grand succès. VRML 2.0 ou VRML97 en 1997 : fonctions évoluées d'animations et d'interactions avec l'utilisateur, intégration de codes javascripts, accès aux données de la scène depuis l'extérieur (EAI) et les prototypes. Bien que le VRML97 soit un langage de description de mondes virtuels complet et puissant, il est assez difficile à maîtriser et pauvre en possibilités de rendu. 10/11/2006 2
Historique Le X3D Successeur du VRML97 Le X3D (extensible 3D) est un format destiné tant à l'importation qu'à l'exportation. L'objectif du X3D est d'être un langage évolutif, qui permet d'ajouter facilement de nouvelles fonctions aux scènes 3D. X3D est en fait VRML200x, c'est à dire VRML97 en XML, c'est pourquoi il garde une entière comptabilité avec le VRML2.0. Les fichiers VRML97 seront entièrement lisibles sur un navigateur X3D. 10/11/2006 3
Structure d un fichier VRML #VRML V2.0 utf8 Group { children [ Shape { geometry Box { Shape { geometry Cone { ] Group { children Shape { geometry Sphere { 10/11/2006 4
Structure d un ficher VRML VRML V2.0 utf8 Transform { translation -3 0 0 children Shape { appearance Appearance { texture PixelTexture { image 3 3 3 0xffffff 0xffffff 0xffffff 0xff0000 0x00ff00 0x0000ff 0x111111 0x111111 0x111111 material Material { diffusecolor 1 0 0.5 ambientintensity 0.3 specularcolor 0.2 0.6 0.2 emissivecolor 0.2 0 0.1 shininess 0.5 transparency 0.3 geometry Sphere {radius 2 C est une structure en arborescence 10/11/2006 5
Structure d un fichier X3D Header: une seule ligne UTF-8 identifiant le fichier comme un fichier XML <?xml version="1.0" encoding="utf-8"?> DOCTYPE : donne le lien vers la DTD standard de X3D <!DOCTYPE X3D PUBLIC "ISO//Web3D//DTD X3D3.0//EN" "http://www.web3d.org/specific ations/x3d-3.0.dtd"> 10/11/2006 6
Premier Exemple <X3D profile='immersive'> <head> <component name='geospatial'/> <component name='nurbs' level='2'/> <meta name='description' content='x3d scene header and prototype syntax examples. '/> <meta name='filename content= examples.x3d'/> </head> <Scene> <!-- Scene graph nodes are added here --> </Scene> </X3D> 10/11/2006 7
Profiles X3D 10/11/2006 8
Compatibilité VRML/X3D X3D est entièrement compatible avec le VRML 2.0. Toutes les fonctions du VRML 2.0 sont donc gardées dans X3D. Fonctions séparées en deux profils différents pour des raisons de modalité: X3D-1 permet de décrire une scène et de l'animer X3D-2 intègre les fonctions de scripting Avec le X3D, une entreprise désirant développer un logiciel n'affichant que des scènes simples dépourvues d'interactivité peut tout de même utiliser le X3D, en n'implémentant que le profile X3D-1. 10/11/2006 9
Un autre exemple <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE X3D PUBLIC "http://www.web3d.org/taskgroups/x3d/translation/x3ddraft.dtd""file://localhost/c:/www.web3d.org/taskgroups/x3d/translation /x3d-draft.dtd"> < X3D> < Header> < meta name="file" content="helloworld.x3d"/> < meta name="author" content="*enter name here*"/> < meta name="revised" content="9 Feb 2000"/> < meta name="description" content="simplist World"/> < meta name="url" content="*enter url address here*"/> < meta name="generator" content="x3d-edit, http://www.web3d.org/taskgroups/x3d/translation/readme.x3d- Edit.txt"/> < /Header> 10/11/2006 10
< Scene> < Transform> < Shape> < Appearance> < Material diffusecolor="0 0 1"/> < /Appearance> < IndexedFaceSet coordindex="0 1 2 3 0-1"> < Coordinate point="-1.5-1 0, 1.5-1 0, 1.5 1 0, -1.5 1 0"/> < /IndexedFaceSet> < /Shape> < /Transform> < /Scene> < /X3D> 10/11/2006 11
implementation Principalement trois navigateurs fiables supportant X3D: Xj3D un navigateur Java Flux an Active-X plugin a utiliser en mode Standalone ou avec Internet Explorer ou autres navigateurs Web. Contact, un plugin pour Internet Explorer développé par Bitmanagement Software GmbH. Des éditeurs de fichiers X3D sont également disponibles. 10/11/2006 12
DTD et nœuds X3D La racine <!ELEMENT X3D ( head?, Scene ) > <!ATTLIST X3D profile (Core Interchange Interactive Immersive MPEG4 Full) #IMPLIED version CDATA #FIXED "3.0"> L entête <!ELEMENT head ( component*, meta* ) > deux elements component et meta L élément meta <!ELEMENT meta EMPTY> <!ATTLIST meta http-equiv CDATA #IMPLIED name CDATA #REQUIRED content CDATA #REQUIRED scheme CDATA #IMPLIED %i18n; > 10/11/2006 13
L élément scene <!ELEMENT Scene ( %ChildrenNodes; %WildcardNodes; )* > Contient l essentiel du fichier X3D en définissant la scène. Exemple d instance: <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE X3D PUBLIC "ISO//Web3D//DTD X3D 3.0//EN" "http://www.web3d.org/specifications/x3d- 3.0.dtd"> <X3D profile="immersive" > <head> <meta content="simple X3D example" name="description"/> </head> <Scene>... </Scene> </X3D> 10/11/2006 14
L élément shape <!ELEMENT Shape (IS?, ( ( (%AppearanceNodes;), (( %GeometryNodes; ) %WildcardNodes;)? ) ( ( %GeometryNodes; ), ((%AppearanceNodes;) %WildcardNodes;)? ) ( %WildcardNodes;, (( %GeometryNodes; ) (%AppearanceNodes;) %WildcardNodes;)? ) )? ) > Exemple de géométrie: l élément sphere <!ELEMENT Sphere (IS?) > <!ATTLIST Sphere radius %SFFloat; "1" containerfield NMTOKEN "geometry" class CDATA #IMPLIED DEF ID #IMPLIED USE IDREF #IMPLIED> 10/11/2006 15
L élément apparence <Shape> <Sphere/> <Appearance DEF='RED'> <Material diffusecolor='1 0 0'/> </Appearance> </Shape> ImageTexture de appearence <Shape> <Sphere/> <Appearance DEF='RED'> <ImageTexture url="earth-topo.png"/> </Appearance> </Shape> 10/11/2006 16
Le point de vue <Viewpoint description="the World" orientation="0 1 0 1.57" position="10 0 0"/> <Viewpoint description="closer" orientation="0 1 0 1.57" position="6 0 0"/> <Viewpoint description="near" orientation="0 1 0 1.57" position="2 0 0"/> <Viewpoint description="heart of Darkness" orientation="0 1 0 1.57" position="0 0 0"/> 10/11/2006 17
<?xml version="1.0" encoding="utf-8"?> <!DOCTYPE X3D PUBLIC "ISO//Web3D//DTD X3D 3.0//EN" "http://www.web3d.org/specifications/x3d-3.0.dtd"> <X3D profile="immersive" xmlns:xsd="http://www.w3.org/2001/xmlschema-instance" xsd:nonamespaceschemalocation="http://www.web3d.org/specifications/x3d- 3.0.xsd"> <head> <meta name='filename' content='redspherebluebox.x3d'/> </head> <Scene> <Transform> <NavigationInfo headlight='false' avatarsize='0.25 1.6 0.75' type='examine'/> <DirectionalLight/> <Transform translation='3.0 0.0 1.0'> <Shape> <Sphere radius='2.3'/> <Appearance> <Material diffusecolor='1.0 0.0 0.0'/> </Appearance> </Shape> 10/11/2006 18
</Transform> <Transform translation='-2.4 0.2 1.0' rotation='0.0 0.707 0.707 0.9'> <Shape> <Box/> <Appearance> <Material diffusecolor='0.0 0.0 1.0'/> </Appearance> </Shape> </Transform> </Transform> </Scene> </X3D> 10/11/2006 19