X3D Model Documentation: Colors.x3d

  1  <?xml version="1.0" encoding="UTF-8"?>
  2  <!DOCTYPE X3D PUBLIC "ISO//Web3D//DTD X3D 3.3//EN" "https://www.web3d.org/specifications/x3d-3.3.dtd">
  3  <X3D profile='Interactive' version='3.3 xmlns:xsd='http://www.w3.org/2001/XMLSchema-instance' xsd:noNamespaceSchemaLocation='https://www.web3d.org/specifications/x3d-3.3.xsd'>
  4       <head>
  5            <meta name='titlecontent='Colors.x3d'/>
  6            <meta name='descriptioncontent='This scene presents some colorful frames. See the source comments regarding animation details.'/>
  7            <meta name='creatorcontent='David R. Nadeau'/>
  8            <meta name='translatorcontent='Don Brutzman'/>
  9            <meta name='createdcontent='1 July 1998'/>
 10            <meta name='translatedcontent='2 February 2014'/>
 11            <meta name='modifiedcontent='20 October 2019'/>
 12            <meta name='referencecontent='originals/colors.wrl'/>
 13            <meta name='referencecontent='http://www.siggraph.org/s98'/>
 14            <meta name='referencecontent='http://www.siggraph.org/s98/conference/courses/18.html'/>
 15            <meta name='referencecontent='http://www.sdsc.edu/~moreland/courses/Siggraph98/vrml97/slides/mt0073.htm'/>
 16            <meta name='referencecontent='http://www.sdsc.edu/~moreland/courses/Siggraph98/vrml97/slides/mt0130.htm'/>
 17            <meta name='referencecontent='http://www.sdsc.edu/~moreland/courses/Siggraph98/vrml97/slides/mt0167.htm'/>
 18            <meta name='referencecontent='http://www.sdsc.edu/~moreland/courses/Siggraph98/vrml97/vrml97.htm'/>
 19            <meta name='referencecontent='https://www.web3d.org/x3d/content/examples/X3dResources.html'/>
 20            <meta name='identifiercontent='https://www.web3d.org/x3d/content/examples/Vrml2Sourcebook/Siggraph98Course/Colors.x3d'/>
 21            <meta name='generatorcontent='Vrml97ToX3dNist, http://ovrt.nist.gov/v2_x3d.html'/>
 22            <meta name='generatorcontent='X3D-Edit, https://savage.nps.edu/X3D-Edit'/>
 23            <meta name='licensecontent='../license.html'/>
 24       </head>
<!--

<!--
Event Graph ROUTE Table shows event connections.
-->

<!-- to top Index for DEF nodes: Entry, Frame, Frame1, Frame2, Frame3, Frame4, Frame5, Frame6, Frame7, Frame8, Frame9, Rot1, Rot2, Rot3, Rot4, Rot5, Rot6, Rot7, Rot8, Rot9, Timer1, Timer2, Timer3, Timer4, Timer5, Timer6, Timer7, Timer8, Timer9, Touch

Index for Viewpoint node: Entry
-->
 25       <Scene>
 26            <!-- Orientation interpolators slowly spin 9 frames, each with a slightly different speed. At first there is a clear structure, but as the animation evolves the structure dissolves in to chaos. If you wait long enough, they'll all get back in sync again... after about 560 years! -->
 27            <!-- Things to experiment with: Try using other time keyValue for the rotation speed of the 9 squares. If the keyValue are multiples of a common factor, the squares will get in sync sooner than if they don't have a common factor. -->
 28            <WorldInfo info='"Copyright (c) 1996, David R. Nadeau"title='Colors'/>
 29            <Viewpoint DEF='Entrydescription='Entry viewposition='0.0 0.0 3.0'/>
 30            <NavigationInfo/>
 31            <Background/>
 32 
          <!-- ROUTE information for Frame1 node:  [from Rot1.value_changed to set_rotation ] -->
          <Transform DEF='Frame1'>
 33                 <Shape>
 34                      <Appearance>
 35                           <Material diffuseColor='1.0 0.0 0.0'/>
 36                      </Appearance>
 37 
                    <!-- IndexedFaceSet Frame is a DEF node that has 8 USE nodes: USE_1, USE_2, USE_3, USE_4, USE_5, USE_6, USE_7, USE_8 -->
                    <IndexedFaceSet DEF='FramecoordIndex='0 1 6 7 -1 1 2 17 16 -1 2 3 4 5 -1 19 18 5 6 -1 11 10 13 12 -1 10 9 20 21 -1 9 8 15 14 -1 22 23 14 13 -1 3 11 12 4 -1 4 12 15 7 -1 8 0 7 15 -1 0 8 11 3 -1 16 17 21 20 -1 21 17 18 22 -1 19 23 22 18 -1 16 20 23 19 -1'>
 38                           <Coordinate point='-1.0 -1.0 0.1 -0.9 -1.0 0.1 0.9 -1.0 0.1 1.0 -1.0 0.1 1.0 1.0 0.1 0.9 1.0 0.1 -0.9 1.0 0.1 -1.0 1.0 0.1 -1.0 -1.0 -0.1 -0.9 -1.0 -0.1 0.9 -1.0 -0.1 1.0 -1.0 -0.1 1.0 1.0 -0.1 0.9 1.0 -0.1 -0.9 1.0 -0.1 -1.0 1.0 -0.1 -0.9 -0.9 0.1 0.9 -0.9 0.1 0.9 0.9 0.1 -0.9 0.9 0.1 -0.9 -0.9 -0.1 0.9 -0.9 -0.1 0.9 0.9 -0.1 -0.9 0.9 -0.1'/>
 39                      </IndexedFaceSet>
 40                 </Shape>
 41            </Transform>
 42 
          <!-- ROUTE information for Frame2 node:  [from Rot2.value_changed to set_rotation ] -->
          <Transform DEF='Frame2translation='0.0 0.0 -0.4'>
 43                 <Shape>
 44                      <Appearance>
 45                           <Material diffuseColor='1.0 0.5 0.0'/>
 46                      </Appearance>
 47                      <IndexedFaceSet USE='Frame'/>
 48                 </Shape>
 49            </Transform>
 50 
          <!-- ROUTE information for Frame3 node:  [from Rot3.value_changed to set_rotation ] -->
          <Transform DEF='Frame3translation='0.0 0.0 -0.8'>
 51                 <Shape>
 52                      <Appearance>
 53                           <Material diffuseColor='1.0 1.0 0.0'/>
 54                      </Appearance>
 55                      <IndexedFaceSet USE='Frame'/>
 56                 </Shape>
 57            </Transform>
 58 
          <!-- ROUTE information for Frame4 node:  [from Rot4.value_changed to set_rotation ] -->
          <Transform DEF='Frame4translation='0.0 0.0 -1.2'>
 59                 <Shape>
 60                      <Appearance>
 61                           <Material diffuseColor='0.5 1.0 0.0'/>
 62                      </Appearance>
 63                      <IndexedFaceSet USE='Frame'/>
 64                 </Shape>
 65            </Transform>
 66 
          <!-- ROUTE information for Frame5 node:  [from Rot5.value_changed to set_rotation ] -->
          <Transform DEF='Frame5translation='0.0 0.0 -1.6'>
 67                 <Shape>
 68                      <Appearance>
 69                           <Material diffuseColor='0.0 1.0 0.0'/>
 70                      </Appearance>
 71                      <IndexedFaceSet USE='Frame'/>
 72                 </Shape>
 73            </Transform>
 74 
          <!-- ROUTE information for Frame6 node:  [from Rot6.value_changed to set_rotation ] -->
          <Transform DEF='Frame6translation='0.0 0.0 -2.0'>
 75                 <Shape>
 76                      <Appearance>
 77                           <Material diffuseColor='0.0 1.0 0.5'/>
 78                      </Appearance>
 79                      <IndexedFaceSet USE='Frame'/>
 80                 </Shape>
 81            </Transform>
 82 
          <!-- ROUTE information for Frame7 node:  [from Rot7.value_changed to set_rotation ] -->
          <Transform DEF='Frame7translation='0.0 0.0 -2.4'>
 83                 <Shape>
 84                      <Appearance>
 85                           <Material diffuseColor='0.0 1.0 1.0'/>
 86                      </Appearance>
 87                      <IndexedFaceSet USE='Frame'/>
 88                 </Shape>
 89            </Transform>
 90 
          <!-- ROUTE information for Frame8 node:  [from Rot8.value_changed to set_rotation ] -->
          <Transform DEF='Frame8translation='0.0 0.0 -2.8'>
 91                 <Shape>
 92                      <Appearance>
 93                           <Material diffuseColor='0.0 0.5 1.0'/>
 94                      </Appearance>
 95                      <IndexedFaceSet USE='Frame'/>
 96                 </Shape>
 97            </Transform>
 98 
          <!-- ROUTE information for Frame9 node:  [from Rot9.value_changed to set_rotation ] -->
          <Transform DEF='Frame9translation='0.0 0.0 -3.2'>
 99                 <Shape>
100                      <Appearance>
101                           <Material diffuseColor='0.0 0.0 1.0'/>
102                      </Appearance>
103                      <IndexedFaceSet USE='Frame'/>
104                 </Shape>
105            </Transform>
106 
107 
          <!-- ROUTE information for Timer1 node:  [from Touch.touchTime to set_startTime ] [from fraction_changed to Rot1.set_fraction ] -->
          <TimeSensor DEF='Timer1cycleInterval='10.0loop='truestartTime='-1.0'/>
108 
          <!-- ROUTE information for Timer2 node:  [from Touch.touchTime to set_startTime ] [from fraction_changed to Rot2.set_fraction ] -->
          <TimeSensor DEF='Timer2cycleInterval='11.0loop='truestartTime='-1.0'/>
109 
          <!-- ROUTE information for Timer3 node:  [from Touch.touchTime to set_startTime ] [from fraction_changed to Rot3.set_fraction ] -->
          <TimeSensor DEF='Timer3cycleInterval='12.0loop='truestartTime='-1.0'/>
110 
          <!-- ROUTE information for Timer4 node:  [from Touch.touchTime to set_startTime ] [from fraction_changed to Rot4.set_fraction ] -->
          <TimeSensor DEF='Timer4cycleInterval='13.0loop='truestartTime='-1.0'/>
111 
          <!-- ROUTE information for Timer5 node:  [from Touch.touchTime to set_startTime ] [from fraction_changed to Rot5.set_fraction ] -->
          <TimeSensor DEF='Timer5cycleInterval='14.0loop='truestartTime='-1.0'/>
112 
          <!-- ROUTE information for Timer6 node:  [from Touch.touchTime to set_startTime ] [from fraction_changed to Rot6.set_fraction ] -->
          <TimeSensor DEF='Timer6cycleInterval='15.0loop='truestartTime='-1.0'/>
113 
          <!-- ROUTE information for Timer7 node:  [from Touch.touchTime to set_startTime ] [from fraction_changed to Rot7.set_fraction ] -->
          <TimeSensor DEF='Timer7cycleInterval='16.0loop='truestartTime='-1.0'/>
114 
          <!-- ROUTE information for Timer8 node:  [from Touch.touchTime to set_startTime ] [from fraction_changed to Rot8.set_fraction ] -->
          <TimeSensor DEF='Timer8cycleInterval='17.0loop='truestartTime='-1.0'/>
115 
          <!-- ROUTE information for Timer9 node:  [from Touch.touchTime to set_startTime ] [from fraction_changed to Rot9.set_fraction ] -->
          <TimeSensor DEF='Timer9cycleInterval='18.0loop='truestartTime='-1.0'/>
116 
          <!-- ROUTE information for Rot1 node:  [from Timer1.fraction_changed to set_fraction ] [from value_changed to Frame1.set_rotation ] -->
          <OrientationInterpolator DEF='Rot1key='0.0 0.5 1.0keyValue='0.0 0.0 1.0 0.0 0.0 0.0 1.0 3.14 0.0 0.0 1.0 6.28'/>
117 
          <!-- ROUTE information for Rot2 node:  [from Timer2.fraction_changed to set_fraction ] [from value_changed to Frame2.set_rotation ] -->
          <OrientationInterpolator DEF='Rot2key='0.0 0.5 1.0keyValue='0.0 0.0 1.0 0.0 0.0 0.0 1.0 3.14 0.0 0.0 1.0 6.28'/>
118 
          <!-- ROUTE information for Rot3 node:  [from Timer3.fraction_changed to set_fraction ] [from value_changed to Frame3.set_rotation ] -->
          <OrientationInterpolator DEF='Rot3key='0.0 0.5 1.0keyValue='0.0 0.0 1.0 0.0 0.0 0.0 1.0 3.14 0.0 0.0 1.0 6.28'/>
119 
          <!-- ROUTE information for Rot4 node:  [from Timer4.fraction_changed to set_fraction ] [from value_changed to Frame4.set_rotation ] -->
          <OrientationInterpolator DEF='Rot4key='0.0 0.5 1.0keyValue='0.0 0.0 1.0 0.0 0.0 0.0 1.0 3.14 0.0 0.0 1.0 6.28'/>
120 
          <!-- ROUTE information for Rot5 node:  [from Timer5.fraction_changed to set_fraction ] [from value_changed to Frame5.set_rotation ] -->
          <OrientationInterpolator DEF='Rot5key='0.0 0.5 1.0keyValue='0.0 0.0 1.0 0.0 0.0 0.0 1.0 3.14 0.0 0.0 1.0 6.28'/>
121 
          <!-- ROUTE information for Rot6 node:  [from Timer6.fraction_changed to set_fraction ] [from value_changed to Frame6.set_rotation ] -->
          <OrientationInterpolator DEF='Rot6key='0.0 0.5 1.0keyValue='0.0 0.0 1.0 0.0 0.0 0.0 1.0 3.14 0.0 0.0 1.0 6.28'/>
122 
          <!-- ROUTE information for Rot7 node:  [from Timer7.fraction_changed to set_fraction ] [from value_changed to Frame7.set_rotation ] -->
          <OrientationInterpolator DEF='Rot7key='0.0 0.5 1.0keyValue='0.0 0.0 1.0 0.0 0.0 0.0 1.0 3.14 0.0 0.0 1.0 6.28'/>
123 
          <!-- ROUTE information for Rot8 node:  [from Timer8.fraction_changed to set_fraction ] [from value_changed to Frame8.set_rotation ] -->
          <OrientationInterpolator DEF='Rot8key='0.0 0.5 1.0keyValue='0.0 0.0 1.0 0.0 0.0 0.0 1.0 3.14 0.0 0.0 1.0 6.28'/>
124 
          <!-- ROUTE information for Rot9 node:  [from Timer9.fraction_changed to set_fraction ] [from value_changed to Frame9.set_rotation ] -->
          <OrientationInterpolator DEF='Rot9key='0.0 0.5 1.0keyValue='0.0 0.0 1.0 0.0 0.0 0.0 1.0 3.14 0.0 0.0 1.0 6.28'/>
125            < ROUTE  fromNode='Touch' fromField='touchTime' toNode='Timer1' toField='set_startTime'/>
126            < ROUTE  fromNode='Touch' fromField='touchTime' toNode='Timer2' toField='set_startTime'/>
127            < ROUTE  fromNode='Touch' fromField='touchTime' toNode='Timer3' toField='set_startTime'/>
128            < ROUTE  fromNode='Touch' fromField='touchTime' toNode='Timer4' toField='set_startTime'/>
129            < ROUTE  fromNode='Touch' fromField='touchTime' toNode='Timer5' toField='set_startTime'/>
130            < ROUTE  fromNode='Touch' fromField='touchTime' toNode='Timer6' toField='set_startTime'/>
131            < ROUTE  fromNode='Touch' fromField='touchTime' toNode='Timer7' toField='set_startTime'/>
132            < ROUTE  fromNode='Touch' fromField='touchTime' toNode='Timer8' toField='set_startTime'/>
133            < ROUTE  fromNode='Touch' fromField='touchTime' toNode='Timer9' toField='set_startTime'/>
134            < ROUTE  fromNode='Timer1' fromField='fraction_changed' toNode='Rot1' toField='set_fraction'/>
135            < ROUTE  fromNode='Timer2' fromField='fraction_changed' toNode='Rot2' toField='set_fraction'/>
136            < ROUTE  fromNode='Timer3' fromField='fraction_changed' toNode='Rot3' toField='set_fraction'/>
137            < ROUTE  fromNode='Timer4' fromField='fraction_changed' toNode='Rot4' toField='set_fraction'/>
138            < ROUTE  fromNode='Timer5' fromField='fraction_changed' toNode='Rot5' toField='set_fraction'/>
139            < ROUTE  fromNode='Timer6' fromField='fraction_changed' toNode='Rot6' toField='set_fraction'/>
140            < ROUTE  fromNode='Timer7' fromField='fraction_changed' toNode='Rot7' toField='set_fraction'/>
141            < ROUTE  fromNode='Timer8' fromField='fraction_changed' toNode='Rot8' toField='set_fraction'/>
142            < ROUTE  fromNode='Timer9' fromField='fraction_changed' toNode='Rot9' toField='set_fraction'/>
143            < ROUTE  fromNode='Rot1' fromField='value_changed' toNode='Frame1' toField='set_rotation'/>
144            < ROUTE  fromNode='Rot2' fromField='value_changed' toNode='Frame2' toField='set_rotation'/>
145            < ROUTE  fromNode='Rot3' fromField='value_changed' toNode='Frame3' toField='set_rotation'/>
146            < ROUTE  fromNode='Rot4' fromField='value_changed' toNode='Frame4' toField='set_rotation'/>
147            < ROUTE  fromNode='Rot5' fromField='value_changed' toNode='Frame5' toField='set_rotation'/>
148            < ROUTE  fromNode='Rot6' fromField='value_changed' toNode='Frame6' toField='set_rotation'/>
149            < ROUTE  fromNode='Rot7' fromField='value_changed' toNode='Frame7' toField='set_rotation'/>
150            < ROUTE  fromNode='Rot8' fromField='value_changed' toNode='Frame8' toField='set_rotation'/>
151            < ROUTE  fromNode='Rot9' fromField='value_changed' toNode='Frame9' toField='set_rotation'/>
152       </Scene>
153  </X3D>
<!--

<!--
Event Graph ROUTE Table shows event connections.
-->

<!-- to top Index for DEF nodes: Entry, Frame, Frame1, Frame2, Frame3, Frame4, Frame5, Frame6, Frame7, Frame8, Frame9, Rot1, Rot2, Rot3, Rot4, Rot5, Rot6, Rot7, Rot8, Rot9, Timer1, Timer2, Timer3, Timer4, Timer5, Timer6, Timer7, Timer8, Timer9, Touch

Index for Viewpoint node: Entry
-->
X3D Tooltips element index: Appearance, Background, Coordinate, head, IndexedFaceSet, Material, meta, NavigationInfo, OrientationInterpolator, ROUTE, Scene, Shape, TimeSensor, TouchSensor, Transform, Viewpoint, WorldInfo, X3D, accessType and type, XML data types, field types

Event Graph ROUTE Table entries with 27 ROUTE connections total, showing X3D event-model relationships for this scene.

Each row shows an event cascade that may occur during a single timestamp interval between frame renderings, as part of the X3D execution model.

This node has 9 outgoing ROUTEs, which is greater than $maxROUTEdepth=8
Touch
TouchSensor
touchTime
SFTime

ROUTE
event to
(1)
Timer1
TimeSensor
set_startTime
SFTime
then
 
 
 
Timer1
TimeSensor
fraction_changed
SFFloat

ROUTE
event to
(2)
Rot1
OrientationInterpolator
set_fraction
SFFloat
then
 
 
 
Rot1
OrientationInterpolator
value_changed
SFRotation

ROUTE
event to
(3)
Frame1
Transform
set_rotation
SFRotation
Touch
TouchSensor
touchTime
SFTime

ROUTE
event to
(1)
Timer2
TimeSensor
set_startTime
SFTime
then
 
 
 
Timer2
TimeSensor
fraction_changed
SFFloat

ROUTE
event to
(2)
Rot2
OrientationInterpolator
set_fraction
SFFloat
then
 
 
 
Rot2
OrientationInterpolator
value_changed
SFRotation

ROUTE
event to
(3)
Frame2
Transform
set_rotation
SFRotation
Touch
TouchSensor
touchTime
SFTime

ROUTE
event to
(1)
Timer3
TimeSensor
set_startTime
SFTime
then
 
 
 
Timer3
TimeSensor
fraction_changed
SFFloat

ROUTE
event to
(2)
Rot3
OrientationInterpolator
set_fraction
SFFloat
then
 
 
 
Rot3
OrientationInterpolator
value_changed
SFRotation

ROUTE
event to
(3)
Frame3
Transform
set_rotation
SFRotation
Touch
TouchSensor
touchTime
SFTime

ROUTE
event to
(1)
Timer4
TimeSensor
set_startTime
SFTime
then
 
 
 
Timer4
TimeSensor
fraction_changed
SFFloat

ROUTE
event to
(2)
Rot4
OrientationInterpolator
set_fraction
SFFloat
then
 
 
 
Rot4
OrientationInterpolator
value_changed
SFRotation

ROUTE
event to
(3)
Frame4
Transform
set_rotation
SFRotation
Touch
TouchSensor
touchTime
SFTime

ROUTE
event to
(1)
Timer5
TimeSensor
set_startTime
SFTime
then
 
 
 
Timer5
TimeSensor
fraction_changed
SFFloat

ROUTE
event to
(2)
Rot5
OrientationInterpolator
set_fraction
SFFloat
then
 
 
 
Rot5
OrientationInterpolator
value_changed
SFRotation

ROUTE
event to
(3)
Frame5
Transform
set_rotation
SFRotation
Touch
TouchSensor
touchTime
SFTime

ROUTE
event to
(1)
Timer6
TimeSensor
set_startTime
SFTime
then
 
 
 
Timer6
TimeSensor
fraction_changed
SFFloat

ROUTE
event to
(2)
Rot6
OrientationInterpolator
set_fraction
SFFloat
then
 
 
 
Rot6
OrientationInterpolator
value_changed
SFRotation

ROUTE
event to
(3)
Frame6
Transform
set_rotation
SFRotation
Touch
TouchSensor
touchTime
SFTime

ROUTE
event to
(1)
Timer7
TimeSensor
set_startTime
SFTime
then
 
 
 
Timer7
TimeSensor
fraction_changed
SFFloat

ROUTE
event to
(2)
Rot7
OrientationInterpolator
set_fraction
SFFloat
then
 
 
 
Rot7
OrientationInterpolator
value_changed
SFRotation

ROUTE
event to
(3)
Frame7
Transform
set_rotation
SFRotation
Touch
TouchSensor
touchTime
SFTime

ROUTE
event to
(1)
Timer8
TimeSensor
set_startTime
SFTime
then
 
 
 
Timer8
TimeSensor
fraction_changed
SFFloat

ROUTE
event to
(2)
Rot8
OrientationInterpolator
set_fraction
SFFloat
then
 
 
 
Rot8
OrientationInterpolator
value_changed
SFRotation

ROUTE
event to
(3)
Frame8
Transform
set_rotation
SFRotation

Additional guidance on X3D animation can be found in the 10-Step Animation Design Process and Event Tracing hint sheets. Have fun with X3D! 😀

-->
<!-- Online at
https://www.web3d.org/x3d/content/examples/Vrml2Sourcebook/Siggraph98Course/ColorsIndex.html -->
<!-- Version control at
https://sourceforge.net/p/x3d/code/HEAD/tree/www.web3d.org/x3d/content/examples/Vrml2Sourcebook/Siggraph98Course/Colors.x3d -->

<!-- Color legend: X3D terminology <X3dNode DEF='idName' field='value'/> matches XML terminology <XmlElement DEF='idName' attribute='value'/>
(Light-blue background: event-based behavior node or statement) (Grey background inside box: inserted documentation) (Magenta background: X3D Extensibility)
-->

to top <!-- For additional help information about X3D scenes, please see X3D Tooltips, X3D Resources, and X3D Scene Authoring Hints. -->