VRML & X3D
Exemple de fichier
Fichier VRML
Fichier VRML
Voici le code VRML permettant de réaliser l'image dynamique 3D ci-dessus :
On définit le fond de la scène, on précise, tout simplement, la couleur du ciel. En VRML, Toutes les couleurs sont décrites par trois composantes :
- Rouge Vert Bleu
0 0 0 = noir
1 1 1 = blanc
Ici, on a du bleu foncé
Background { skyColor 0 0.1 0.4 }
On donne quelques informations générales de navigation.
Ici, on défini la façon dont on va visualiser l'objet. "Examine", signifie que l'on va pouvoir tourner autour de l'objet pour voir ses différentes caractéristiques.
NavigationInfo { type "EXAMINE"}
Ici, nous allons définir un objet Text qui s'appelera MainTransform.
DEF MainTransform Transform {
On va également pouvoir tourner le cube selon l'axe de rotation définie.
rotation 0 1 12 0
On va placer notre texte selon un axe X, Y, Z :
X = 0
Y = 0,9
et Z = 0
translation 0 .9 0
Nous allons maintenant définir la forme.
children [
Shape {
Notre objet est un objet texte, qui possede la chaine de caractère "Hello World" et dont les caractéristiques sont qu'il sera centré, gras, de taille 0,9, et de police "Times".
geometry Text { string ["Hello World"] fontStyle FontStyle { justify ["MIDDLE", "MIDDLE"] family "Times" style "BOLD" size .9 } }
On va ensuite définir l'apparence de notre texte. Ce texte va bouger selon son axe de rotation, on va donc définir une couleur de base, une intensité, ainsi qu'une zone d'ombre.
appearance Appearance { material Material { diffuseColor .8 1 .8 ambientIntensity .3 shininess .3 } }
On oublie pas de refermer les balises.
} ] }
On va définir une orientation pour faire pivoter notre image. Voici les spécifications de la méthode OrientationInterpolator :
Type | Champ | Defaut | Borne | Utilisation |
SFFloat | set_fraction | eventIn | - | Lance le calcul d'une orientation, en fonction du tableau key |
MFFloat | key |
[] |
- | Tableau permettant de donner le temps écoulé entre deux keyValue |
MFRotation | keyValue | [] | - | Donne la liste des angles de rotation par lesquels doit passer l'objet |
SFRotation | value_changed | eventOut | - | Envoie l'orientation calculée en fonction du set_fraction |
DEF MainInterpolator OrientationInterpolator { key [ 0 0.5 1 ] keyValue [0 1 0 0 0 1 0 3.14 0 1 0 6.28] }
On définit ensuite un objet de time TimeSensor, qui va nous permettre de faire tourner l'objet en boucle, selon un interval de 5 secondes.
DEF MainTimer TimeSensor {
loop TRUE cycleInterval 5 }
Les chemins des événements sont décrits par la commande ROUTE. Cette commande est très importante lorsqu'on veut gérer des interactions dans la scène.
La syntaxe est la suivante :
ROUTE <nom du noeud>.<champ (field) ou événements (eventName)> TO <nom du noeud>.<champ (field) ou événements (eventName)>
ROUTE MainTimer.fraction_changed TO MainInterpolator.set_fraction ROUTE MainInterpolator.value_changed TO MainTransform.rotation