<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE X3D PUBLIC "ISO//Web3D//DTD X3D 3.3//EN" "https://www.web3d.org/specifications/x3d-3.3.dtd">
<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 '>
<head>
<meta name='titlecontent='Colors.x3d'/>
<meta name='descriptioncontent='This scene presents some colorful frames. See the source comments regarding animation details.'/>
<meta name='creatorcontent='David R. Nadeau'/>
<meta name='translatorcontent='Don Brutzman'/>
<meta name='createdcontent='1 July 1998'/>
<meta name='translatedcontent='2 February 2014'/>
<meta name='modifiedcontent='20 October 2019'/>
<meta name='referencecontent='originals/colors.wrl'/>
<meta name='referencecontent=' http://www.siggraph.org/s98 '/>
<meta name='referencecontent=' http://www.siggraph.org/s98/conference/courses/18.html '/>
<meta name='referencecontent=' http://www.sdsc.edu/~moreland/courses/Siggraph98/vrml97/slides/mt0073.htm '/>
<meta name='referencecontent=' http://www.sdsc.edu/~moreland/courses/Siggraph98/vrml97/slides/mt0130.htm '/>
<meta name='referencecontent=' http://www.sdsc.edu/~moreland/courses/Siggraph98/vrml97/slides/mt0167.htm '/>
<meta name='referencecontent=' http://www.sdsc.edu/~moreland/courses/Siggraph98/vrml97/vrml97.htm '/>
<meta name='referencecontent=' https://www.web3d.org/x3d/content/examples/X3dResources.html '/>
<meta name='identifiercontent=' https://www.web3d.org/x3d/content/examples/Vrml2Sourcebook/Siggraph98Course/Colors.x3d '/>
<meta name='generatorcontent='Vrml97ToX3dNist, http://ovrt.nist.gov/v2_x3d.html'/>
<meta name='generatorcontent='X3D-Edit, https://savage.nps.edu/X3D-Edit'/>
<meta name='licensecontent=' ../license.html'/>
</head>
<!--

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 image : Entry
-->
<Scene>
<!-- 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! -->
<!-- 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. -->
<WorldInfo info='"Copyright (c) 1996, David R. Nadeau"title='Colors'/>
<Viewpoint DEF='Entrydescription='Entry viewposition='0.0 0.0 3.0'/>
<NavigationInfo/>
<Background/>
<!-- ROUTE information for Frame1 node:  [from Rot1.value_changed to set_rotation ] -->
<Transform DEF='Frame1'>
<Shape>
<Appearance>
<Material diffuseColor='1.0 0.0 0.0'/>
</Appearance>
<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'>
<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'/>
</IndexedFaceSet>
</Shape>
</Transform>
<!-- ROUTE information for Frame2 node:  [from Rot2.value_changed to set_rotation ] -->
<Transform DEF='Frame2translation='0.0 0.0 -0.4'>
<Shape>
<Appearance>
<Material diffuseColor='1.0 0.5 0.0'/>
</Appearance>
<IndexedFaceSet USE='Frame'/>
</Shape>
</Transform>
<!-- ROUTE information for Frame3 node:  [from Rot3.value_changed to set_rotation ] -->
<Transform DEF='Frame3translation='0.0 0.0 -0.8'>
<Shape>
<Appearance>
<Material diffuseColor='1.0 1.0 0.0'/>
</Appearance>
<IndexedFaceSet USE='Frame'/>
</Shape>
</Transform>
<!-- ROUTE information for Frame4 node:  [from Rot4.value_changed to set_rotation ] -->
<Transform DEF='Frame4translation='0.0 0.0 -1.2'>
<Shape>
<Appearance>
<Material diffuseColor='0.5 1.0 0.0'/>
</Appearance>
<IndexedFaceSet USE='Frame'/>
</Shape>
</Transform>
<!-- ROUTE information for Frame5 node:  [from Rot5.value_changed to set_rotation ] -->
<Transform DEF='Frame5translation='0.0 0.0 -1.6'>
<Shape>
<Appearance>
<Material diffuseColor='0.0 1.0 0.0'/>
</Appearance>
<IndexedFaceSet USE='Frame'/>
</Shape>
</Transform>
<!-- ROUTE information for Frame6 node:  [from Rot6.value_changed to set_rotation ] -->
<Transform DEF='Frame6translation='0.0 0.0 -2.0'>
<Shape>
<Appearance>
<Material diffuseColor='0.0 1.0 0.5'/>
</Appearance>
<IndexedFaceSet USE='Frame'/>
</Shape>
</Transform>
<!-- ROUTE information for Frame7 node:  [from Rot7.value_changed to set_rotation ] -->
<Transform DEF='Frame7translation='0.0 0.0 -2.4'>
<Shape>
<Appearance>
<Material diffuseColor='0.0 1.0 1.0'/>
</Appearance>
<IndexedFaceSet USE='Frame'/>
</Shape>
</Transform>
<!-- ROUTE information for Frame8 node:  [from Rot8.value_changed to set_rotation ] -->
<Transform DEF='Frame8translation='0.0 0.0 -2.8'>
<Shape>
<Appearance>
<Material diffuseColor='0.0 0.5 1.0'/>
</Appearance>
<IndexedFaceSet USE='Frame'/>
</Shape>
</Transform>
<!-- ROUTE information for Frame9 node:  [from Rot9.value_changed to set_rotation ] -->
<Transform DEF='Frame9translation='0.0 0.0 -3.2'>
<Shape>
<Appearance>
<Material diffuseColor='0.0 0.0 1.0'/>
</Appearance>
<IndexedFaceSet USE='Frame'/>
</Shape>
</Transform>
<!-- ROUTE information for Touch node:  [from touchTime to Timer1.set_startTime ] [from touchTime to Timer2.set_startTime ] [from touchTime to Timer3.set_startTime ] [from touchTime to Timer4.set_startTime ] [from touchTime to Timer5.set_startTime ] [from touchTime to Timer6.set_startTime ] [from touchTime to Timer7.set_startTime ] [from touchTime to Timer8.set_startTime ] [from touchTime to Timer9.set_startTime ] -->
<TouchSensor DEF='Touch'/>
<!-- 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'/>
<!-- 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'/>
<!-- 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'/>
<!-- 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'/>
<!-- 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'/>
<!-- 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'/>
<!-- 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'/>
<!-- 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'/>
<!-- 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'/>
<!-- 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'/>
<!-- 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'/>
<!-- 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'/>
<!-- 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'/>
<!-- 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'/>
<!-- 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'/>
<!-- 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'/>
<!-- 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'/>
<!-- 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'/>
<ROUTE fromNode='TouchfromField='touchTimetoNode='Timer1toField='set_startTime'/>
<ROUTE fromNode='TouchfromField='touchTimetoNode='Timer2toField='set_startTime'/>
<ROUTE fromNode='TouchfromField='touchTimetoNode='Timer3toField='set_startTime'/>
<ROUTE fromNode='TouchfromField='touchTimetoNode='Timer4toField='set_startTime'/>
<ROUTE fromNode='TouchfromField='touchTimetoNode='Timer5toField='set_startTime'/>
<ROUTE fromNode='TouchfromField='touchTimetoNode='Timer6toField='set_startTime'/>
<ROUTE fromNode='TouchfromField='touchTimetoNode='Timer7toField='set_startTime'/>
<ROUTE fromNode='TouchfromField='touchTimetoNode='Timer8toField='set_startTime'/>
<ROUTE fromNode='TouchfromField='touchTimetoNode='Timer9toField='set_startTime'/>
<ROUTE fromNode='Timer1fromField='fraction_changedtoNode='Rot1toField='set_fraction'/>
<ROUTE fromNode='Timer2fromField='fraction_changedtoNode='Rot2toField='set_fraction'/>
<ROUTE fromNode='Timer3fromField='fraction_changedtoNode='Rot3toField='set_fraction'/>
<ROUTE fromNode='Timer4fromField='fraction_changedtoNode='Rot4toField='set_fraction'/>
<ROUTE fromNode='Timer5fromField='fraction_changedtoNode='Rot5toField='set_fraction'/>
<ROUTE fromNode='Timer6fromField='fraction_changedtoNode='Rot6toField='set_fraction'/>
<ROUTE fromNode='Timer7fromField='fraction_changedtoNode='Rot7toField='set_fraction'/>
<ROUTE fromNode='Timer8fromField='fraction_changedtoNode='Rot8toField='set_fraction'/>
<ROUTE fromNode='Timer9fromField='fraction_changedtoNode='Rot9toField='set_fraction'/>
<ROUTE fromNode='Rot1fromField='value_changedtoNode='Frame1toField='set_rotation'/>
<ROUTE fromNode='Rot2fromField='value_changedtoNode='Frame2toField='set_rotation'/>
<ROUTE fromNode='Rot3fromField='value_changedtoNode='Frame3toField='set_rotation'/>
<ROUTE fromNode='Rot4fromField='value_changedtoNode='Frame4toField='set_rotation'/>
<ROUTE fromNode='Rot5fromField='value_changedtoNode='Frame5toField='set_rotation'/>
<ROUTE fromNode='Rot6fromField='value_changedtoNode='Frame6toField='set_rotation'/>
<ROUTE fromNode='Rot7fromField='value_changedtoNode='Frame7toField='set_rotation'/>
<ROUTE fromNode='Rot8fromField='value_changedtoNode='Frame8toField='set_rotation'/>
<ROUTE fromNode='Rot9fromField='value_changedtoNode='Frame9toField='set_rotation'/>
</Scene>
</X3D>
<!--

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 image : Entry
-->

<!-- Color key: <X3dNode DEF='idName' field='value'/> matches <XmlElement DEF='idName' attribute='value'/>
(Light blue background: behavior node) (Grey background: inserted documentation) (Magenta background: X3D Extensibility)
-->

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