TITLE: Fireworks at the
grandstand
Clarke, Patrick
This project incorporated many facets of the Virtual Reality Modeling Language. Heavy use of interpolators allows the fireworks to come alive in this simulation. Textures make the scenes more realistic.
The first obstacle in creating this world was to test whether creating realistic fireworks (trajectory, color, explosion…) is feasible with VRML. I began with a rocket shape (though nothing like a true fireworks shell) and began working on the arcing trajectory.

The trajectory should accelerate vertically and then arc down and after it has fallen a small percentage from the total height, the explosion occurs. To enter this trajectory as a smooth translation, I implemented the keyvalues of the positionInterpolator via MATLAB. After creating the trajectory of the shell, I needed to explode it into several pieces and have them glow and follow a natural trajectory as well. This is where things difficult to implement. I concluded that two things must occur to match real fireworks: (1) the rocket (shell) must disappear and (2) the stars[1] must appear. And when the stars appeared, they must have a trajectory of their own as well. The trajectory was once again calculated using MATLAB. To implement the shell’s disappearance, I routed a scalar interpolator to the shell. At the time of the explosion, the shell would literally shrink itself into non-existence. The stars appearance during the explosion was similar, but trickier. The stars where coded as children on the rocker transform and linked to a scalar interpolator as well. In actuality, the stars travel with rocket from pre-fired up to the explosion point scaled at zero. When the explosion occurs, the stars scale makes them “grow” and appear as a natural part of the explosion. Once the stars were scaled properly, next came the matter of color. The color of a shell is extremely relevant for any fireworks display. Many shells have special stars that change color as they burn. To simulate this effect, a color interpolator was introduced.
To fire the shells, I created a “pyro board” for firing each individual shell, by pressing the particular button. I also created a touchsensor button at the center tunnel to set off all the shells off at once.
Another pyro device was implemented using scalar, and color interpolators are the flame projectors on the boardwalk at the edge of the water.

These pieces were placed in mortars and all fired at the same time by the pyro board in the booth.

Next, the scene needed to be created. The fireworks display needed a venue. I designed my theater based upon the Great Lake Grandstand at Six Flags Great Adventure. The stands include two staircases and a sound/pyro booth. The Grandstands were lighted with several point sources through the roof. Textures were added to match closely that of the real Grandstand.

The hardware implementation involved routing data from the 5DT Data Glove into the simulation. By extending the thumb completely, the “robot” was translated along the positive x-axis. When the thumb is contracted, the “robot” was translated in the other direction in the negative x-axis. The index finger was used to control the robot’s z translation. The raw data of the glove was processed by vrmlscripts to extract the appropriate translation values and routed to the robot.
DEF GetXdata_Thumb
Script {
eventIn SFFloat Thumb_value
eventIn SFVec3f Current
eventOut
SFVec3f ChangeInX
field
SFVec3f dummy 0 0 0
url "vrmlscript:
function
Current (dtrans,ts)
{
dummy[0]
= dtrans[0];
dummy[1]
= dtrans[1];
dummy[2]
= dtrans[2];
}
function
Thumb_value (xtrans,ts)
{
if
(xtrans< 0.1)
{
ChangeInX[0]
= dummy[0]+1;
ChangeInX[1]
= dummy[1];
ChangeInX[2]
= dummy[2];
}
if
(xtrans >0.9)
{
ChangeInX[0]
= dummy[0]-1;
ChangeInX[1] = dummy[1];
ChangeInX[2]
= dummy[2];
}
}
"
}
[1] A star is a component of a fireworks shell. Stars are the burning, streaking portions of an exploded shell.