6.6 - Rotas
Rotas
são usadas para definir caminhos de saída de um evento
para entrada em outro.
............DEF
Clock TimeSensor {
..................cycleInterval
4.0
..................loop
TRUE
............},
............DEF
CubePath PositionInterpolator {
..................key
[
........................0.00,
0.11, 0.17, 0.22,
........................0.33,
0.44, 0.50, 0.55,
........................0.66,
0.77, 0.83, 0.88,
........................0.99
..................]
..................keyValue
[
........................0.0
0.0 0.0, 1.0 1.96 1.0,
........................1.5
2.21 1.5, 2.0 1.96 2.0,
........................3.0
0.0 3.0, 2.0 1.96 3.0,
........................1.5
2.21 3.0, 1.0 1.96 3.0,
........................0.0
0.0 3.0, 0.0 1.96 2.0,
........................0.0
2.21 1.5, 0.0 1.96 1.0,
........................0.0
0.0 0.0
..................]
............}
ROUTE
Clock.fraction_changed TO CubePath.set_fraction
ROUTE CubePath.value_changed TO Cube.set_translation
Foram
defindos dois objetos: Clock e CubePath a partir dos nós TimeSensor
e PositionInterpolator. Depois foi criada uma rota entre os dois campos
do sensor. Os valores de frações de tempo produzidos
pelo nó Clock são enviados como entrada para o nó
CubePath. Com a combinação de tais frações
com os valores de tempo descritos no campo key do nó CubePath
são associados com posições declaradas no keyValue,
que devem ser enviadas para o nó de controle das transformações
geométricas, animando dessa forma o cubo.
Exemplo 52: - Animação 5
#VRML
V2.0 utf8
DEF ES Transform {
translation -4 0 0
children Shape {
appearance Appearance {
material Material{
diffuseColor 0 0 1
}
}
geometry Box {
size 1 1 1
}
}
}
DEF PI PositionInterpolator {
key [0 0.25 0.5 0.75 1]
keyValue [-4 0 0, 0 0 0, 4 0 0, 0 0 0, -4 0 0]
}
DEF OI OrientationInterpolator {
key [0 0.25 0.50 0.75 1]
keyValue [0 0 1 0, 0 0 1 -3.14, 0 0 1 -6.28, 0 0 1 -3.14, 0 0 1 0]
}
DEF TS TimeSensor {
# loop TRUE
cycleInterval 5
}
DEF Touch TouchSensor {}
ROUTE Touch.touchTime TO TS.startTime
ROUTE TS.fraction_changed TO PI.set_fraction
ROUTE PI.value_changed TO ES.translation
ROUTE TS.fraction_changed TO OI.set_fraction
ROUTE OI.value_changed TO ES.rotation
Exemplo 53: - Animação 6
DEF ES Transform {
translation -4 0 0
children Shape {
appearance Appearance {
material Material{
diffuseColor 0 0 1
}
}
geometry Box {
size 1 1 1
}
}
}
DEF PI PositionInterpolator {
key [0 0.25 0.5 0.75 1]
keyValue [ -4 0 0, 0 0 0, 4 0 0, 0 0 0, -4 0 0]
}
DEF OI OrientationInterpolator {
key [0 0.25 0.50 0.75 1]
keyValue [ 0 0 1 0, 0 0 1 -3.14, 0 0 1 -6.28, 0 0 1 -3.14, 0 0 1 0]
}
DEF SI PositionInterpolator{
key [ 0 0.25 0.5 0.75 1 ]
keyValue [ 1 1 1 3 3 3 5 5 5 3 3 3 1 1 1 ]
}
DEF TS TimeSensor {
# loop TRUE
cycleInterval 5
}
DEF Touch TouchSensor {}
ROUTE Touch.touchTime TO TS.startTime
ROUTE TS.fraction_changed TO PI.set_fraction
ROUTE PI.value_changed TO ES.translation
ROUTE TS.fraction_changed TO OI.set_fraction
ROUTE OI.value_changed TO ES.rotation
ROUTE TS.fraction_changed TO SI.set_fraction
ROUTE SI.value_changed TO ES.scale