| Sommaire | Page precedente | Page suivante | page 18 |

Ils permettent de creer de nouveau types de noeuds a l'interieur d'un fichier vrml.
PROTO Clignote [
field MFColor couleurs 0 0 0 #champ couleurs
field SFTime temps 1 #champ temps
]
{
DEF M Material {}
DEF C ColorInterpolator {
keyValue IS couleurs
key [0 0.5 1]
}
DEF T TimeSensor {
enabled TRUE
loop TRUE
cycleInterval IS temps
}
ROUTE T.fraction_changed TO C.set_fraction
ROUTE C.value_changed TO M.diffuseColor
}
Transform {
children [
Shape {
appearance Appearance {
material Clignote { #on utilise le proto
couleurs [1 0 0,0 0 1] #rouge vers bleu
temps 2.0 #cycle de 2 secondes
}
geometry Sphere {}
}
}
]
}
sapin.wrl
Code source
PROTO nom_proto [
eventIn type nom
eventOut type nom
field type nom valeur_par_defaut
exposedField type nom valeur_par_defaut
]
Le type du proto est celui du premier noeud rencontre dans le corps.Dans l'exemple Material:
DEF M Material {} #type du proto
Dans le corps, on utilise IS pour attribuer les noms des variables
aux champs des noeuds utilises.
cycleInterval IS temps #associe cycleInterval a temps
On utilise le proto comme un noeud normal.Il peut etre utilise au memes endroits
que le premier noeud du corps.On peut le nomer avec DEF et le reutiliser avec USE.
nom_proto {
field valeur
field valeur
}
EXTERNPROTO nom [
eventIn type nom
eventOut type nom
field type nom
exposedFiled type nom
]
"addresse du externproto"
Contrairement au proto,l'externproto ne contient pas de corps mais l'addresse d'un proto.
Il ne contient pas non plus de valeur_par_defaut pour les fields et exposedFiels,
ceux-ci etant definis dans le fichier du proto.