<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE X3D PUBLIC "ISO//Web3D//DTD X3D 4.0//EN" "https://www.web3d.org/specifications/x3d-4.0.dtd">
<X3D profile='Immersive'  version='4.0 xmlns:xsd='http://www.w3.org/2001/XMLSchema-instance' xsd:noNamespaceSchemaLocation =' https://www.web3d.org/specifications/x3d-4.0.xsd ' >
<head>
<component level='1name='HAnim'/>
<meta name='titlecontent=' MainStage.x3d '/>
<meta name='descriptioncontent='Main stage for HAnim scene Winter and Spring.'/>
<meta name='creatorcontent='Carol McDonald, Joe Williams, Katy Schildmeyer, and John Carlson'/>
<meta name='translatorcontent='Joe Williams and Don Brutzman'/>
<meta name='createdcontent='25 May 2023'/>
<meta name='modifiedcontent='5 March 2024'/>
<meta name='referencecontent=' MainStageREADME.txt '/>
<meta name='hintcontent='containerField=watchList changed to containerField=children in X3D 4.0'/>
<meta name='MovingImagecontent=' WinterAndSpring3 by Joe Williams https://youtu.be/5HrX7_uu9mU '/>
<meta name='referencecontent=' originals/0WSMainStage09g.x3d '/>
<meta name='identifiercontent=' https://www.web3d.org/x3d/content/examples/HumanoidAnimation/WinterAndSpring/MainStage.x3d '/>
<meta name='generatorcontent='X3D-Edit 4.0, https://savage.nps.edu/X3D-Edit'/>
<meta name='licensecontent=' ../license.html'/>
</head>
<!--

to top <!-- Event Graph ROUTE Table shows event connections -->
 
<!-- Index for DEF nodes: Background1Black, Background1BlackSequencer, Background2GraySkyGreenGrass, Background2GraySkyGreenGrassSequencer, Background3BlueSkyGreenGrass, Background3SkyBlueGreenGrassSequencer, Background4DarkGrey, Background4DarkGreySequencer, BackgroundsAndBackgroundSwitching, BorderFlowers, Bushes, BushesTransform, CaneFitting, CharactersAndCharacterViewpoints, Clock100Seconds, Clock100SecondsTRIGGER, DelayFILTER, DelayTIME, EveryInlineLoadSensor, Floor, FlowerGardens, FlowerSet, Gramps, Gramps_HumanoidRoot_RotationInterpolator, Gramps_HumanoidRoot_TranslationInterpolator, Gramps01View, Gramps01ViewSequencer, Gramps03View, Gramps03ViewSequencer, Gramps11, GrampsBox, GrampsGrandKids, GrampsStage, JointCoordinateAxes, Leif, Leif_HumanoidRoot_RotationInterpolator, Leif_Root_TranslationInterpolator, LeifAnimated, LeifBox, LeifView, LeifViewSequencer, Lily, Lily_HumanoidRoot_RotationInterpolator, Lily_HumanoidRoot_TranslationInterpolator, LilyAnimated, LilyBox, Lilyview, LilyViewSequencer, Melodies1, PathMeshTopSurface, Pathway, PathwayGrid, PathwaySurface1, PathwaySurface2, Scene_GrampsBack1View, Scene_GrampsBack1ViewSequencer, Scene_KidsRunningTowardGramps, Scene_KidsRunningTowardGrampsSequencer, Scene_StageFarView, Scene_StageFarViewSequencer, SceneMusic1, SceneViewpoints01, SceneViewPoints02, StageDecorations, StageSurface, StartTIME, TitlesandViewpointsInOrderofAppearance, TitleSet1, TitleSet1of2, Tufani, Tufani_HumanoidRoot_RotationInterpolator, Tufani_HumanoidRoot_TranslationInterpolator, TufaniAnimated, TufaniBox, Tufaniview, TufaniViewSequencer, TwoFlowerGardens, WinterAndSpringTitle, WinterAndSpringTitleView, WinterAndSpringTitleViewSequencer, WSAudio, WSAuthorsTitle, WSAuthorsTitleView, WSAuthorsTitleViewSequencer, WSDedicationTitle, WSDedicationTitleView, WSDedicationTitleViewSequencer, WSMusicCreditsTitle, WSMusicCreditsTitleView, WSMusicCreditsTitleViewSequencer, WSThanksTitle, WSThanksTitleView, WSThanksTitleViewSequencer

Index for Viewpoint nodes: Gramps01View, Gramps03View, LeifView, Lilyview, Scene_GrampsBack1View, Scene_KidsRunningTowardGramps, Scene_StageFarView, Tufaniview, WinterAndSpringTitleView, WSAuthorsTitleView, WSDedicationTitleView, WSMusicCreditsTitleView, WSThanksTitleView
-->
<Scene>
<WorldInfo title='MainStage.x3d'/>
<NavigationInfo headlight='falsetransitionTime='0'/>
<!-- These lights are intentionally shining on all of the models loaded within a top-level scene -->
<DirectionalLight direction='0 0 1global='trueintensity='0.75'/>
<DirectionalLight global='trueintensity='0.75'/>
<DirectionalLight global='trueintensity='0.75'/>
<DirectionalLight direction='-1 0 0global='trueintensity='0.75'/>
<DirectionalLight direction='0 -0.75 0global='trueintensity='0.75'/>

<!-- scene ready signal Start audio -->
<!-- ROUTE information for DelayTIME node:  [from StartTIME.stopTime to set_startTime ] [from isActive to DelayFILTER.set_boolean ] -->
<TimeSensor DEF='DelayTIMEcycleInterval='0.5'/>

<!-- delay between start audio and start animations -->
<!-- ROUTE information for Clock100Seconds node:  [from Clock100SecondsTRIGGER.triggerTime to set_startTime ] [from fraction_changed to Gramps_HumanoidRoot_TranslationInterpolator.set_fraction ] [from fraction_changed to Gramps_HumanoidRoot_RotationInterpolator.set_fraction ] [from fraction_changed to Leif_Root_TranslationInterpolator.set_fraction ] [from fraction_changed to Leif_HumanoidRoot_RotationInterpolator.set_fraction ] [from fraction_changed to Lily_HumanoidRoot_TranslationInterpolator.set_fraction ] [from fraction_changed to Lily_HumanoidRoot_RotationInterpolator.set_fraction ] [from fraction_changed to Tufani_HumanoidRoot_TranslationInterpolator.set_fraction ] [from fraction_changed to Tufani_HumanoidRoot_RotationInterpolator.set_fraction ] [from fraction_changed to Scene_StageFarViewSequencer.set_fraction ] [from fraction_changed to WinterAndSpringTitleViewSequencer.set_fraction ] [from fraction_changed to WSAuthorsTitleViewSequencer.set_fraction ] [from fraction_changed to Scene_GrampsBack1ViewSequencer.set_fraction ] [from fraction_changed to Scene_KidsRunningTowardGrampsSequencer.set_fraction ] [from fraction_changed to LeifViewSequencer.set_fraction ] [from fraction_changed to LilyViewSequencer.set_fraction ] [from fraction_changed to TufaniViewSequencer.set_fraction ] [from fraction_changed to Gramps01ViewSequencer.set_fraction ] [from fraction_changed to Gramps03ViewSequencer.set_fraction ] [from fraction_changed to WSDedicationTitleViewSequencer.set_fraction ] [from fraction_changed to WSThanksTitleViewSequencer.set_fraction ] [from fraction_changed to WSMusicCreditsTitleViewSequencer.set_fraction ] [from fraction_changed to Background1BlackSequencer.set_fraction ] [from fraction_changed to Background2GraySkyGreenGrassSequencer.set_fraction ] [from fraction_changed to Background3SkyBlueGreenGrassSequencer.set_fraction ] [from fraction_changed to Background4DarkGreySequencer.set_fraction ] -->
<TimeSensor DEF='Clock100SecondscycleInterval='100'/>

<!-- start animation -->
<!-- ROUTE information for DelayFILTER node:  [from DelayTIME.isActive to set_boolean ] [from inputFalse to Clock100SecondsTRIGGER.set_boolean ] -->
<BooleanFilter DEF='DelayFILTER'/>

<!-- ROUTE information for Clock100SecondsTRIGGER node:  [from DelayFILTER.inputFalse to set_boolean ] [from triggerTime to Clock100Seconds.set_startTime ] -->
<TimeTrigger DEF='Clock100SecondsTRIGGER'/>

<!-- generate Clock100Seconds startTime from completion of Delay -->
< ROUTE  fromNode=' StartTIME' fromField='cycleTime' toNode=' StartTIME' toField='set_stopTime'/>
<!-- stop Start -->
< ROUTE  fromNode=' StartTIME' fromField='stopTime' toNode=' DelayTIME' toField='set_startTime'/>
<!-- turn on delay and audio -->
< ROUTE  fromNode=' DelayTIME' fromField='isActive' toNode=' DelayFILTER' toField='set_boolean'/>
< ROUTE  fromNode=' DelayFILTER' fromField='inputFalse' toNode=' Clock100SecondsTRIGGER' toField='set_boolean'/>
< ROUTE  fromNode=' Clock100SecondsTRIGGER' fromField='triggerTime' toNode=' Clock100Seconds' toField='set_startTime'/>
<!-- start animation timer -->
<Group DEF='WSAudio'>
<Sound DEF='SceneMusic1location='-5 10 10maxBack='50maxFront='50minBack='25minFront='25spatialize='false'>
<!-- X3D Players should pick the first version that works, providing better interoperability -->
<!-- For playability in this very big scene, the audio files are ordered by smaller file sizes first -->
</Sound>
<!-- start audio -->
< ROUTE  fromNode=' StartTIME' fromField='stopTime' toNode=' Melodies1' toField='set_startTime'/>
</Group>
<Group DEF='GrampsStage'>
<Group DEF='StageSurface'>
<Transform DEF='Floortranslation='15 -0.3 15'>
<Shape>
<Box size='1500 0.1 1500'/>
<Appearance>
<ImageTexture
  url=' "images/Lawn.jpg " "https://www.web3d.org/x3d/content/examples/HumanoidAnimation/WinterAndSpring/images/Lawn.jpg " ' />

<Material diffuseColor='0 0.8 0.0emissiveColor='0 0.7 0specularColor='0 0.4 0'/>
</Appearance>
</Shape>
</Transform>
<Transform DEF='PathwaySurface1translation='0 -0.15 0'> </Transform>
<Transform DEF='PathwaySurface2translation='0 -0.1 0.1'>
<Inline USE=' PathMeshTopSurface'/>
</Transform>
<Transform DEF='PathwayGridtranslation='0.0 -0.12 0'> </Transform>
</Group>
<Group DEF='StageDecorations'> </Group>
<Group DEF='TitlesandViewpointsInOrderofAppearance'>
<!-- ROUTE information for Scene_StageFarView node:  [from Scene_StageFarViewSequencer.value_changed to set_bind ] -->
<Viewpoint DEF='Scene_StageFarViewcenterOfRotation='9.8557 0 3.5description='Stage Far Vieworientation='0.5 1.76 0.3 -1position='-15 10 32'/>

<Group DEF='TitleSet1of2'>
<Transform DEF='TitleSet1'>
<Transform DEF='WinterAndSpringTitletranslation='10 10 0'>
<!-- ROUTE information for WinterAndSpringTitleView node:  [from WinterAndSpringTitleViewSequencer.value_changed to set_bind ] -->
<Viewpoint DEF='WinterAndSpringTitleViewdescription='Look at WS titlejump='falseorientation='-0.15 0 0 0.2position='0 0.75 4'/>

<Shape>
<Box size='4 3 0.25'/>
<Appearance> </Appearance>
</Shape>
</Transform>
<Transform DEF='WSAuthorsTitletranslation='10 10 -5'>
<!-- ROUTE information for WSAuthorsTitleView node:  [from WSAuthorsTitleViewSequencer.value_changed to set_bind ] -->
<Viewpoint DEF='WSAuthorsTitleViewdescription='Look at Authors titlejump='falseorientation='-0.15 0 0 0.2position='0 1 5'/>

<Shape>
<Box size='4 3 0.25'/>
<Appearance> </Appearance>
</Shape>
</Transform>
</Transform>
</Group>
<Group DEF='SceneViewpoints01'>
<!-- Looking down the path -->
<!-- ROUTE information for Scene_GrampsBack1View node:  [from Scene_GrampsBack1ViewSequencer.value_changed to set_bind ] -->
<Viewpoint DEF='Scene_GrampsBack1ViewcenterOfRotation='7 1.5 0description='Looking down the pathorientation='0 1 0 -2.7position='7 2 -6.5'/>

<!-- Looking toward the bushes -->
<!-- ROUTE information for Scene_KidsRunningTowardGramps node:  [from Scene_KidsRunningTowardGrampsSequencer.value_changed to set_bind ] -->
<Viewpoint DEF='Scene_KidsRunningTowardGrampscenterOfRotation='10 0.8 4description='Grand Kids Runningorientation='0 1 0 1.5position='11 1.6 4'/>
</Group>
<Group DEF='CharactersAndCharacterViewpoints'>
<Transform DEF='Gramps'>
<!-- ROUTE information for Gramps01View node:  [from Gramps01ViewSequencer.value_changed to set_bind ] -->
<Viewpoint DEF='Gramps01Viewdescription='Look at Grampsorientation='-0.25 0 0 0.3position='0 4 11'/>

<!-- Viewpoint DEF='Gramps02View' description='Look over Gramps Shoulder' orientation='0 1 0 3' position='-3 2 -9'/ -->
<!-- PointLight location='0 5 15' global='true' intensity='0.5' / -->
<!-- ROUTE information for Gramps03View node:  [from Gramps03ViewSequencer.value_changed to set_bind ] -->
<Viewpoint DEF='Gramps03Viewdescription='Look at Heart over Gramps Shoulderorientation='0 0.7 0 3position='-1 2 -8'/>

<Inline DEF='Gramps11'
  url=' "Gramps11.x3dv" "https://www.web3d.org/x3d/content/examples/HumanoidAnimation/WinterAndSpring/Gramps11.x3dv" ' />

<!-- TODO get proper conversion of Gramps <Inline DEF='GrampsAnimations' url='GrampsAnimations.x3d"https://www.web3d.org/x3d/content/examples/HumanoidAnimation/WinterAndSpring/GrampsAnimations.x3d" "GrampsAnimations.wrl"
"https://www.web3d.org/x3d/content/examples/HumanoidAnimation/WinterAndSpring/GrampsAnimations.wrl'/>" -->

<!-- visual debug assist -->
<Inline DEF='JointCoordinateAxes'
  url=' "JointCoordinateAxes.x3dv" "https://www.web3d.org/x3d/content/examples/HumanoidAnimation/WinterAndSpring/JointCoordinateAxes.x3d" ' />

<Transform> </Transform>
</Transform>
</Transform>
<Transform DEF='GrampsGrandKids'>
<!-- TODO Viewpoint DEF='GrampsGrandKidsView' description='Look at Gramps GrandKids' orientation='-0.25 0 0 0.3' position='0 4 9'/> -->
<!-- Leif -->
<Transform DEF='Leif'>
<!-- ROUTE information for LeifBox node:  [from Leif_Root_TranslationInterpolator.value_changed to set_translation ] [from Leif_HumanoidRoot_RotationInterpolator.value_changed to set_rotation ] -->
<Transform DEF='LeifBoxtranslation='-7.9962 0.0046 3.000'>
<!-- PointLight location='0 10 15' global='true' intensity='0.5' / -->
<!-- ROUTE information for LeifView node:  [from LeifViewSequencer.value_changed to set_bind ] -->
<Viewpoint DEF='LeifViewdescription='Look at Leiforientation='-0.25 0 0 0.5position='0 2 4'/>

<Inline DEF='LeifAnimated'
  url=' LeifAnimated.x3d"https://www.web3d.org/x3d/content/examples/HumanoidAnimation/WinterAndSpring/LeifAnimated.x3d" "LeifAnimated.wrl" "https://www.web3d.org/x3d/content/examples/HumanoidAnimation/WinterAndSpring/LeifAnimated.wrl" ' />
</Transform>
</Transform>
<!-- Lily -->
<Transform DEF='Lily'>
<!-- PointLight location='0 10 15' global='true' intensity='0.5' / -->
<!-- ROUTE information for Lilyview node:  [from LilyViewSequencer.value_changed to set_bind ] -->
<Viewpoint DEF='Lilyviewdescription='Look at Lilyorientation='-0.25 0 0 0.5position='0 2 4'/>

<Inline DEF='LilyAnimated'
  url=' LilyAnimated.x3d"https://www.web3d.org/x3d/content/examples/HumanoidAnimation/WinterAndSpring/LilyAnimated.x3d" "LilyAnimated.wrl" "https://www.web3d.org/x3d/content/examples/HumanoidAnimation/WinterAndSpring/LilyAnimated.wrl" ' />
</Transform>
</Transform>
<!-- Tufani -->
<Transform DEF='Tufani'>
<!-- PointLight location='0 10 15' global='true' intensity='0.5' / -->
<!-- ROUTE information for Tufaniview node:  [from TufaniViewSequencer.value_changed to set_bind ] -->
<Viewpoint DEF='Tufaniviewdescription='Look at Tufaniorientation='-0.25 0 0 0.5position='0 2 4'/>

<Inline DEF='TufaniAnimated'
  url=' TufaniAnimated.x3d"https://www.web3d.org/x3d/content/examples/HumanoidAnimation/WinterAndSpring/TufaniAnimated.x3d" "TufaniAnimated.wrl" "https://www.web3d.org/x3d/content/examples/HumanoidAnimation/WinterAndSpring/TufaniAnimated.wrl" ' />
</Transform>
</Transform>
</Transform>
<!-- Gramps and GrandKids Translation and Orientation -->
<!-- All other animations are in file for character -->
<!-- ROUTE information for Gramps_HumanoidRoot_TranslationInterpolator node:  [from Clock100Seconds.fraction_changed to set_fraction ] [from value_changed to GrampsBox.set_translation ] -->
<PositionInterpolator DEF='Gramps_HumanoidRoot_TranslationInterpolatorkey='0 0.09 0.11 0.22 0.43 0.55 0.63 0.73 0.85 0.86 0.88 0.90 0.92 0.94 0.96 0.98 1keyValue='6.6 0 0.5 6.8557 0 0.5 6.8557 0 0.5 9.8557 0 3.5 9.8557 0.1 3.5 9.8557 0 3.5 14.3558 0 8.0 16.8558 0 15.0 21.3557 0 24.5 21.3557 0.05 24.5 21.3557 0 24.5 21.3557 0.05 24.5 21.3557 0 24.5 21.3557 0.05 24.5 21.3557 0 24.5 21.3557 0.1 24.5 21.3557 0 24.5'/>

<!-- ROUTE information for Gramps_HumanoidRoot_RotationInterpolator node:  [from Clock100Seconds.fraction_changed to set_fraction ] [from value_changed to GrampsBox.set_rotation ] -->
<OrientationInterpolator DEF='Gramps_HumanoidRoot_RotationInterpolatorkey='0 0.09 0.11 0.22 0.25 0.43 0.55 0.63 0.73 0.85 0.88 0.90 0.92 0.94 0.96 0.98 1keyValue='0 1 0 1.65 0 1 0 1.65 0 1 0 1 0 1 0 -0.5 0 1 0 -1 0 1 0 -1.7 0 1 0 1 0 1 0 0.35 0 1 0 0.35 0 1 0 0.35 0 1 0 0.35 0 1 0 0.35 0 1 0 0.35 0 1 0 0.35 0 1 0 0.35 0 1 0 0.36 0 1 0 0.36'/>

< ROUTE  fromNode=' Clock100Seconds' fromField='fraction_changed' toNode=' Gramps_HumanoidRoot_TranslationInterpolator' toField='set_fraction'/>
< ROUTE  fromNode=' Gramps_HumanoidRoot_TranslationInterpolator' fromField='value_changed' toNode=' GrampsBox' toField='set_translation'/>
< ROUTE  fromNode=' Clock100Seconds' fromField='fraction_changed' toNode=' Gramps_HumanoidRoot_RotationInterpolator' toField='set_fraction'/>
< ROUTE  fromNode=' Gramps_HumanoidRoot_RotationInterpolator' fromField='value_changed' toNode=' GrampsBox' toField='set_rotation'/>
<!-- ROUTE information for Leif_Root_TranslationInterpolator node:  [from Clock100Seconds.fraction_changed to set_fraction ] [from value_changed to LeifBox.set_translation ] -->
<PositionInterpolator DEF='Leif_Root_TranslationInterpolatorkey='0 0.09 0.11 0.21 0.223 0.43 0.55 0.63 0.73 0.75 0.85 0.9 1keyValue='-7.9962 0.0046 3.000 -7.9962 0.0046 3.000 -7.9962 0.0046 3.000 -7.9962 0.1046 3.000 -7.9962 0.0046 3.000 9.0038 0.0796 2.4999 11.5048 0.0796 3.4999 16.0038 0.0796 7.8699 18.5038 0.1796 14.8699 18.5038 0.0796 14.8699 23.0038 0.0796 24.3699 23.0038 0.0796 24.3699 23.0038 0.0796 24.3699'/>

<!-- ROUTE information for Leif_HumanoidRoot_RotationInterpolator node:  [from Clock100Seconds.fraction_changed to set_fraction ] [from value_changed to LeifBox.set_rotation ] -->
<OrientationInterpolator DEF='Leif_HumanoidRoot_RotationInterpolatorkey='0 0.05 0.11 0.22 0.25 0.43 0.55 0.63 0.73 0.85 0.88 0.90 0.92 0.94 0.96 0.98 1keyValue='0 0 1 0 0 1 0 1.6 0 1 0 1.6 0 1 0 1.6 0 1 0 1.6 0 1 0 1.6 0 1 0 1.0 0 1 0 0.5 0 1 0 0.3 0 1 0 0.3 0 1 0 0.3 0 1 0 0.3 0 1 0 0.3 0 1 0 0.3 0 1 0 0.3 0 1 0 0.3 0 1 0 0.3'/>

< ROUTE  fromNode=' Clock100Seconds' fromField='fraction_changed' toNode=' Leif_Root_TranslationInterpolator' toField='set_fraction'/>
< ROUTE  fromNode=' Leif_Root_TranslationInterpolator' fromField='value_changed' toNode=' LeifBox' toField='set_translation'/>
< ROUTE  fromNode=' Clock100Seconds' fromField='fraction_changed' toNode=' Leif_HumanoidRoot_RotationInterpolator' toField='set_fraction'/>
< ROUTE  fromNode=' Leif_HumanoidRoot_RotationInterpolator' fromField='value_changed' toNode=' LeifBox' toField='set_rotation'/>
<!-- ROUTE information for Lily_HumanoidRoot_TranslationInterpolator node:  [from Clock100Seconds.fraction_changed to set_fraction ] [from value_changed to LilyBox.set_translation ] -->
<PositionInterpolator DEF='Lily_HumanoidRoot_TranslationInterpolatorkey='0 0.09 0.11 0.225 0.43 0.55 0.63 0.73 0.85 0.86 1keyValue='-8.0962 0.0046 5.600 -8.0962 0.0046 5.600 -8.0962 0.0046 5.600 -8.0962 0.0046 5.600 8.9038 0.0796 3.0999 10.1538 0.0796 3.0999 15.1538 0.0796 7.8499 17.6538 0.0796 14.8499 22.1538 0.0796 24.3499 22.1538 0.0796 24.3499 22.1538 0.0796 24.3499'/>

<!-- ROUTE information for Lily_HumanoidRoot_RotationInterpolator node:  [from Clock100Seconds.fraction_changed to set_fraction ] [from value_changed to LilyBox.set_rotation ] -->
<OrientationInterpolator DEF='Lily_HumanoidRoot_RotationInterpolatorkey='0 0.07 0.11 0.22 0.25 0.43 0.55 0.63 0.73 0.85 0.88 0.90 0.92 0.94 0.96 0.98 1keyValue='0 0 1 0 0 1 0 1.6 0 1 0 1.6 0 1 0 1.6 0 1 0 1.6 0 1 0 1.6 0 1 0 1.0 0 1 0 0.5 0 1 0 0.3 0 1 0 0.3 0 1 0 0.3 0 1 0 0.3 0 1 0 0.3 0 1 0 0.3 0 1 0 0.3 0 1 0 0.3 0 1 0 0.3'/>

< ROUTE  fromNode=' Clock100Seconds' fromField='fraction_changed' toNode=' Lily_HumanoidRoot_TranslationInterpolator' toField='set_fraction'/>
< ROUTE  fromNode=' Lily_HumanoidRoot_TranslationInterpolator' fromField='value_changed' toNode=' LilyBox' toField='set_translation'/>
< ROUTE  fromNode=' Clock100Seconds' fromField='fraction_changed' toNode=' Lily_HumanoidRoot_RotationInterpolator' toField='set_fraction'/>
< ROUTE  fromNode=' Lily_HumanoidRoot_RotationInterpolator' fromField='value_changed' toNode=' LilyBox' toField='set_rotation'/>
<!-- ROUTE information for Tufani_HumanoidRoot_TranslationInterpolator node:  [from Clock100Seconds.fraction_changed to set_fraction ] [from value_changed to TufaniBox.set_translation ] -->
<PositionInterpolator DEF='Tufani_HumanoidRoot_TranslationInterpolatorkey='0 0.09 0.11 0.227 0.43 0.55 0.63 0.73 0.85 0.86 1keyValue='-8.0962 0.0046 6.400 -8.0962 0.0046 6.400 -8.0962 0.0046 6.400 -8.0962 0.0046 6.400 8.7038 0.0796 3.8999 9.2038 0.0796 3.6499 13.6538 0.0796 7.7699 16.1538 0.0796 14.7699 20.6538 0.0796 24.2699 20.6538 0.0796 24.2699 20.6538 0.0796 24.2699'/>

<!-- ROUTE information for Tufani_HumanoidRoot_RotationInterpolator node:  [from Clock100Seconds.fraction_changed to set_fraction ] [from value_changed to TufaniBox.set_rotation ] -->
<OrientationInterpolator DEF='Tufani_HumanoidRoot_RotationInterpolatorkey='0 0.09 0.11 0.22 0.25 0.43 0.55 0.63 0.73 0.85 0.88 0.90 0.92 0.94 0.96 0.98 1keyValue='0 0 1 0 0 1 0 1.6 0 1 0 1.6 0 1 0 1.6 0 1 0 1.6 0 1 0 1.6 0 1 0 1.0 0 1 0 0.5 0 1 0 0.3 0 1 0 0.3 0 1 0 0.3 0 1 0 0.3 0 1 0 0.3 0 1 0 0.3 0 1 0 0.3 0 1 0 0.3 0 1 0 0.3'/>

< ROUTE  fromNode=' Clock100Seconds' fromField='fraction_changed' toNode=' Tufani_HumanoidRoot_TranslationInterpolator' toField='set_fraction'/>
< ROUTE  fromNode=' Tufani_HumanoidRoot_TranslationInterpolator' fromField='value_changed' toNode=' TufaniBox' toField='set_translation'/>
< ROUTE  fromNode=' Clock100Seconds' fromField='fraction_changed' toNode=' Tufani_HumanoidRoot_RotationInterpolator' toField='set_fraction'/>
< ROUTE  fromNode=' Tufani_HumanoidRoot_RotationInterpolator' fromField='value_changed' toNode=' TufaniBox' toField='set_rotation'/>
</Group>
<Group DEF='SceneViewPoints02'>
<!-- Insert other PageDown viewpoints before final titles -->
<Transform DEF='WSDedicationTitletranslation='10 10 -10'>
<!-- ROUTE information for WSDedicationTitleView node:  [from WSDedicationTitleViewSequencer.value_changed to set_bind ] -->
<Viewpoint DEF='WSDedicationTitleViewdescription='Look at Dedication titlejump='falseorientation='-0.15 0 0 0.2position='0 1 5'/>

<Shape>
<Box size='4 3 0.25'/>
<Appearance> </Appearance>
</Shape>
</Transform>
<Transform DEF='WSThanksTitletranslation='10 10 -15'>
<!-- ROUTE information for WSThanksTitleView node:  [from WSThanksTitleViewSequencer.value_changed to set_bind ] -->
<Viewpoint DEF='WSThanksTitleViewdescription='Look at Thanks titlejump='falseorientation='-0.15 0 0 0.2position='0 1 5'/>

<Shape>
<Box size='4 3 0.25'/>
<Appearance> </Appearance>
</Shape>
</Transform>
<Transform DEF='WSMusicCreditsTitletranslation='10 10 -20'>
<!-- ROUTE information for WSMusicCreditsTitleView node:  [from WSMusicCreditsTitleViewSequencer.value_changed to set_bind ] -->
<Viewpoint DEF='WSMusicCreditsTitleViewdescription='Look at Music Credits titlejump='falseorientation='-0.15 0 0 0.2position='0 1 5'/>

<Shape>
<Box size='4 3 0.25'/>
<Appearance> </Appearance>
</Shape>
</Transform>
</Group>
</Group>
</Group>
<!-- Sequencers for Viewpoints -->
<!-- ROUTE information for Scene_StageFarViewSequencer node:  [from Clock100Seconds.fraction_changed to set_fraction ] [from value_changed to Scene_StageFarView.set_bind ] -->
<BooleanSequencer DEF='Scene_StageFarViewSequencerkey='0 1keyValue='true false'/>

< ROUTE  fromNode=' Clock100Seconds' fromField='fraction_changed' toNode=' Scene_StageFarViewSequencer' toField='set_fraction'/>
< ROUTE  fromNode=' Scene_StageFarViewSequencer' fromField='value_changed' toNode=' Scene_StageFarView' toField='set_bind'/>
<!-- ROUTE information for WinterAndSpringTitleViewSequencer node:  [from Clock100Seconds.fraction_changed to set_fraction ] [from value_changed to WinterAndSpringTitleView.set_bind ] -->
<BooleanSequencer DEF='WinterAndSpringTitleViewSequencerkey='0 0.03 1keyValue='false true false'/>

< ROUTE  fromNode=' Clock100Seconds' fromField='fraction_changed' toNode=' WinterAndSpringTitleViewSequencer' toField='set_fraction'/>
< ROUTE  fromNode=' WinterAndSpringTitleViewSequencer' fromField='value_changed' toNode=' WinterAndSpringTitleView' toField='set_bind'/>
<!-- ROUTE information for WSAuthorsTitleViewSequencer node:  [from Clock100Seconds.fraction_changed to set_fraction ] [from value_changed to WSAuthorsTitleView.set_bind ] -->
<BooleanSequencer DEF='WSAuthorsTitleViewSequencerkey='0 0.06 1keyValue='false true false'/>

< ROUTE  fromNode=' Clock100Seconds' fromField='fraction_changed' toNode=' WSAuthorsTitleViewSequencer' toField='set_fraction'/>
< ROUTE  fromNode=' WSAuthorsTitleViewSequencer' fromField='value_changed' toNode=' WSAuthorsTitleView' toField='set_bind'/>
<!-- ROUTE information for Scene_GrampsBack1ViewSequencer node:  [from Clock100Seconds.fraction_changed to set_fraction ] [from value_changed to Scene_GrampsBack1View.set_bind ] -->
<BooleanSequencer DEF='Scene_GrampsBack1ViewSequencerkey='0 0.09 1keyValue='false true false'/>

< ROUTE  fromNode=' Clock100Seconds' fromField='fraction_changed' toNode=' Scene_GrampsBack1ViewSequencer' toField='set_fraction'/>
< ROUTE  fromNode=' Scene_GrampsBack1ViewSequencer' fromField='value_changed' toNode=' Scene_GrampsBack1View' toField='set_bind'/>
<!-- ROUTE information for Scene_KidsRunningTowardGrampsSequencer node:  [from Clock100Seconds.fraction_changed to set_fraction ] [from value_changed to Scene_KidsRunningTowardGramps.set_bind ] -->
<BooleanSequencer DEF='Scene_KidsRunningTowardGrampsSequencerkey='0 0.23 1keyValue='false true false'/>

< ROUTE  fromNode=' Clock100Seconds' fromField='fraction_changed' toNode=' Scene_KidsRunningTowardGrampsSequencer' toField='set_fraction'/>
< ROUTE  fromNode=' Scene_KidsRunningTowardGrampsSequencer' fromField='value_changed' toNode=' Scene_KidsRunningTowardGramps' toField='set_bind'/>
<!-- ROUTE information for LeifViewSequencer node:  [from Clock100Seconds.fraction_changed to set_fraction ] [from value_changed to LeifView.set_bind ] -->
<BooleanSequencer DEF='LeifViewSequencerkey='0 0.30 1keyValue='false false false'/>

< ROUTE  fromNode=' Clock100Seconds' fromField='fraction_changed' toNode=' LeifViewSequencer' toField='set_fraction'/>
< ROUTE  fromNode=' LeifViewSequencer' fromField='value_changed' toNode=' LeifView' toField='set_bind'/>
<!-- ROUTE information for LilyViewSequencer node:  [from Clock100Seconds.fraction_changed to set_fraction ] [from value_changed to Lilyview.set_bind ] -->
<BooleanSequencer DEF='LilyViewSequencerkey='0 0.33 1keyValue='false true false'/>

< ROUTE  fromNode=' Clock100Seconds' fromField='fraction_changed' toNode=' LilyViewSequencer' toField='set_fraction'/>
< ROUTE  fromNode=' LilyViewSequencer' fromField='value_changed' toNode=' Lilyview' toField='set_bind'/>
<!-- ROUTE information for TufaniViewSequencer node:  [from Clock100Seconds.fraction_changed to set_fraction ] [from value_changed to Tufaniview.set_bind ] -->
<BooleanSequencer DEF='TufaniViewSequencerkey='0 0.36 1keyValue='false false false'/>

< ROUTE  fromNode=' Clock100Seconds' fromField='fraction_changed' toNode=' TufaniViewSequencer' toField='set_fraction'/>
< ROUTE  fromNode=' TufaniViewSequencer' fromField='value_changed' toNode=' Tufaniview' toField='set_bind'/>
<!-- ROUTE information for Gramps01ViewSequencer node:  [from Clock100Seconds.fraction_changed to set_fraction ] [from value_changed to Gramps01View.set_bind ] -->
<BooleanSequencer DEF='Gramps01ViewSequencerkey='0 0.56 1keyValue='false true false'/>

< ROUTE  fromNode=' Clock100Seconds' fromField='fraction_changed' toNode=' Gramps01ViewSequencer' toField='set_fraction'/>
< ROUTE  fromNode=' Gramps01ViewSequencer' fromField='value_changed' toNode=' Gramps01View' toField='set_bind'/>
<!-- ROUTE information for Gramps03ViewSequencer node:  [from Clock100Seconds.fraction_changed to set_fraction ] [from value_changed to Gramps03View.set_bind ] -->
<BooleanSequencer DEF='Gramps03ViewSequencerkey='0 0.75 1keyValue='false true true'/>

< ROUTE  fromNode=' Clock100Seconds' fromField='fraction_changed' toNode=' Gramps03ViewSequencer' toField='set_fraction'/>
< ROUTE  fromNode=' Gramps03ViewSequencer' fromField='value_changed' toNode=' Gramps03View' toField='set_bind'/>
<!-- ROUTE information for WSDedicationTitleViewSequencer node:  [from Clock100Seconds.fraction_changed to set_fraction ] [from value_changed to WSDedicationTitleView.set_bind ] -->
<BooleanSequencer DEF='WSDedicationTitleViewSequencerkey='0 0.89 1keyValue='false true false'/>

< ROUTE  fromNode=' Clock100Seconds' fromField='fraction_changed' toNode=' WSDedicationTitleViewSequencer' toField='set_fraction'/>
< ROUTE  fromNode=' WSDedicationTitleViewSequencer' fromField='value_changed' toNode=' WSDedicationTitleView' toField='set_bind'/>
<!-- ROUTE information for WSThanksTitleViewSequencer node:  [from Clock100Seconds.fraction_changed to set_fraction ] [from value_changed to WSThanksTitleView.set_bind ] -->
<BooleanSequencer DEF='WSThanksTitleViewSequencerkey='0 0.93 1keyValue='false true false'/>

< ROUTE  fromNode=' Clock100Seconds' fromField='fraction_changed' toNode=' WSThanksTitleViewSequencer' toField='set_fraction'/>
< ROUTE  fromNode=' WSThanksTitleViewSequencer' fromField='value_changed' toNode=' WSThanksTitleView' toField='set_bind'/>
<!-- ROUTE information for WSMusicCreditsTitleViewSequencer node:  [from Clock100Seconds.fraction_changed to set_fraction ] [from value_changed to WSMusicCreditsTitleView.set_bind ] -->
<BooleanSequencer DEF='WSMusicCreditsTitleViewSequencerkey='0 0.96 1keyValue='false true false'/>

< ROUTE  fromNode=' Clock100Seconds' fromField='fraction_changed' toNode=' WSMusicCreditsTitleViewSequencer' toField='set_fraction'/>
< ROUTE  fromNode=' WSMusicCreditsTitleViewSequencer' fromField='value_changed' toNode=' WSMusicCreditsTitleView' toField='set_bind'/>
<Group DEF='BackgroundsAndBackgroundSwitching'>
<!-- Backgrounds -->
<!-- This is black for all -->
<!-- ROUTE information for Background1Black node:  [from Background1BlackSequencer.value_changed to set_bind ] -->
<Background DEF='Background1BlackgroundColor='0 0 0'/>

<!-- This is light gray sky and green grass -->

<!-- This is blue sky and green grass -->

<!-- This is DarkGrey background and white text for all -->

<!-- ROUTE information for Background1BlackSequencer node:  [from Clock100Seconds.fraction_changed to set_fraction ] [from value_changed to Background1Black.set_bind ] -->
<BooleanSequencer DEF='Background1BlackSequencerkey='0 0.90 1keyValue='true true true'/>

<!-- ROUTE information for Background2GraySkyGreenGrassSequencer node:  [from Clock100Seconds.fraction_changed to set_fraction ] [from value_changed to Background2GraySkyGreenGrass.set_bind ] -->
<BooleanSequencer DEF='Background2GraySkyGreenGrassSequencerkey='0 0.09 1keyValue='false true false'/>

<!-- ROUTE information for Background3SkyBlueGreenGrassSequencer node:  [from Clock100Seconds.fraction_changed to set_fraction ] [from value_changed to Background3BlueSkyGreenGrass.set_bind ] -->
<BooleanSequencer DEF='Background3SkyBlueGreenGrassSequencerkey='0 0.22 1keyValue='false true false'/>

<!-- ROUTE information for Background4DarkGreySequencer node:  [from Clock100Seconds.fraction_changed to set_fraction ] [from value_changed to Background4DarkGrey.set_bind ] -->
<BooleanSequencer DEF='Background4DarkGreySequencerkey='0 0.85 1keyValue='false true false'/>

< ROUTE  fromNode=' Clock100Seconds' fromField='fraction_changed' toNode=' Background1BlackSequencer' toField='set_fraction'/>
< ROUTE  fromNode=' Clock100Seconds' fromField='fraction_changed' toNode=' Background2GraySkyGreenGrassSequencer' toField='set_fraction'/>
< ROUTE  fromNode=' Clock100Seconds' fromField='fraction_changed' toNode=' Background3SkyBlueGreenGrassSequencer' toField='set_fraction'/>
< ROUTE  fromNode=' Clock100Seconds' fromField='fraction_changed' toNode=' Background4DarkGreySequencer' toField='set_fraction'/>
< ROUTE  fromNode=' Background1BlackSequencer' fromField='value_changed' toNode=' Background1Black' toField='set_bind'/>
< ROUTE  fromNode=' Background2GraySkyGreenGrassSequencer' fromField='value_changed' toNode=' Background2GraySkyGreenGrass' toField='set_bind'/>
< ROUTE  fromNode=' Background3SkyBlueGreenGrassSequencer' fromField='value_changed' toNode=' Background3BlueSkyGreenGrass' toField='set_bind'/>
< ROUTE  fromNode=' Background4DarkGreySequencer' fromField='value_changed' toNode=' Background4DarkGrey' toField='set_bind'/>
</Group>
<!-- ROUTE information for EveryInlineLoadSensor node:  [from loadTime to StartTIME.startTime ] -->
<LoadSensor DEF='EveryInlineLoadSensor'>
<Inline USE=' PathMeshTopSurface'/>
<Inline USE=' Pathway'/>
<Inline USE=' Bushes'/>
<Inline USE=' FlowerSet'/>
<Inline USE=' FlowerGardens'/>
<Inline USE=' Gramps11'/>
<Inline USE=' JointCoordinateAxes'/>
<Inline USE=' CaneFitting'/>
<Inline USE=' LeifAnimated'/>
<Inline USE=' LilyAnimated'/>
<Inline USE=' TufaniAnimated'/>
</LoadSensor>
< ROUTE  fromNode=' EveryInlineLoadSensor' fromField='loadTime' toNode=' StartTIME' toField='startTime'/>
</Scene>
</X3D>
<!--

to top <!-- Event Graph ROUTE Table shows event connections -->
 
<!-- Index for DEF nodes: Background1Black, Background1BlackSequencer, Background2GraySkyGreenGrass, Background2GraySkyGreenGrassSequencer, Background3BlueSkyGreenGrass, Background3SkyBlueGreenGrassSequencer, Background4DarkGrey, Background4DarkGreySequencer, BackgroundsAndBackgroundSwitching, BorderFlowers, Bushes, BushesTransform, CaneFitting, CharactersAndCharacterViewpoints, Clock100Seconds, Clock100SecondsTRIGGER, DelayFILTER, DelayTIME, EveryInlineLoadSensor, Floor, FlowerGardens, FlowerSet, Gramps, Gramps_HumanoidRoot_RotationInterpolator, Gramps_HumanoidRoot_TranslationInterpolator, Gramps01View, Gramps01ViewSequencer, Gramps03View, Gramps03ViewSequencer, Gramps11, GrampsBox, GrampsGrandKids, GrampsStage, JointCoordinateAxes, Leif, Leif_HumanoidRoot_RotationInterpolator, Leif_Root_TranslationInterpolator, LeifAnimated, LeifBox, LeifView, LeifViewSequencer, Lily, Lily_HumanoidRoot_RotationInterpolator, Lily_HumanoidRoot_TranslationInterpolator, LilyAnimated, LilyBox, Lilyview, LilyViewSequencer, Melodies1, PathMeshTopSurface, Pathway, PathwayGrid, PathwaySurface1, PathwaySurface2, Scene_GrampsBack1View, Scene_GrampsBack1ViewSequencer, Scene_KidsRunningTowardGramps, Scene_KidsRunningTowardGrampsSequencer, Scene_StageFarView, Scene_StageFarViewSequencer, SceneMusic1, SceneViewpoints01, SceneViewPoints02, StageDecorations, StageSurface, StartTIME, TitlesandViewpointsInOrderofAppearance, TitleSet1, TitleSet1of2, Tufani, Tufani_HumanoidRoot_RotationInterpolator, Tufani_HumanoidRoot_TranslationInterpolator, TufaniAnimated, TufaniBox, Tufaniview, TufaniViewSequencer, TwoFlowerGardens, WinterAndSpringTitle, WinterAndSpringTitleView, WinterAndSpringTitleViewSequencer, WSAudio, WSAuthorsTitle, WSAuthorsTitleView, WSAuthorsTitleViewSequencer, WSDedicationTitle, WSDedicationTitleView, WSDedicationTitleViewSequencer, WSMusicCreditsTitle, WSMusicCreditsTitleView, WSMusicCreditsTitleViewSequencer, WSThanksTitle, WSThanksTitleView, WSThanksTitleViewSequencer

Index for Viewpoint nodes: Gramps01View, Gramps03View, LeifView, Lilyview, Scene_GrampsBack1View, Scene_KidsRunningTowardGramps, Scene_StageFarView, Tufaniview, WinterAndSpringTitleView, WSAuthorsTitleView, WSDedicationTitleView, WSMusicCreditsTitleView, WSThanksTitleView
-->

Event Graph ROUTE Table entries with 57 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.

EveryInlineLoadSensor
LoadSensor
loadTime
SFTime

ROUTE
event to
(1)
StartTIME
TimeSensor
startTime
SFTime

 
 
then
StartTIME
TimeSensor
stopTime
SFTime

ROUTE
event to
(2)
DelayTIME
TimeSensor
set_startTime
SFTime

 
 
then
DelayTIME
TimeSensor
isActive
SFBool

ROUTE
event to
(3)
DelayFILTER
BooleanFilter
set_boolean
SFBool

 
 
then
DelayFILTER
BooleanFilter
inputFalse
SFBool

ROUTE
event to
(4)
Clock100SecondsTRIGGER
TimeTrigger
set_boolean
SFBool

 
 
then
Clock100SecondsTRIGGER
TimeTrigger
triggerTime
SFTime

ROUTE
event to
(5)
Clock100Seconds
TimeSensor
set_startTime
SFTime
 
 
 
then
StartTIME
TimeSensor
stopTime
SFTime

ROUTE
event to
(2)
Melodies1
AudioClip
set_startTime
SFTime



-->

<!-- Online at
https://www.web3d.org/x3d/content/examples/HumanoidAnimation/WinterAndSpring/MainStageIndex.html -->
<!-- Version control at
https://sourceforge.net/p/x3d/code/HEAD/tree/www.web3d.org/x3d/content/examples/HumanoidAnimation/WinterAndSpring/MainStage.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. -->