<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE X3D PUBLIC "ISO//Web3D//DTD X3D 3.0//EN"   "http://www.web3d.org/specifications/x3d-3.0.dtd">
<X3D profile='Immersiveversion='3.0xmlns:xsd='http://www.w3.org/2001/XMLSchema-instance' xsd:noNamespaceSchemaLocation=' http://www.web3d.org/specifications/x3d-3.0.xsd '>
<head>
<meta name='titlecontent='PinballTable.x3d'/>
<meta name='descriptioncontent='A pinball table with some ball animations.'/>
<meta name='creatorcontent='Jiradett Kerdsri and Kacha Jitpanya'/>
<meta name='createdcontent='August 6 2001'/>
<meta name='modifiedcontent='13 August 2003'/>
<meta name='identifiercontent=' http://www.web3d.org/x3d/content/examples/Basic/StudentProjects/PinballTable.x3d '/>
<meta name='imagecontent='wood.jpg "from source book" pinball.jpg "capture from windows2000" circle.jpg'/>
<meta name='generatorcontent='X3D-Edit 3.2, https://savage.nps.edu/X3D-Edit'/>
<meta name='licensecontent='../license.html'/>
</head>
<!--

Index for DEF nodes: BALL_COLOR_1, BALL_COLOR_2, BALL_COLOR_3, BALL1, beam, Clock, CLOCK_1, CLOCK_2, CLOCK_3, Clock1_1, Clock1_2, Clock1_3, Clock1_4, Clock2_1, Clock2_2, Clock2_3, Clock2_4, ClockOrient1, ClockOrient2, COLOR_PATH_1, COLOR_PATH_2, COLOR_PATH_3, cylinder, orienFlip1, orienFlip2, PosBall1, PosFlip1_1, PosFlip1_2, PosFlip1_3, PosFlip1_4, PosFlip2_1, PosFlip2_2, PosFlip2_3, PosFlip2_4, routeSelecter1, routeSelecter2, sideBeam, stck1, stck2, stick, Touch, Touch1, Touch2, WoodAppearance
Index for Viewpoint images: Viewpoint_1, Viewpoint_2, Viewpoint_3, Viewpoint_4, Viewpoint_5
-->
<Scene>
<Group>
<!-- table -->
<Transform center='0 0 -4rotation='1 0 0 0.25'>
<Group>
<Transform>
<Shape>
<Box size='4.5 0.2 8'/>
<Appearance>
<Material diffuseColor='1 0 0'/>
<!-- permissions not obtained for image files, so not retained -->
<!-- <ImageTexture url="&quot;pinballFiles/pinballPlaySurface.jpg&quot; &quot;http://www.web3d.org/x3d/content/examples/Basic/StudentProjects/pinballFiles/pinballPlaySurface.jpg&quot;"/> -->
</Appearance>
</Shape>
<!-- side beam -->
<Transform translation='2.25 0 0'>
<Shape DEF='sideBeam'>
<Box size='0.3 0.6 8.8'/>
<Appearance DEF='WoodAppearance'>
<ImageTexture
  url=' "woodTexture.jpg" "http://www.web3d.org/x3d/content/examples/Basic/StudentProjects/woodTexture.jpg" '/>
<Material diffuseColor='1 0 0'/>
</Appearance>
</Shape>
</Transform>
<!-- side beam2 -->
<Transform translation='-2.25 0 0'>
<Shape USE='sideBeam'/>
</Transform>
<!-- back of the table -->
<Transform translation='0 -.198 0'>
<Shape>
<Box size='4.5 0.2 7.6'/>
<Appearance USE='WoodAppearance'/>
</Shape>
</Transform>
<!-- circle -->
<Transform translation='0 .17 -.72'>
<Shape DEF='cylinder'>
<Cylinder height='.15radius='.2'/>
<Appearance>
<!-- permissions not obtained for image files, so not retained -->
<!-- <ImageTexture url="&quot;pinballFiles/circle.jpg&quot; &quot;http://www.web3d.org/x3d/content/examples/Basic/StudentProjects/pinballFiles/circle.jpg&quot;"/> -->
<!-- BALL_COLOR_2 ROUTE:  [from COLOR_PATH_2.value_changed to set_emissiveColor ] -->
<Material DEF='BALL_COLOR_2'/>
</Appearance>
</Shape>
<Transform translation='-0.36 0 -.66'>
<Shape USE='cylinder'/>
</Transform>
<Transform translation='0.38 0 -0.82'>
<Shape USE='cylinder'/>
</Transform>
<Transform translation='-1.57 0 -2.03'>
<Shape USE='cylinder'/>
</Transform>
<!-- CLOCK_2 ROUTE:  [from fraction_changed to COLOR_PATH_2.set_fraction ] -->
<TimeSensor DEF='CLOCK_2cycleInterval='2.4loop='true'/>
<!-- COLOR_PATH_2 ROUTEs:  [from CLOCK_2.fraction_changed to set_fraction ] [from value_changed to BALL_COLOR_2.set_emissiveColor ] -->
<ColorInterpolator DEF='COLOR_PATH_2key='0.0 0.5 0.5 1.0keyValue='0 1 0 0 1 0 0 0 1 0 0 1'/>
</Transform>
<!-- center circle -->
<Transform translation='0 .1 2.05'>
<Shape>
<Cylinder height='.2radius='.54'/>
<Appearance> </Appearance>
</Shape>
<!-- CLOCK_1 ROUTE:  [from fraction_changed to COLOR_PATH_1.set_fraction ] -->
<TimeSensor DEF='CLOCK_1cycleInterval='2loop='true'/>
<!-- COLOR_PATH_1 ROUTEs:  [from CLOCK_1.fraction_changed to set_fraction ] [from value_changed to BALL_COLOR_1.set_emissiveColor ] -->
<ColorInterpolator DEF='COLOR_PATH_1key='0.0 0.5 0.5 1.0keyValue='1 0 0 1 0 0 0 0 1 0 0 1'/>
</Transform>
<!-- beam -->
<Transform translation='0 0 4.25'>
<Shape DEF='beam'>
<Box size='4.5 0.6 0.3'/>
<Appearance USE='WoodAppearance'/>
</Shape>
</Transform>
</Transform>
<!-- overhead light -->
<DirectionalLight direction='0 -1 0intensity='0.7'/>
<!-- blinking route for center -->
<ROUTE fromNode='CLOCK_1fromField='fraction_changedtoNode='COLOR_PATH_1toField='set_fraction'/>
<ROUTE fromNode='COLOR_PATH_1fromField='value_changedtoNode='BALL_COLOR_1toField='set_emissiveColor'/>
<!-- blinking route for small circle -->
<ROUTE fromNode='CLOCK_2fromField='fraction_changedtoNode='COLOR_PATH_2toField='set_fraction'/>
<ROUTE fromNode='COLOR_PATH_2fromField='value_changedtoNode='BALL_COLOR_2toField='set_emissiveColor'/>
</Group>
<!-- ball -->
<Group> </Group>
<!-- stick1 -->
<Group>
<!-- stck1 ROUTE:  [from orienFlip1.value_changed to set_rotation ] -->
<Transform DEF='stck1rotation='0 1 0 .67scale='1 2 1translation='.5 .2 3.8'>
<Shape DEF='stick'>
<Appearance>
<Material diffuseColor='.8 .8 .8'/>
</Appearance>
<Extrusion creaseAngle='0.785crossSection='0 .1 .37 .11 .44 .07 .45 0 .44 -.07 .37 -.11 0 -.1 -.2 -.08 -.32 -.06-.38 -.04 -.4 0-.38 .04 -.32 .06 -.2 .08 0 .1spine='0 -.03 0 0 .03 0'/>
</Shape>
</Transform>
<!-- Touch1 ROUTEs:  [from touchTime to routeSelecter1.set_startTime ] [from touchTime to ClockOrient1.set_startTime ] -->
<TouchSensor DEF='Touch1description='stick 1 - touch to activate'/>
</Group>
<!-- stick2 -->
<Group>
<!-- stck2 ROUTE:  [from orienFlip2.value_changed to set_rotation ] -->
<Transform DEF='stck2rotation='0 1 0 2.47scale='1 2 1translation='-.5 .2 3.8'>
<Shape USE='stick'/>
</Transform>
<!-- Touch2 ROUTEs:  [from touchTime to routeSelecter2.set_startTime ] [from touchTime to ClockOrient2.set_startTime ] -->
<TouchSensor DEF='Touch2description='stick 2 - touch to activate'/>
</Group>
</Transform>
<!-- Clock ROUTEs:  [from Touch.touchTime to set_startTime ] [from fraction_changed to PosBall1.set_fraction ] -->
<TimeSensor DEF='ClockcycleInterval='6'/>
<!-- Clock1_1 ROUTEs:  [from routeSelecter1.startTime1 to set_startTime ] [from fraction_changed to PosFlip1_1.set_fraction ] -->
<TimeSensor DEF='Clock1_1cycleInterval='3'/>
<!-- Clock1_2 ROUTEs:  [from routeSelecter1.startTime2 to set_startTime ] [from fraction_changed to PosFlip1_2.set_fraction ] -->
<TimeSensor DEF='Clock1_2cycleInterval='3'/>
<!-- Clock1_3 ROUTEs:  [from routeSelecter1.startTime3 to set_startTime ] [from fraction_changed to PosFlip1_3.set_fraction ] -->
<TimeSensor DEF='Clock1_3cycleInterval='3'/>
<!-- Clock1_4 ROUTEs:  [from routeSelecter1.startTime4 to set_startTime ] [from fraction_changed to PosFlip1_4.set_fraction ] -->
<TimeSensor DEF='Clock1_4cycleInterval='3'/>
<!-- Clock2_1 ROUTEs:  [from routeSelecter2.startTime1 to set_startTime ] [from fraction_changed to PosFlip2_1.set_fraction ] -->
<TimeSensor DEF='Clock2_1cycleInterval='3'/>
<!-- Clock2_2 ROUTEs:  [from routeSelecter2.startTime2 to set_startTime ] [from fraction_changed to PosFlip2_2.set_fraction ] -->
<TimeSensor DEF='Clock2_2cycleInterval='3'/>
<!-- Clock2_3 ROUTEs:  [from routeSelecter2.startTime3 to set_startTime ] [from fraction_changed to PosFlip2_3.set_fraction ] -->
<TimeSensor DEF='Clock2_3cycleInterval='3'/>
<!-- Clock2_4 ROUTEs:  [from routeSelecter2.startTime4 to set_startTime ] [from fraction_changed to PosFlip2_4.set_fraction ] -->
<TimeSensor DEF='Clock2_4cycleInterval='3'/>
<!-- ClockOrient1 ROUTEs:  [from Touch1.touchTime to set_startTime ] [from fraction_changed to orienFlip1.set_fraction ] -->
<TimeSensor DEF='ClockOrient1'/>
<!-- ClockOrient2 ROUTEs:  [from Touch2.touchTime to set_startTime ] [from fraction_changed to orienFlip2.set_fraction ] -->
<TimeSensor DEF='ClockOrient2'/>
<!-- PosBall1 ROUTEs:  [from Clock.fraction_changed to set_fraction ] [from value_changed to BALL1.set_translation ] -->
<PositionInterpolator DEF='PosBall1key='0 0.0625 0.125 0.1875 0.25 0.3125 0.375 0.4375 0.5 0.5625 0.625 0.6875 0.75 0.8125 0.875 0.9375 1keyValue='1.8 .2 3.6 1.8 .2 -1.4 1.7 .2 -2.01.46 .2 -2.5 1.1 .2 -2.90.6 .2 -3.1 0 .2 -3.2 -0.6 .2 -3.1 -1.1 .2 -2.9 -1.5 .2 -2.5 -1.7 .2 -2.0 -1.8 .2 -1.4 -0.36 .2 -1.38 .36 .2 -1.54 0 .2 -.74 0.562 .2 3.396 .242 .2 3.745'/>
<!-- PosFlip1_1 ROUTEs:  [from Clock1_1.fraction_changed to set_fraction ] [from value_changed to BALL1.set_translation ] -->
<PositionInterpolator DEF='PosFlip1_1key='0 0.25 0.5 0.75 1keyValue='1.2 .2 3.4 0.701 .2 -2.826 -1.774 .2 -0.675 -1.511 .2 2.791 -0.4 .2 3.6'/>
<!-- PosFlip1_2 ROUTEs:  [from Clock1_2.fraction_changed to set_fraction ] [from value_changed to BALL1.set_translation ] -->
<PositionInterpolator DEF='PosFlip1_2key='0 0.2 0.4 0.6 0.8 1keyValue='.242 .2 3.745 1 0.2 1 -1.2 0.2 0.8 0.8 0.2 -2.4 0.4 0.2 -2.6 -0.4 .2 3.6'/>
<!-- PosFlip1_3 ROUTEs:  [from Clock1_3.fraction_changed to set_fraction ] [from value_changed to BALL1.set_translation ] -->
<PositionInterpolator DEF='PosFlip1_3key='0 0.076923077 0.153846154 0.230769231 0.307692308 0.384615385 0.461538462 0.538461538 0.615384615 0.692307692 0.769230769 0.846153846 0.923076923 1keyValue='.242 .2 3.745 -1.5 0.2 0 0.3 0.2 -3.1 -1.4 0.2 -3.1 -0.2 0.2 -1 -0.3 0.2 -3.4 -1.8 0.2 -1.8 0.3 0.2 -2.8 -1.1 0.2 -3.4 -1.7 0.2 -2.4 1.8 0.2 -0.4 -0.8 0.2 1.8 2 0.2 -3.4 -0.4 .2 3.6'/>
<!-- PosFlip1_4 ROUTEs:  [from Clock1_4.fraction_changed to set_fraction ] [from value_changed to BALL1.set_translation ] -->
<PositionInterpolator DEF='PosFlip1_4key='0 0.2 0.4 0.6 0.8 1keyValue='.242 .2 3.745 2.2 0.2 1 0 0.2 0 1.5 0.2 -3 -1 0.2 2.5 -0.4 .2 3.6'/>
<!-- PosFlip2_1 ROUTEs:  [from Clock2_1.fraction_changed to set_fraction ] [from value_changed to BALL1.set_translation ] -->
<PositionInterpolator DEF='PosFlip2_1key='0 0.166666667 0.333333333 0.5 0.666666667 0.833333333 1keyValue='1.2 0.2 -3 -2 0.2 0.2 2 0.2 -0.6 -2.2 0.2 1.2 1.2 0.2 0.8 -1.2 0.2 -3.4 -0.4 .2 3.6'/>
<!-- PosFlip2_2 ROUTEs:  [from Clock2_2.fraction_changed to set_fraction ] [from value_changed to BALL1.set_translation ] -->
<PositionInterpolator DEF='PosFlip2_2key='0 0.066666667 0.129166667 0.191666667 0.254166667 0.316666667 0.379166667 0.441666667 0.504166667 0.566666667 0.629166667 0.691666667 0.754166667 0.816666667 0.879166667 0.941666667keyValue='0 .2 4.25 -2 0.2 -1 -1.8 0.2 -3.4 -0.4 0.2 -3.6 1.8 0.2 -3.4 1.6 0.2 -2 1 0.2 1 0 .2 4.25 -0.5 0.2 0 -1 0.2 -2 0.5 0.2 2.5 0.8 0.2 1 -2.2 0.2 1 2.2 0.2 -3.6 -0.5 0.2 3 -0.4 .2 3.6'/>
<!-- PosFlip2_3 ROUTEs:  [from Clock2_3.fraction_changed to set_fraction ] [from value_changed to BALL1.set_translation ] -->
<PositionInterpolator DEF='PosFlip2_3key='0 0.0625 0.125 0.1875 0.25 0.3125 0.375 0.4375 0.5 0.5625 0.625 0.6875 0.75 0.8125 0.875 0.9375 1keyValue='-1.6 0.2 0 -1.8 0.2 -1 -1.6 0.2 -2.4 -0.4 0.2 -2.5 0 0.2 -1.6 -0.2 0.2 -0.9 -1 0.2 -1.8 0.2 0.2 -2.2 0.2 0.2 -1.4 -0.6 0.2 -1.4 -0.6 0.2 -1.6 0 0.2 -1.4 -0.2 0.2 -1.3 0.8 0.2 0 -1 0.2 0.2 1.4 0.2 -1.6 -0.4 .2 3.6'/>
<!-- PosFlip2_4 ROUTEs:  [from Clock2_4.fraction_changed to set_fraction ] [from value_changed to BALL1.set_translation ] -->
<PositionInterpolator DEF='PosFlip2_4key='0 0.25 0.5 0.75 1keyValue='-0.4 .2 3.6 1.8 .2 0 0.936 .2 -2.842 0 .2 3.4 .242 .2 3.745'/>
<!-- orienFlip1 ROUTEs:  [from ClockOrient1.fraction_changed to set_fraction ] [from value_changed to stck1.set_rotation ] -->
<OrientationInterpolator DEF='orienFlip1key='0 0.25 0.5 0.75 1keyValue='0 1 0 -0.5 0 1 0 -1.0 0 1 0 -1.57 0 1 0 -1 0 1 0 0.5'/>
<!-- orienFlip2 ROUTEs:  [from ClockOrient2.fraction_changed to set_fraction ] [from value_changed to stck2.set_rotation ] -->
<OrientationInterpolator DEF='orienFlip2key='0 0.25 0.5 0.75 1keyValue='0 1 0 0.5 0 1 0 1.0 0 1 0 1.57 0 1 0 1 0 1 0 -0.5'/>
<!-- pinballBackground -->
<Group>
<!-- beam for pinballBackground -->
<!-- left beam -->
<Transform translation='2.245 2 -4'>
<Shape>
<Box size='.3 4.5 0.8'/>
<Appearance USE='WoodAppearance'/>
</Shape>
</Transform>
<!-- right beam -->
<Transform translation='-2.245 2 -4'>
<Shape>
<Box size='.3 4.5 0.8'/>
<Appearance USE='WoodAppearance'/>
</Shape>
</Transform>
<!-- upper beam -->
<Transform translation='0 4.4 -4'>
<Shape>
<Box size='4.81 0.3 0.8'/>
<Appearance USE='WoodAppearance'/>
</Shape>
</Transform>
<!-- back of pinballBackground -->
<Transform translation='0 -.6 -4.5'>
<Shape>
<Box size='4.78 10.3 0.4'/>
<Appearance USE='WoodAppearance'/>
</Shape>
</Transform>
<!-- pinballBackground -->
<Transform translation='0 2 -3.95'>
<Shape>
<Box size='4.5 4.5 0.5'/>
<Appearance> </Appearance>
</Shape>
<!-- CLOCK_3 ROUTE:  [from fraction_changed to COLOR_PATH_3.set_fraction ] -->
<TimeSensor DEF='CLOCK_3cycleInterval='5loop='true'/>
<!-- COLOR_PATH_3 ROUTEs:  [from CLOCK_3.fraction_changed to set_fraction ] [from value_changed to BALL_COLOR_3.set_emissiveColor ] -->
<ColorInterpolator DEF='COLOR_PATH_3key='0.0 0.5 0.5 1.0keyValue='0 0 0 .91 .98 .36 0 0 0 0 0 0'/>
</Transform>
<!-- Left front beam -->
<Transform translation='-2.25 -3.7 3.9'>
<Shape>
<Box size='0.3 3.8 0.6'/>
<Appearance USE='WoodAppearance'/>
</Shape>
</Transform>
<!-- right front beam -->
<Transform translation='2.25 -3.7 3.9'>
<Shape>
<Box size='0.3 3.8 0.6'/>
<Appearance USE='WoodAppearance'/>
</Shape>
</Transform>
<ROUTE fromNode='CLOCK_3fromField='fraction_changedtoNode='COLOR_PATH_3toField='set_fraction'/>
<ROUTE fromNode='COLOR_PATH_3fromField='value_changedtoNode='BALL_COLOR_3toField='set_emissiveColor'/>
</Group>
<!-- front -->
<Transform translation='0 -3.6 4'>
<Shape>
<Box size='4.2 2.8 .05'/>
<Appearance> </Appearance>
</Shape>
<Transform translation='0 -1.7 0'>
<Shape>
<Box size='4.5 0.6 0.3'/>
<Appearance USE='WoodAppearance'/>
</Shape>
</Transform>
</Transform>
<!-- pinballSide -->
<Group>
<!-- right side -->
<Transform rotation='0 1 0 -1.57translation='2.44 -5.6 4'>
<Shape>
<Appearance USE='WoodAppearance'/>
<IndexedFaceSet coordIndex='01230'>
<Coordinate point='0 0 0 -8.7 0 0 -8.7 5.5 0 0 3.35 0'/>
</IndexedFaceSet>
</Shape>
</Transform>
<!-- left side -->
<Transform rotation='0 1 0 -1.57translation='-2.43 -5.6 4'>
<Shape>
<Appearance USE='WoodAppearance'/>
<IndexedFaceSet coordIndex='03210'>
<Coordinate point='0 0 0 -8.7 0 0 -8.7 5.5 0 0 3.35 0'/>
</IndexedFaceSet>
</Shape>
</Transform>
<!-- floor -->
<Transform translation='0 -5.4 -.3'>
<Shape>
<Box size='4.9 0.4 8.4'/>
<Appearance USE='WoodAppearance'/>
</Shape>
</Transform>
</Group>
<!-- routeSelecter is used to select different routes when a player clicks on flippers. -->
<!-- routeSelecter1 ROUTEs:  [from Touch1.touchTime to set_startTime ] [from startTime1 to Clock1_1.set_startTime ] [from startTime2 to Clock1_2.set_startTime ] [from startTime3 to Clock1_3.set_startTime ] [from startTime4 to Clock1_4.set_startTime ] -->
<Script DEF='routeSelecter1mustEvaluate='true'>
<field name='set_startTimetype='SFTimeaccessType='inputOnly'/>
<field name='startTime1type='SFTimeaccessType='outputOnly'/>
<field name='startTime2type='SFTimeaccessType='outputOnly'/>
<field name='startTime3type='SFTimeaccessType='outputOnly'/>
<field name='startTime4type='SFTimeaccessType='outputOnly'/>
<![CDATA[
        ecmascript:

function set_startTime( touchTime ) {
	prob= Math.random();

	if ( prob < 0.25 ) {
		startTime1 = touchTime;
	}
	else if ( (prob >= 0.25) && (prob < 0.50) ) {
		startTime2 = touchTime;
	}
	else if ( ( prob >= 0.50) && (prob < 0.75) ) {
		startTime3 = touchTime;
	}
	else {
		startTime4 = touchTime;	
	}
}
      
]]>
</Script>
<!-- routeSelecter2 ROUTEs:  [from Touch2.touchTime to set_startTime ] [from startTime1 to Clock2_1.set_startTime ] [from startTime2 to Clock2_2.set_startTime ] [from startTime3 to Clock2_3.set_startTime ] [from startTime4 to Clock2_4.set_startTime ] -->
<Script DEF='routeSelecter2mustEvaluate='true'>
<field name='set_startTimetype='SFTimeaccessType='inputOnly'/>
<field name='startTime1type='SFTimeaccessType='outputOnly'/>
<field name='startTime2type='SFTimeaccessType='outputOnly'/>
<field name='startTime3type='SFTimeaccessType='outputOnly'/>
<field name='startTime4type='SFTimeaccessType='outputOnly'/>
<![CDATA[
        ecmascript:

function set_startTime( touchTime ) {
	prob= Math.random();
	if ( prob < 0.25 ) {
		startTime1 = touchTime;
	}
	else if ( (prob >= 0.25) && (prob < 0.50) ) {
		startTime2 = touchTime;
	}
	else if ( (prob >= 0.50) && (prob < 0.75) ) {
		startTime3 = touchTime;
	}
	else {
		startTime4 = touchTime;	
	}
}
      
]]>
</Script>
</Group>
<!-- Start game -->
<ROUTE fromNode='TouchfromField='touchTimetoNode='ClocktoField='set_startTime'/>
<ROUTE fromNode='ClockfromField='fraction_changedtoNode='PosBall1toField='set_fraction'/>
<ROUTE fromNode='PosBall1fromField='value_changedtoNode='BALL1toField='set_translation'/>
<!-- Path1 -->
<ROUTE fromNode='Touch1fromField='touchTimetoNode='routeSelecter1toField='set_startTime'/>
<ROUTE fromNode='routeSelecter1fromField='startTime1toNode='Clock1_1toField='set_startTime'/>
<ROUTE fromNode='Clock1_1fromField='fraction_changedtoNode='PosFlip1_1toField='set_fraction'/>
<ROUTE fromNode='PosFlip1_1fromField='value_changedtoNode='BALL1toField='set_translation'/>
<!-- Path2 -->
<ROUTE fromNode='routeSelecter1fromField='startTime2toNode='Clock1_2toField='set_startTime'/>
<ROUTE fromNode='Clock1_2fromField='fraction_changedtoNode='PosFlip1_2toField='set_fraction'/>
<ROUTE fromNode='PosFlip1_2fromField='value_changedtoNode='BALL1toField='set_translation'/>
<!-- Path3 -->
<ROUTE fromNode='routeSelecter1fromField='startTime3toNode='Clock1_3toField='set_startTime'/>
<ROUTE fromNode='Clock1_3fromField='fraction_changedtoNode='PosFlip1_3toField='set_fraction'/>
<ROUTE fromNode='PosFlip1_3fromField='value_changedtoNode='BALL1toField='set_translation'/>
<!-- Path4 -->
<ROUTE fromNode='routeSelecter1fromField='startTime4toNode='Clock1_4toField='set_startTime'/>
<ROUTE fromNode='Clock1_4fromField='fraction_changedtoNode='PosFlip1_4toField='set_fraction'/>
<ROUTE fromNode='PosFlip1_4fromField='value_changedtoNode='BALL1toField='set_translation'/>
<!-- Path5 -->
<ROUTE fromNode='Touch2fromField='touchTimetoNode='routeSelecter2toField='set_startTime'/>
<ROUTE fromNode='routeSelecter2fromField='startTime1toNode='Clock2_1toField='set_startTime'/>
<ROUTE fromNode='Clock2_1fromField='fraction_changedtoNode='PosFlip2_1toField='set_fraction'/>
<ROUTE fromNode='PosFlip2_1fromField='value_changedtoNode='BALL1toField='set_translation'/>
<!-- Path6 -->
<ROUTE fromNode='routeSelecter2fromField='startTime2toNode='Clock2_2toField='set_startTime'/>
<ROUTE fromNode='Clock2_2fromField='fraction_changedtoNode='PosFlip2_2toField='set_fraction'/>
<ROUTE fromNode='PosFlip2_2fromField='value_changedtoNode='BALL1toField='set_translation'/>
<!-- Path7 -->
<ROUTE fromNode='routeSelecter2fromField='startTime3toNode='Clock2_3toField='set_startTime'/>
<ROUTE fromNode='Clock2_3fromField='fraction_changedtoNode='PosFlip2_3toField='set_fraction'/>
<ROUTE fromNode='PosFlip2_3fromField='value_changedtoNode='BALL1toField='set_translation'/>
<!-- Path8 -->
<ROUTE fromNode='routeSelecter2fromField='startTime4toNode='Clock2_4toField='set_startTime'/>
<ROUTE fromNode='Clock2_4fromField='fraction_changedtoNode='PosFlip2_4toField='set_fraction'/>
<ROUTE fromNode='PosFlip2_4fromField='value_changedtoNode='BALL1toField='set_translation'/>
<!-- Rotating sticks -->
<ROUTE fromNode='Touch1fromField='touchTimetoNode='ClockOrient1toField='set_startTime'/>
<ROUTE fromNode='ClockOrient1fromField='fraction_changedtoNode='orienFlip1toField='set_fraction'/>
<ROUTE fromNode='orienFlip1fromField='value_changedtoNode='stck1toField='set_rotation'/>
<ROUTE fromNode='Touch2fromField='touchTimetoNode='ClockOrient2toField='set_startTime'/>
<ROUTE fromNode='ClockOrient2fromField='fraction_changedtoNode='orienFlip2toField='set_fraction'/>
<ROUTE fromNode='orienFlip2fromField='value_changedtoNode='stck2toField='set_rotation'/>
<!-- View Point -->
<Viewpoint description='normal viewposition='0 0 8.5'/>
<Viewpoint description='farposition='0 1 20'/>
<Viewpoint description='rightfieldOfView='0.7orientation='0 1 0 1.2position='15 0 15'/>
<Viewpoint description='leftorientation='0 1 0 -1.2position='-15 0 15'/>
<Viewpoint description='overorientation='1 0 0 -1.2position='0 17 5'/>
<Background groundAngle='1.309 1.571groundColor='0 0 0skyAngle='1.309 1.571'
  backUrl=' "urn:web3d:media:textures/panoramas/space_1_back.jpg" "../UniversalMediaPanoramas/space_1_back.jpg" "http://www.web3d.org/WorkingGroups/media/textures/panoramas/space_1_back.jpg" "http://www.web3d.org/x3d/content/examples/Basic/UniversalMediaPanoramas/space_1_back.jpg" "http://www.web3dmedia.com/UniversalMedia/textures/panoramas/space_1_back.jpg" "http://www.officetowers.com/UniversalMedia/textures/panoramas/space_1_back.jpg" "http://geometrek.com/UniversalMedia/textures/panoramas/space_1_back.jpg" "http://www.sc.ehu.es/ccwgamoa/UniversalMedia/textures/panoramas/space_1_back.jpg" '
  bottomUrl=' "urn:web3d:media:textures/panoramas/space_1_bottom.jpg" "../UniversalMediaPanoramas/space_1_bottom.jpg" "http://www.web3d.org/WorkingGroups/media/textures/panoramas/space_1_bottom.jpg" "http://www.web3d.org/x3d/content/examples/Basic/UniversalMediaPanoramas/space_1_bottom.jpg" "http://www.web3dmedia.com/UniversalMedia/textures/panoramas/space_1_bottom.jpg" "http://www.officetowers.com/UniversalMedia/textures/panoramas/space_1_bottom.jpg" "http://geometrek.com/UniversalMedia/textures/panoramas/space_1_bottom.jpg" "http://www.sc.ehu.es/ccwgamoa/UniversalMedia/textures/panoramas/space_1_bottom.jpg" '
  frontUrl=' "urn:web3d:media:textures/panoramas/space_1_front.jpg" "../UniversalMediaPanoramas/space_1_front.jpg" "http://www.web3d.org/WorkingGroups/media/textures/panoramas/space_1_front.jpg" "http://www.web3d.org/x3d/content/examples/Basic/UniversalMediaPanoramas/space_1_front.jpg" "http://www.web3dmedia.com/UniversalMedia/textures/panoramas/space_1_front.jpg" "http://www.officetowers.com/UniversalMedia/textures/panoramas/space_1_front.jpg" "http://geometrek.com/UniversalMedia/textures/panoramas/space_1_front.jpg" "http://www.sc.ehu.es/ccwgamoa/UniversalMedia/textures/panoramas/space_1_front.jpg" '
  leftUrl=' "urn:web3d:media:textures/panoramas/space_1_left.jpg" "../UniversalMediaPanoramas/space_1_left.jpg" "http://www.web3d.org/WorkingGroups/media/textures/panoramas/space_1_left.jpg" "http://www.web3d.org/x3d/content/examples/Basic/UniversalMediaPanoramas/space_1_left.jpg" "http://www.web3dmedia.com/UniversalMedia/textures/panoramas/space_1_left.jpg" "http://www.officetowers.com/UniversalMedia/textures/panoramas/space_1_left.jpg" "http://geometrek.com/UniversalMedia/textures/panoramas/space_1_left.jpg" "http://www.sc.ehu.es/ccwgamoa/UniversalMedia/textures/panoramas/space_1_left.jpg" '
  rightUrl=' "urn:web3d:media:textures/panoramas/space_1_right.jpg" "../UniversalMediaPanoramas/space_1_right.jpg" "http://www.web3d.org/WorkingGroups/media/textures/panoramas/space_1_right.jpg" "http://www.web3d.org/x3d/content/examples/Basic/UniversalMediaPanoramas/space_1_right.jpg" "http://www.web3dmedia.com/UniversalMedia/textures/panoramas/space_1_right.jpg" "http://www.officetowers.com/UniversalMedia/textures/panoramas/space_1_right.jpg" "http://geometrek.com/UniversalMedia/textures/panoramas/space_1_right.jpg" "http://www.sc.ehu.es/ccwgamoa/UniversalMedia/textures/panoramas/space_1_right.jpg" '
  topUrl=' "urn:web3d:media:textures/panoramas/space_1_top.jpg" "../UniversalMediaPanoramas/space_1_top.jpg" "http://www.web3d.org/WorkingGroups/media/textures/panoramas/space_1_top.jpg" "http://www.web3d.org/x3d/content/examples/Basic/UniversalMediaPanoramas/space_1_top.jpg" "http://www.web3dmedia.com/UniversalMedia/textures/panoramas/space_1_top.jpg" "http://www.officetowers.com/UniversalMedia/textures/panoramas/space_1_top.jpg" "http://geometrek.com/UniversalMedia/textures/panoramas/space_1_top.jpg" "http://www.sc.ehu.es/ccwgamoa/UniversalMedia/textures/panoramas/space_1_top.jpg" '/>
</Scene>
</X3D>
<!--

Index for DEF nodes: BALL_COLOR_1, BALL_COLOR_2, BALL_COLOR_3, BALL1, beam, Clock, CLOCK_1, CLOCK_2, CLOCK_3, Clock1_1, Clock1_2, Clock1_3, Clock1_4, Clock2_1, Clock2_2, Clock2_3, Clock2_4, ClockOrient1, ClockOrient2, COLOR_PATH_1, COLOR_PATH_2, COLOR_PATH_3, cylinder, orienFlip1, orienFlip2, PosBall1, PosFlip1_1, PosFlip1_2, PosFlip1_3, PosFlip1_4, PosFlip2_1, PosFlip2_2, PosFlip2_3, PosFlip2_4, routeSelecter1, routeSelecter2, sideBeam, stck1, stck2, stick, Touch, Touch1, Touch2, WoodAppearance
Index for Viewpoint images: Viewpoint_1, Viewpoint_2, Viewpoint_3, Viewpoint_4, Viewpoint_5
-->

<!-- Tag color codes: <Node DEF='idName' attribute='value'/> -->