VRML Script Tutorial Full list VRML Interactive Tutorial
Introduction
Hierarchical Node Structures
Defining and Instancing Nodes Defining Levels of Detail Events in VRML
|
|
|
The eventOut fraction_changed of this node can be routed to the eventIn set_point of a Coordinate node defined in any of the following nodes: IndexedFaceSet, IndexedLineSet, or PointSet.
The number of keyValue entries must be equal to the number of keys provided times the number of points specified in the field coord, i.e. for each key specified there must be as many values as points in the coord field to which the fraction_changed eventOut is routed to. Note that by value it is meant a 3D coordinate.
This interpolator can be used to create morphs between shapes, moving lines or points.
A complete example is now presented. A single square face is drawn in an IndexedFaceSet. The interpolator will be used to morph this square face to a trapezoid face, and back again. The cycle is repeated forever.
First one needs the to define a Group with a IndexedFaceSet, a TimeSensor, and a CoordinateInterpolator.
#VRML V2.0 utf8
Group {
Now the only thing which is missing is routing the events.
We need to get the eventOut fraction_changed generated by the TimeSensor. This event outputs a value between 0 and 1. We can use this value to set a key for the interpolator by routing the fraction_changed eventOut from the TimeSensor to the set_fraction eventIn from the interpolator.
A new fraction being set in an interpolator causes the keyValue to be changed. As a consequence the interpolator will generate the fraction_changed eventOut. Because the interpolator used is a CoordinateInterpolator, this event outputs a list of 3D coordinate value.
Finally we use this eventOut to change the Coordinate node inside the IndexedFaceSet node. Because the point field in a Coordinate node is an exposed field we can use the eventIn set_point to change it. To do this we route the fraction_changed eventOut of the CoordinateInterpolator to the set_point eventIn of the Coordinate node.
The ROUTE statements to do this are: