« X3D - regroupement et transformations » : différence entre les versions

De EduTech Wiki
Aller à la navigation Aller à la recherche
Ligne 96 : Ligne 96 :
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.
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).  
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.


Transformer les nœuds peut se traduire par une origine locale à une autre coordonnée. Par exemple. si vous souhaitez créer deux cubes les uns à côté avec le Shape Box, l'un des deux doit être définie à l'intérieur d'une transformation


Ces nouvelles coordonnées peuvent
Ces nouvelles coordonnées peuvent

Version du 19 avril 2016 à 11:02

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.

X3d-house.jpg


<?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.


Ces nouvelles coordonnées peuvent

Translations

Lien X3Dom documentation: http://doc.x3dom.org/ Tutoriels de Brutzman

catégorie