<?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='Immersive' version='3.3' xmlns:xsd='http://www.w3.org/2001/XMLSchema-instance' xsd:noNamespaceSchemaLocation='http://www.web3d.org/specifications/x3d-3.3.xsd'>
  <head>
    <meta content='WinterAndSpringHumanoidTimings.x3d' name='title'/>
    <meta content='Example animation timings, manually translated from tool outputs and export.' name='description'/>
    <meta content='https://sourceforge.net/p/x3d/code/HEAD/tree/www.web3d.org/x3d/content/examples/HumanoidAnimation/WinterAndSpring/originals/WinterAndSpringHumanoidTimings.x3dv' name='reference'/>
    <meta content='reference .x3dv model successfully translated by Castle Game Engine, IICM, and Xj3D import (with loss of comments)' name='info'/>
    <meta content='Katy Schildmeyer' name='creator'/>
    <meta content='Carol McDonald' name='creator'/>
    <meta content='Joe Williams' name='translator'/>
    <meta content='Don Brutzman' name='translator'/>
    <meta content='2 July 2023' name='created'/>
    <meta content='9 July 2023' name='translated'/>
    <meta content='19 September 2023' name='modified'/>
    <meta content='MetadataString approach for name=poses sequence, matching the key/keyValue pairs, is experimental but seems unambiguous.' name='hint'/>
    <meta content='https://www.web3d.org/x3d/content/examples/HumanoidAnimation/WinterAndSpring/WinterAndSpringHumanoidTimings.x3d' name='identifier'/>
    <meta content='Cinema 4D https://www.maxon.net/en/cinema-4d' name='generator'/>
    <meta content='X3D-Edit 4.0, https://www.web3d.org/x3d/tools/X3D-Edit' name='generator'/>
    <meta content='../license.html' name='license'/>
  </head>
  <Scene>
    <WorldInfo title='WinterAndSpringHumanoidTimings.x3d'/>
    <Viewpoint DEF='EntryView1' description='Hello characters 1' position='0 2 40'/>
    <Viewpoint DEF='EntryView2' centerOfRotation='0 10 10' description='Hello characters 2' orientation='0 1 0 -0.643501' position='-15 10 30'>
      <!-- local lookat point: 0 10 10 -->
    </Viewpoint>
    <Transform DEF='TextRoot'>
      <Shape DEF='ModelDescriptionText'>
        <Text solid='false' string='"This scene tests" "" "experimental approaches" "" "for human animation"'>
          <FontStyle family='"SANS"' justify='"MIDDLE" "MIDDLE"' size='0.8' style='BOLD'/>
        </Text>
        <Appearance>
          <Material diffuseColor='0.960784 0.894118 0'/>
        </Appearance>
      </Shape>
    </Transform>
    <Transform DEF='Root4'/>
    <Transform DEF='Root5'/>
    <Transform DEF='Root6'/>
    <!-- WinterAndSpringHumanoidTimings -->
    <!-- Gramps_humanoid root is at 0 0.875 0 at start, now at given x and z with root now changed in height to 0.95 to #add pathway height. The actual Gramps height (y) may be slightly different but use this value for now. -->
    <PositionInterpolator DEF='Gramps_HumanoidRoot_TranslationInterpolator' key='0 0.09 0.11 0.22 0.043 0.55 0.63 0.73 0.85 0.86 1' keyValue='6.8557 0.95 0.5 6.8557 0.95 0.5 6.8557 0.95 0.5 9.8557 0.95 3.5 9.8557 0.95 3.5 9.8557 0.95 3.5 14.3558 0.95 8.0 16.8558 0.95 15.0 21.3557 0.95 24.5 21.3557 0.95 24.5 21.3557 0.95 24.5'>
      <MetadataString containerField='metadata' name='poses' value='"Gramps_Stand01" "Gramps_Stand01" "Gramps_Walk01" "Gramps_Stand02" "Gramps_Turn01" "Gramps_Walk01" "Gramps_Walk02" "Gramps_Skip01" "Gramps_Stand03" "Gramps_Stand03" "Gramps_Stand03"'/>
    </PositionInterpolator>
    <PositionInterpolator DEF='Leif_HumanoidRoot_TranslationInterpolator' key='0 0.09 0.11 0.223 0.043 0.55 0.63 0.73 0.85 0.86 1' keyValue='-7.9962 0.400 3.000 -7.9962 0.400 3.000 -7.9962 0.400 3.000 -7.9962 0.400 3.000 9.004 0.475 3.4999 11.5048 0.475 3.3699 16.0038 0.475 7.8699 18.5038 0.475 14.8699 23.0038 0.475 24.3699 23.0038 0.475 24.3699 23.0038 0.475 24.3699'>
      <MetadataString containerField='metadata' name='poses' value='"Leif_Stand01" "Leif_Stand01" "Leif_Stand01" "Leif_Run01" "Leif_Turn01" "Leif_Walk01" "Leif_Walk01" "Leif_Skip01" "Leif_Stand01" "Leif_Stand01" "Leif_Stand01"'/>
    </PositionInterpolator>
    <PositionInterpolator DEF='Lily_HumanoidRoot_TranslationInterpolator' key='0 0.09 0.11 0.225 0.043 0.55 0.63 0.73 0.85 0.86 1' keyValue='-8.0962 0.400 5.600 -8.0962 0.400 5.600 -8.0962 0.400 5.600 -8.0962 0.400 5.600 8.9038 0.475 4.0999 10.6538 0.475 3.3499 15.1538 0.475 7.8499 17.6538 0.475 14.8499 22.1538 0.475 24.3499 22.1538 0.475 24.3499 22.1538 0.475 24.3499'>
      <MetadataString containerField='metadata' name='poses' value='"Lily_Stand01" "Lily_Stand01" "Lily_Stand01" "Leif_Run01" "Lily_Turn01" "Lily_Walk01" "Lily_Walk01" "Lily_Skip01" "Lily_Stand01" "Lily_Stand01" "Lily_Stand01"'/>
    </PositionInterpolator>
    <PositionInterpolator DEF='Tufani_HumanoidRoot_TranslationInterpolator' key='0 0.09 0.11 0.227 0.043 0.55 0.63 0.73 0.85 0.86 1' keyValue='-8.0962 0.400 6.400 -8.0962 0.400 6.400 -8.0962 0.400 6.400 -8.0962 0.400 6.400 9.40338 0.475 4.3999 9.1538 0.475 3.2699 13.6538 0.475 7.7699 16.1538 0.475 14.7699 20.6538 0.475 24.2699 20.6538 0.475 24.2699 20.6538 0.475 24.2699'>
      <MetadataString containerField='metadata' name='poses' value='"Tufani_Stand01" "Tufani_Stand01" "Tufani_Stand01" "Tufani_Run01" "Tufani_Turn01" "Tufani_Walk01" "Tufani_Walk01" "Tufani_Skip01" "Tufani_Stand01" "Tufani_Stand01" "Tufani_Stand01"'/>
    </PositionInterpolator>
    <!-- Now add Background nodes with corresponding timing, as controlled by an identical key array -->
    <!-- TODO are we missing Background1 and Background2? -->
    <!-- This is black for all -->
    <Background DEF='Background3Black' skyColor='0 0 0'/>
    <!-- This is blue sky and green grass -->
    <Background DEF='Background4SkyBlueGreenGrass' groundAngle='1.57' groundColor='0.356863 0.639216 0 0.721569 1 0.501961' skyColor='0 0.71 0.886'/>
    <!-- This is light gray sky and green grass -->
    <Background DEF='Background5LightGrey' skyColor='0.827 0.827 0.827'/>
    <!-- This is black background and white text for all -->
    <Background DEF='Background6DarkGrey' skyColor='0.6 0.2 0.2'/>
    <!-- Animation controls -->
    <TimeSensor DEF='Clock10Seconds' cycleInterval='5' loop='true'/>
    <TimeSensor DEF='Clock100Seconds' cycleInterval='100' enabled='false'/>
    <BooleanSequencer DEF='Background3Sequencer' key='0 0.09 0.11 0.22 0.043 0.55 0.63 0.73 0.85 0.86 1' keyValue='true true true false false false false false false false false'/>
    <BooleanSequencer DEF='Background4Sequencer' key='0 0.09 0.11 0.22 0.043 0.55 0.63 0.73 0.85 0.86 1' keyValue='false false false true true false false false false false false'/>
    <BooleanSequencer DEF='Background5Sequencer' key='0 0.09 0.11 0.22 0.043 0.55 0.63 0.73 0.85 0.86 1' keyValue='false false false false false true true true false false false'/>
    <BooleanSequencer DEF='Background6Sequencer' key='0 0.09 0.11 0.22 0.043 0.55 0.63 0.73 0.85 0.86 1' keyValue='false false false false false false false false true true true'/>
    <ROUTE fromField='value_changed' fromNode='Background3Sequencer' toField='set_bind' toNode='Background3Black'/>
    <ROUTE fromField='value_changed' fromNode='Background4Sequencer' toField='set_bind' toNode='Background4SkyBlueGreenGrass'/>
    <ROUTE fromField='value_changed' fromNode='Background5Sequencer' toField='set_bind' toNode='Background5LightGrey'/>
    <ROUTE fromField='value_changed' fromNode='Background6Sequencer' toField='set_bind' toNode='Background6DarkGrey'/>
    <ROUTE fromField='fraction_changed' fromNode='Clock10Seconds' toField='set_fraction' toNode='Background3Sequencer'/>
    <ROUTE fromField='fraction_changed' fromNode='Clock10Seconds' toField='set_fraction' toNode='Background4Sequencer'/>
    <ROUTE fromField='fraction_changed' fromNode='Clock10Seconds' toField='set_fraction' toNode='Background5Sequencer'/>
    <ROUTE fromField='fraction_changed' fromNode='Clock10Seconds' toField='set_fraction' toNode='Background6Sequencer'/>
    <ROUTE fromField='fraction_changed' fromNode='Clock100Seconds' toField='set_fraction' toNode='Background3Sequencer'/>
    <ROUTE fromField='fraction_changed' fromNode='Clock100Seconds' toField='set_fraction' toNode='Background4Sequencer'/>
    <ROUTE fromField='fraction_changed' fromNode='Clock100Seconds' toField='set_fraction' toNode='Background5Sequencer'/>
    <ROUTE fromField='fraction_changed' fromNode='Clock100Seconds' toField='set_fraction' toNode='Background6Sequencer'/>
    <!-- now move things around by modifying interpolator valuess -->
    <ROUTE fromField='fraction_changed' fromNode='Clock10Seconds' toField='set_fraction' toNode='Gramps_HumanoidRoot_TranslationInterpolator'/>
    <ROUTE fromField='fraction_changed' fromNode='Clock10Seconds' toField='set_fraction' toNode='Leif_HumanoidRoot_TranslationInterpolator'/>
    <ROUTE fromField='fraction_changed' fromNode='Clock10Seconds' toField='set_fraction' toNode='Lily_HumanoidRoot_TranslationInterpolator'/>
    <ROUTE fromField='fraction_changed' fromNode='Clock10Seconds' toField='set_fraction' toNode='Tufani_HumanoidRoot_TranslationInterpolator'/>
    <ROUTE fromField='fraction_changed' fromNode='Clock100Seconds' toField='set_fraction' toNode='Gramps_HumanoidRoot_TranslationInterpolator'/>
    <ROUTE fromField='fraction_changed' fromNode='Clock100Seconds' toField='set_fraction' toNode='Leif_HumanoidRoot_TranslationInterpolator'/>
    <ROUTE fromField='fraction_changed' fromNode='Clock100Seconds' toField='set_fraction' toNode='Lily_HumanoidRoot_TranslationInterpolator'/>
    <ROUTE fromField='fraction_changed' fromNode='Clock100Seconds' toField='set_fraction' toNode='Tufani_HumanoidRoot_TranslationInterpolator'/>
    <!-- now move things around by changing the Transform translation values -->
    <ROUTE fromField='value_changed' fromNode='Gramps_HumanoidRoot_TranslationInterpolator' toField='translation' toNode='TextRoot'/>
    <ROUTE fromField='value_changed' fromNode='Leif_HumanoidRoot_TranslationInterpolator' toField='translation' toNode='Root4'/>
    <ROUTE fromField='value_changed' fromNode='Lily_HumanoidRoot_TranslationInterpolator' toField='translation' toNode='Root5'/>
    <ROUTE fromField='value_changed' fromNode='Tufani_HumanoidRoot_TranslationInterpolator' toField='translation' toNode='Root6'/>
  </Scene>
</X3D>