VRML - Spécifications
Référence Champs & Evénements
Version 2.0, ISO/IEC WD 14772
Introduction
Cette annexe décrit la syntaxe et le sens des types de données
des champs et événements utilisés par les blocs VRML
pour définir les objets. Les blocs sont composés de champs
et d'événements (voir le cours). Les types definis dans cette
annexes sont utilisés à la fois par les champs et les événements.
Il existe 2 sortes de champs, ceux contenant une seule valeur (qui
peut être un nombre ou un vecteur par exemple), et ceux contenant
plusieurs valeurs. Les champs contenant une unique valeur ont un nom commençant
par SF. Ceux pouvant contenir plusieurs valeurs
(multi-évalués) ont un nom commencant par MF.
Un champ multi-évalué spécifie une série
de valeurs comprise entre 2 crochets [ ] et
séparées par des espaces ou des virgules. Si le champ ne
contient aucune valeur, seuls les crochets [ ]
doivent être présents. La dernière valeur peut éventuellement
être suivie d'un espace ou d'une virgule. Si une unique valeur est
spécifiée, les crochets peuvent être omis. Toutes les
écritures suivantes sont valides pour un champ MF....
:
foo 1
foo [1,]
foo [ 1 ]
SFBool
Le type SFBool permet de spécifier
une valeur booléenne soit vraie (TRUE)
soit fausse (FALSE). Par exemple:
SpotLight
{
ambientIntensity
0.8
location
1 5 -1
on
FALSE
attenuation
0 0 1
cutOffAngle
1.5
beamWidth
0.8
}
La valeur par défaut d'un champ eventOut
SFBool est FALSE.
SFColor
/ MFColor
Le type SFColor permet de spécifier
un triplet RGB (Red-Green-Blue / Rouge-Vert-Bleu), et le type MFColor
permet de spécifier zéro ou plus triplets RGB. Une couleur
est écrite sous la forme d'un triplet de nombres en virgule flottante
dans des limites comprises entre 0.0 et 1.0 inclus. Par exemple:
Shape
{
geometry
IndexedLineSet {
coord
Coordinate {
point
[ -2 -2 2, -2 2 2, 2 2 2, 2 -2 2 ]
}
coordIndex
[ 0 1 -1, 1 2 -1, 2 3 -1, 3 0 ]
color
Color {
color
[
0
0 1, 0 1 0, 1 1 0, 0.2 0.4 0.8
]
}
}
}
La valeur par défaut d'un champ eventOut
SFColor est 0
0 0
La valeur par défaut d'un champ eventOut
MFColor est [
]
SFFloat
/ MFFloat
Le type SFFloat permet de spécifier
un nombre en virgule flottante simple précision, et MFFloat
de spécifier zéro ou plus nombres en virgule flottante. Ces
nombres respectent le format virgule flottante défini par le C ANSI.
Par exemple:
Shape {
appearance Appearance
{
material Material
{
ambientIntensity
0.4
diffuseColor 0.3
0.3 1.0
}
}
geometry Sphere {
}
}
La valeur par défaut d'un champ eventOut
SFFloat est 0.0
La valeur par défaut d'un champ eventOut
MFFloat est [
]
SFImage
Le type SFImage permet de spécifier
une image sur 2 dimensions de type bitmap. Une image est décrite
sous la forme de trois nombres entiers représentant la largeur,
la hauteur et le nombre de composantes de l'image, suivis par la valeur
en héxadécimal de chaque pixel. Par exemple :
texture PixelTexture
{
image
2 2 3
0x0000FF
0xFFFF00
0xFFFF00
0x0000FF
}
Voir le cours sur PixelTexture pour plus de détails.
La valeur par défaut d'un champ eventOut
SFImage est 0
0 0
SFInt32
/ MFInt32
Le type SFInt32 permet de spécifier
un nombre entier sur 32 bits, et MFInt32 de
spécifier zéro ou plus nombres entiers 32 bits. Ces nombres
peuvent être écrits sous forme décimale ou héxadécimale
(précédés par 0x). Par exemple:
Shape {
geometry IndexedLineSet
{
coord Coordinate {
point [ -2 -2 2, -2
2 2, 2 2 2, 2 -2 2 ]
}
coordIndex
[
0 1 -1, 1 2 -1, 2 3 -1, 3 0 ]
color Color {
color [
0 0 1, 0 1 0, 1 1 0,
1 0 0
]
}
}
}
La valeur par défaut d'un champ eventOut
SFInt32 est
0
La valeur par défaut d'un champ eventOut
MFInt32 est [
]
SFNode
/ MFNode
Le type SFNode permet de spécifier
un bloc VRML, et MFNode de spécifier
zéro ou plus blocs. Un bloc vide doit contenir la valeur NULL.
Par exemple:
Transform
{
translation 2 0 0
children
[
Shape
{
geometry
Box
{}
appearance
Appearance
{
}
}
]
}
La valeur par défaut d'un champ eventOut
SFNode est NULL
La valeur par défaut d'un champ eventOut
MFNode est [ ]
SFRotation
/ MFRotation
Le type SFRotation permet de spécifier
une rotation autour d'un axe quelconque, et MFRotation
permet de spécifier zéro ou plus rotations. Une valeur de
rotation s'écrit sous la forme de 4 nombres en virgule flottante
séparés par des espaces. Les 3 premières valeurs définissent
un vecteur normalisé représentant l'axe de rotation. Le quatrième
nombre définissant la valeur de l'angle de rotation exprimée
en radians. Par exemple:
geometry Extrusion {
solid FALSE
endCap FALSE
orientation
[0
1 0 0, 0 1 0 0.76]
scale
[1 1, 2 2]
crossSection
[
-1
1, -1 -1, 1 -1, 1 1, -1 1
]
spine [
]
}
Nous rapellons que pour transformer des degrés en radians il
faut effectuer l'opération :
(valeur_degrés * Pi) / 180 ou
bien valeur_degrés * 0.017
La valeur par défaut d'un champ eventOut
SFRotation est 0
0 1 0
La valeur par défaut d'un champ eventOut
MFRotation est [
]
SFString
/ MFString
Les types SFString et MFString
permettent de spécifier des chaines de caractères utilisant
le jeu de caractères UTF-8 (ISO/IEC
10646-1:1993, http://www.iso.ch/cate/d18741.html). SFString
permet de spécifier une chaine, et MFString
zéro ou plus chaines. Les chaines de caractères commencent
et finissent par des guillemets ("chaine"). Par exemple:
WorldInfo {
title
"Cours VRML : WorldInfo"
info
[
"Auteur
: KDO"
"Email
: kdo@infonie.fr"
"Copyright
: 1998 KDO"
]
}
La valeur par défaut d'un champ eventOut
SFString est ""
La valeur par défaut d'un champ eventOut
MFStringt est [
]
SFTime
/ MFTime
Le type SFTime permet de spécifier
un temps, et MFTime de spécifier zéro
ou plus temps. Un temps est un nombre en virgule flottante double précision
au format C ANSI. Ce nombre représente le temps écoulé
en secondes depuis une origine arbitraire. VRML considère que la
'création du monde' date du 1er Janvier 1970 à 00:00:00 GMT.
Cette date d'origine provient des systèmes UNIX. Par exemple :
DEF T_S TimeSensor {
cycleInterval 3
loop TRUE
startTime
1.0
stopTime
0.0
}
La valeur par défaut d'un champ eventOut
SFTime est -1
La valeur par défaut d'un champ eventOut
MFTime est [ ]
SFVec2f
/ MFVec2f
Le type SFVec2f permet de spécifier
un vecteur dans 2 dimensions. Le type MFVec2f
permet de spécifier zéro ou plus vecteurs dans 2 dimensions.
Un vecteur s'écrit sous la forme de 2 nombres en virgule flottante
séparés par des espaces. Par exemple:
geometry Extrusion {
solid FALSE
endCap FALSE
orientation [0 1 0 0,
0 1 0 0.76]
scale
[1
1, 2 2]
crossSection
[
-1
1, -1 -1, 1 -1, 1 1, -1 1
]
spine [
]
}
La valeur par défaut d'un champ eventOut
SFVec2f est 0
0
La valeur par défaut d'un champ eventOut
MFVec2f est [
]
SFVec3f
/
MFVec3f
Le type SFVec3f permet de spécifier
un vecteur dans 3 dimensions. Le type MFVec3f
permet de spécifier zéro ou plus vecteurs dans 3 dimensions.
Un vecteur s'écrit sous la forme de 3 nombres en virgule flottante
séparés par des espaces. Par exemple:
Transform {
scale 1.2
1. 0.80
children [
]
}
La valeur par défaut d'un champ eventOut
SFVec3f est 0
0 0
La valeur par défaut d'un champ eventOut
MFVec3f est [
]