Introducing VRML
boxes.wrl
#VRML V2.0 utf8
#
# Tumbling Boxes
# boxes.wrl
# by David R. Nadeau
#
# This world builds a batch of perpetually tumbling boxes.
#
WorldInfo {
title "Tumbling Boxes"
info [ "Copyright (c) 1997, David R. Nadeau" ]
}
Viewpoint {
position 0.0 0.0 10.0
description "Entry view"
}
NavigationInfo {
type [ "EXAMINE", "ANY" ]
headlight TRUE
}
Background {
skyColor [
0.0 0.0 0.0,
0.0 0.0 0.0,
0.0 0.8 0.2,
0.0 0.0 0.0,
]
skyAngle [
1.37
1.57,
1.77,
]
}
#
# Since we need multiple tumbling shapes, create a generic
# tumble group to automatically tumble any given group of
# shapes.
#
PROTO TumbleGroup [
field MFNode children [ ]
field SFTime xTumbleInterval 3.0
field SFTime yTumbleInterval 1.0
field SFTime zTumbleInterval 5.0
] {
DEF XRot Transform {
children DEF YRot Transform {
children DEF ZRot Transform {
children IS children
}
}
}
DEF XClock TimeSensor {
cycleInterval IS xTumbleInterval
loop TRUE
startTime 1.0
stopTime 0.0
}
DEF YClock TimeSensor {
cycleInterval IS yTumbleInterval
loop TRUE
startTime 1.0
stopTime 0.0
}
DEF ZClock TimeSensor {
cycleInterval IS zTumbleInterval
loop TRUE
startTime 1.0
stopTime 0.0
}
DEF XRotIt OrientationInterpolator {
key [ 0.0, 0.25, 0.5, 0.75, 1.0 ]
keyValue [
1.0 0.0 0.0 0.0,
1.0 0.0 0.0 1.57,
1.0 0.0 0.0 3.14,
1.0 0.0 0.0 4.71,
1.0 0.0 0.0 6.28,
]
}
DEF YRotIt OrientationInterpolator {
key [ 0.0, 0.25, 0.5, 0.75, 1.0 ]
keyValue [
0.0 1.0 0.0 0.0,
0.0 1.0 0.0 1.57,
0.0 1.0 0.0 3.14,
0.0 1.0 0.0 4.71,
0.0 1.0 0.0 6.28,
]
}
DEF ZRotIt OrientationInterpolator {
key [ 0.0, 0.25, 0.5, 0.75, 1.0 ]
keyValue [
0.0 0.0 1.0 0.0,
0.0 0.0 1.0 1.57,
0.0 0.0 1.0 3.14,
0.0 0.0 1.0 4.71,
0.0 0.0 1.0 6.28,
]
}
ROUTE XClock.fraction_changed TO XRotIt.set_fraction
ROUTE YClock.fraction_changed TO YRotIt.set_fraction
ROUTE ZClock.fraction_changed TO ZRotIt.set_fraction
ROUTE XRotIt.value_changed TO XRot.set_rotation
ROUTE YRotIt.value_changed TO YRot.set_rotation
ROUTE ZRotIt.value_changed TO ZRot.set_rotation
}
TumbleGroup {
children DEF Block Shape {
appearance Appearance {
material Material { }
texture ImageTexture { url "brtsky.jpg" }
}
geometry Box { size 4.0 4.0 4.0 }
}
xTumbleInterval 27.0
yTumbleInterval 13.0
zTumbleInterval 45.0
}
TumbleGroup {
children USE Block
xTumbleInterval 29.0
yTumbleInterval 31.0
zTumbleInterval 25.0
}
TumbleGroup {
children USE Block
xTumbleInterval 38.0
yTumbleInterval 27.0
zTumbleInterval 43.0
}