X3D - regroupement et transformations
Cet article est en construction: un auteur est en train de le modifier.
En principe, le ou les auteurs en question devraient bientôt présenter une meilleure version.
Introduction
Un fichier X3D fonctionne comme un "arbre". Dans ce type de fichier, on retrouve les concepts de noeuds parents et noeuds enfants.
Le regroupement des nœuds organisent des objets dans X3D. Pour cela, il existe plusieurs possibilités:
- Group et StaticGroup: regroupe des noeuds ensemble.
- Transform : c'est probablement le noeud le plus important. Il contrôle la position, l'orientation et l'échelle (scale) des noeuds enfants.
- Inline: ce noeud permet d'importer d'autres objets X3D (scene).
- LOD (level of detail): ce noeud fournit différents niveaux de qualité géométrique selon le point de vue de l'utilisateur (proche ou éloigné).
- Switch: ce noeud peut être utilisé pour changer facilement le contenu d'une scène ou pour cacher certains nœuds
- Anchor: ce noeud permet de d'insérer des liens URL vers une autre scène de X3D ou une autre page dans un navigateur Web. En cliquant sur l'ancre, le contenu est remplacé par un autre contenu.
- Billboard: ce noeud de groupement qui peut contenir plusieurs noeuds. En clair, imaginons un contenu faisant face à un utilisateur. Ce noeud permet de définir un axe autour duquel l'objet fera des rotations.
- Collision: Le nœud de collision est un nœud de regroupement qui spécifie les propriétés de détection de collision pour les noeuds enfants. Les noeuds de collision peuvent être utilisés pour générer des événements lorsque le spectateur et les objets entrent en collision. Ils peuvent aussi être utilisés pour désigner que certains objets ne doivent pas être considérés comme étant soumis à la détection de collision.
Regroupement (grouping)
Le noeud Group recueille les noeuds ayant un but connexe. Souvent, ces nœuds sont proches les uns des autres dans l'espace 3D.
Si un DEF (DEF defini un ID unique pour le noeud), le groupe de noeuds peut être réutilisés. (voir en:X3D shape and geometry).
Ci dessous, voici un exemple de scène faite avec seulement 3 formes. Nous définissons une maison avec un cube et le cylindre que nous réutilisons deux fois.
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE X3D PUBLIC "ISO//Web3D//DTD X3D 3.2//EN" "../../schemas/x3d-3.2.dtd">
<X3D profile='Interchange' version='3.1' xmlns:xsd='http://www.w3.org/2001/XMLSchema-instance' xsd:noNamespaceSchemaLocation='http://www.web3d.org/specifications/x3d-3.1.xsd'>
<head>
<meta content='house.x3d' name='title'/>
<meta content='Example for Group node' name='description'/>
</head>
<Scene>
<!-- Creation d'un fond blanc pour l'impression -->
<Background skyColor='0.9 0.9 0.9'/>
<!-- Definir une maison: un cube avec un cône sur le dessus -->
<Group DEF='House'>
<Transform translation="0 1 0">
<Shape>
<Appearance>
<Material diffuseColor='1 1 0'/>
</Appearance>
<Box/>
</Shape>
</Transform>
<Transform translation="0 2.5 0">
<Shape DEF='Roof'>
<Appearance>
<Material diffuseColor='1 0 0'/>
</Appearance>
<Cone bottomRadius="2" height="1">
</Cone>
</Shape>
</Transform>
</Group>
<!-- Réutilisation: réduction de la forme et positionnement sur le dessus de la maison -->
<Transform translation="0 2.5 0" scale="0.5 0.5 0.5">
<Shape USE="House"/>
</Transform>
<!-- Réutilisation : compresser la forme et la mettre à côté -->
<Transform translation="3.5 0 0" scale="1.0 0.5 0.5">
<Shape USE="House"/>
</Transform>
<Inline Center="0.0 0.0 0.0" bboxSize="10.5 10.5 10.5" url="../common/coordinates.x3d"/>
<Transform translation="0 -0.05 0">
<Shape DEF="floor">
<Appearance>
<Material diffuseColor='0 1 0'/>
</Appearance>
<Cylinder height="0.1" radius="5"/>
</Shape>
</Transform>
<Inline url='"../common/coordinates.x3d" "http://tecfa.unige.ch/guides/x3d/ex/common/coordinates.x3d"'/>
</Scene>
</X3D>
Transformations
Le noeud Transform est un noeud de regroupement qui permet de définir les coordonnées (axe X, Y, Z) des noeuds enfants. En clair, ce noeud offre la possibilité de faire des translations, des rotations et des mises à l'échelle.
La racine d'une scène graphique ainsi que toutes les formes que vous créez dans X3D se réfèrent X3D est toujours aux coordonnées (0 0 0). Gràce au noeud Transform , vous pouvez transférer le système de coordonnées d'origine vers un autre système de coordonnées que vous définissez.
- Exemple: si vous souhaitez créer deux cubes l'un à côté de l'autre avec la Shape Box, l'un des deux cubes devra être défini à l'intérieur d'une balise Transform.
Dans X3dom documentation, on peut lire :
- La balise center défini le décalage par rapport au système de coordonnées initial (0,0,0)
- La balise Rotation défini la rotation du système de coordonnées
- La balise Scale spécifie l'échelle du système de coordonnées. Les valeurs de l'échelle peuvent être positive, négative ou égale à zéro (la valeur zéro indique que toute la géométrie du noeud enfant ne doit pas être affiché).
- La balise Scale orientation spécifie la rotation du système de coordonnées avant de procéder au redimensionnement. L'orientation ne s'applique qu'à l'échelle définie.
Translations
Lien X3Dom documentation: http://doc.x3dom.org/ Tutoriels de Brutzman
catégorie