<?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='https://www.web3d.org/specifications/x3d-3.3.xsd'>
  <head>
    <meta content='KelpForestMain.x3d' name='title'/>
    <meta content='This is the main entry to the Kelp Forest that loads all of the other components as Inline scenes.' name='description'/>
    <meta content='Don Brutzman' name='creator'/>
    <meta content='1 June 1998' name='created'/>
    <meta content='2 March 2026' name='modified'/>
    <meta content='http://faculty.nps.edu/brutzman/kelp' name='reference'/>
    <meta content='http://faculty.nps.edu/brutzman/kelp/KelpForestDesignPaper.pdf' name='reference'/>
    <meta content='Kelp Forest 3D models' name='subject'/>
    <meta content='All content has permissions for free use. Please provide credit to the Naval Postgraduate School (NPS) Modeling Virtual Environments and Simulation (MOVES) Institute.' name='accessRights'/>
    <meta content='https://www.web3d.org/x3d/content/examples/X3dForWebAuthors/KelpForestExhibit/KelpForestMain.x3d' name='identifier'/>
    <meta content='X3D-Edit 3.3, https://www.web3d.org/x3d/tools/X3D-Edit' name='generator'/>
    <meta content='../license.html' name='license'/>
  </head>
  <Scene>
    <WorldInfo info='"Model of the Monterey Bay Aquarium Kelp Forest" "DTG of original update: 111500Jun98" "Created by Naval Postgraduate School students under the supervision of Don Brutzman" "Feel free to copy anything you wish - just give credit where it is due" "http://faculty.nps.edu/brutzman/kelp"' title='NPS Virtual Kelp Forest Exhibit'/>
    <NavigationInfo speed='3.0' type='"EXAMINE" "FLY" "WALK" "ANY"'/>
    <ExternProtoDeclare appinfo='ViewPositionOrientation prototype provides local position and orientation as user navigates with optional console output' name='ViewPositionOrientation' url='"../../Savage/Tools/Authoring/ViewPositionOrientationPrototype.x3d#ViewPositionOrientation" "https://www.web3d.org/x3d/content/examples/Savage/Tools/Authoring/ViewPositionOrientationPrototype.x3d#ViewPositionOrientation" "../../Savage/Tools/Authoring/ViewPositionOrientationPrototype.wrl#ViewPositionOrientation" "https://www.web3d.org/x3d/content/examples/Savage/Tools/Authoring/ViewPositionOrientationPrototype.wrl#ViewPositionOrientation"'>
      <field accessType='inputOutput' appinfo='Whether or not ViewPositionOrientation sends output to console.' name='enabled' type='SFBool'/>
      <field accessType='initializeOnly' appinfo='Output internal trace messages for debugging this node - developer use only can be ignored.' name='traceEnabled' type='SFBool'/>
      <field accessType='inputOnly' appinfo='Ability to turn output tracing on/off at runtime.' name='set_traceEnabled' type='SFBool'/>
      <field accessType='outputOnly' appinfo='Output local position.' name='position_changed' type='SFVec3f'/>
      <field accessType='outputOnly' appinfo='Output local orientation.' name='orientation_changed' type='SFRotation'/>
      <field accessType='outputOnly' appinfo='MFString value of new Viewpoint for example: &lt;Viewpoint position="20 15 20" orientation="-0.516 0.83 0.212 0.9195"/>' name='outputViewpointString' type='MFString'/>
    </ExternProtoDeclare>
    <ProtoInstance DEF='ConsoleOutputViewPositionOrientation' name='ViewPositionOrientation'>
      <fieldValue name='enabled' value='false'/>
    </ProtoInstance>
    <ExternProtoDeclare appinfo='Reads waypoints and legSpeeds/legDurations/defaultSpeed to provide a customizable position/orientation interpolator.' name='WaypointInterpolator' url='"../../Savage/Tools/Animation/WaypointInterpolatorPrototype.x3d#WaypointInterpolator" "https://www.web3d.org/x3d/content/examples/Savage/Tools/Animation/WaypointInterpolatorPrototype.x3d#WaypointInterpolator" "../../Savage/Tools/Animation/WaypointInterpolatorPrototype.wrl#WaypointInterpolator" "https://www.web3d.org/x3d/content/examples/Savage/Tools/Animation/WaypointInterpolatorPrototype.wrl#WaypointInterpolator"'>
      <!-- Priority of use: legSpeeds (m/sec), legDurations (seconds), defaultSpeed (m/sec) -->
      <field accessType='initializeOnly' appinfo='Short description of what is animated by this WaypointInterpolator.' name='description' type='SFString'/>
      <field accessType='initializeOnly' appinfo='Waypoints being traversed with interpolation of intermediate positions and orientations.' name='waypoints' type='MFVec3f'/>
      <field accessType='inputOnly' appinfo='Add another single waypoint to array of waypoints recalculate interpolator values.' name='add_waypoint' type='SFVec3f'/>
      <field accessType='inputOnly' appinfo='Replace all waypoints recalculate interpolator values.' name='set_waypoints' type='MFVec3f'/>
      <field accessType='initializeOnly' appinfo='Whether to pitch child geometry (such as a vehicle) up or down to match vertical slope' name='pitchUpDownForVerticalWaypoints' type='SFBool'/>
      <field accessType='initializeOnly' appinfo='Units m/sec. If used, array lengths for legSpeeds and legDurations must be one less than number of waypoints.' name='legSpeeds' type='MFFloat'/>
      <field accessType='initializeOnly' appinfo='Units in seconds. If used, array lengths for legSpeeds and legDurations must be one less than number of waypoints.' name='legDurations' type='MFTime'/>
      <field accessType='initializeOnly' appinfo='Units m/sec.' name='defaultSpeed' type='SFFloat'/>
      <field accessType='initializeOnly' appinfo='turningRate (degrees/second) also determines standoff distance prior to waypoint where turn commences. If 0 turns are instantaneous.' name='turningRate' type='SFFloat'/>
      <field accessType='outputOnly' appinfo='Output calculation summing all leg durations, useful for setting TimeSensor cycleInterval. Units in seconds.' name='totalDuration' type='SFTime'/>
      <!-- interpolation fields -->
      <field accessType='inputOnly' appinfo='exposed PositionInterpolator and OrientationInterpolator setting' name='set_fraction' type='SFFloat'/>
      <field accessType='outputOnly' appinfo='exposed PositionInterpolator setting' name='position_changed' type='SFVec3f'/>
      <field accessType='outputOnly' appinfo='exposed OrientationInterpolator setting' name='orientation_changed' type='SFRotation'/>
      <!-- display-related fields -->
      <field accessType='inputOutput' appinfo='default color for non-active line segments' name='lineColor' type='SFColor'/>
      <field accessType='inputOutput' appinfo='highlightSegmentColors must contain two color values for each endpoint of the highlight segment.' name='highlightSegmentColor' type='SFColor'/>
      <field accessType='inputOutput' appinfo='1.0 is completely transparent, 0.0 is completely opaque.' name='transparency' type='SFFloat'/>
      <field accessType='initializeOnly' appinfo='allowed values: none; waypoints (produce labels at each waypoint); or interpolation (produce single moving label at interpolator time course speed location)' name='labelDisplayMode' type='SFString'/>
      <field accessType='initializeOnly' appinfo='allowed values: altitude depth (negate Y value) none' name='heightLabel' type='SFString'/>
      <field accessType='initializeOnly' appinfo='heightLabel relative location' name='labelOffset' type='SFVec3f'/>
      <field accessType='initializeOnly' appinfo='heightLabel text size' name='labelFontSize' type='SFFloat'/>
      <field accessType='initializeOnly' appinfo='heightLabel text color' name='labelColor' type='SFColor'/>
      <field accessType='initializeOnly' appinfo='enable console output to trace script computations and prototype progress' name='traceEnabled' type='SFBool'/>
      <field accessType='initializeOnly' appinfo='Output the number of waypoints totalDistance and totalDuration to console upon initialization' name='outputInitializationComputations' type='SFBool'/>
      <field accessType='inputOutput' appinfo='default color for vertical drop-line segments' name='verticalDropLineColor' type='SFColor'/>
      <field accessType='inputOutput' appinfo='1.0 is completely transparent, 0.0 is completely opaque.' name='verticalDropLineTransparency' type='SFFloat'/>
    </ExternProtoDeclare>
    <Group DEF='Viewpoints'>
      <Viewpoint description='Kelp Forest Monterey Bay Aquarium' position='0.0 -5.0 45.0'/>
      <Viewpoint description='Side Windows' fieldOfView='0.5' orientation='0.0 1.0 0.0 0.9' position='25.0 -4.0 15.0'/>
      <Viewpoint description='Star Fish' orientation='0.0 1.0 0.0 1.25' position='14.0 -5.75 1.0'/>
      <Viewpoint description='Inside Tank' orientation='0.0 1.0 0.0 3.14' position='0.0 -5.0 -7.0'/>
      <Viewpoint description='Top floor' fieldOfView='1.04719' orientation='-0.3 1.0 0.3 1.57079' position='12.5 5.0 -2.0'/>
      <Viewpoint description='Bird&apos;s Eye View' orientation='1.0 0.0 0.0 -1.57' position='0.0 19.0 -3.5'/>
      <Viewpoint description='Pump House' fieldOfView='0.6' orientation='0.0 1.0 0.0 1.3' position='-5.0 1.0 0.0'/>
    </Group>
    <Group DEF='Root'>
      <Background groundAngle='1.309 1.5707' groundColor='0.1 0.1 0.0 0.4 0.25 0.2 0.6 0.6 0.6' skyAngle='1.309 1.5707' skyColor='0.0 0.5 1.0 0.0 0.0 1.0 0.0 0.0 1.0'/>
      <Inline url='"IntroductionMessage.x3d" "https://www.web3d.org/x3d/content/examples/X3dForWebAuthors/KelpForestExhibit/IntroductionMessage.x3d" "IntroductionMessage.wrl" "https://www.web3d.org/x3d/content/examples/X3dForWebAuthors/KelpForestExhibit/IntroductionMessage.wrl"'/>
      <Collision enabled='false'>
        <Transform>
          <Inline url='"SharkLeftyLocale.x3d" "https://www.web3d.org/x3d/content/examples/X3dForWebAuthors/KelpForestExhibit/SharkLeftyLocale.x3d" "SharkLeftyLocale.wrl" "https://www.web3d.org/x3d/content/examples/X3dForWebAuthors/KelpForestExhibit/SharkLeftyLocale.wrl"'/>
        </Transform>
        <Transform>
          <Inline url='"SharkLucyLocale.x3d" "https://www.web3d.org/x3d/content/examples/X3dForWebAuthors/KelpForestExhibit/SharkLucyLocale.x3d" "SharkLucyLocale.wrl" "https://www.web3d.org/x3d/content/examples/X3dForWebAuthors/KelpForestExhibit/SharkLucyLocale.wrl"'/>
        </Transform>
        <Transform>
          <Inline url='"KelpTank.x3d" "https://www.web3d.org/x3d/content/examples/X3dForWebAuthors/KelpForestExhibit/KelpTank.x3d" "KelpTank.wrl" "https://www.web3d.org/x3d/content/examples/X3dForWebAuthors/KelpForestExhibit/KelpTank.wrl"'/>
        </Transform>
        <Transform scale='0.54 0.75 0.52' translation='0.3 -2.88 7.3'>
          <Inline url='"RockFloor.x3d" "https://www.web3d.org/x3d/content/examples/X3dForWebAuthors/KelpForestExhibit/RockFloor.x3d" "RockFloor.wrl" "https://www.web3d.org/x3d/content/examples/X3dForWebAuthors/KelpForestExhibit/RockFloor.wrl"'/>
        </Transform>
        <Transform DEF='K2_LOCALE' translation='-4.0 0.0 1.0'>
          <Transform DEF='K2_MIDWATER' scale='0.2 0.2 0.2' translation='-1.0 -4.0 -4.0'>
            <Inline url='"SardineSchool.x3d" "https://www.web3d.org/x3d/content/examples/X3dForWebAuthors/KelpForestExhibit/SardineSchool.x3d" "SardineSchool.wrl" "https://www.web3d.org/x3d/content/examples/X3dForWebAuthors/KelpForestExhibit/SardineSchool.wrl"'/>
          </Transform>
          <Transform DEF='K2_FLOOR' rotation='0.0 1.0 0.0 0.44' scale='0.5 0.9 0.5' translation='-1.9 -8.5 -1.5'>
            <Inline DEF='KelpExamplesNoBase' url='"KelpExamplesNoBase.x3d" "https://www.web3d.org/x3d/content/examples/X3dForWebAuthors/KelpForestExhibit/KelpExamplesNoBase.x3d" "KelpExamplesNoBase.wrl" "https://www.web3d.org/x3d/content/examples/X3dForWebAuthors/KelpForestExhibit/KelpExamplesNoBase.wrl"'/>
          </Transform>
        </Transform>
        <Transform DEF='K4_LOCALE' translation='-2.5 0.0 -2.5'>
          <Transform DEF='K4_MIDWATER' translation='-10.0 -2.0 -2.0'>
            <Inline url='"HalfMoonGroup.x3d" "https://www.web3d.org/x3d/content/examples/X3dForWebAuthors/KelpForestExhibit/HalfMoonGroup.x3d" "HalfMoonGroup.wrl" "https://www.web3d.org/x3d/content/examples/X3dForWebAuthors/KelpForestExhibit/HalfMoonGroup.wrl"'/>
          </Transform>
          <Transform DEF='K4_FLOOR' rotation='0.0 1.0 0.0 -0.3' scale='0.5 0.8 0.5' translation='-1.5 -7.5 0.5'>
            <Inline USE='KelpExamplesNoBase'/>
          </Transform>
        </Transform>
        <Transform DEF='K7_LOCALE' translation='2.0 0.0 -2.5'>
          <Transform DEF='K7_MIDWATER' scale='0.25 0.25 0.25' translation='2.0 -4.0 0.0'>
            <Inline url='"RubberLipGroup.x3d" "https://www.web3d.org/x3d/content/examples/X3dForWebAuthors/KelpForestExhibit/RubberLipGroup.x3d" "RubberLipGroup.wrl" "https://www.web3d.org/x3d/content/examples/X3dForWebAuthors/KelpForestExhibit/RubberLipGroup.wrl"'/>
          </Transform>
          <Transform DEF='K7_FLOOR' scale='0.5 0.85 0.5' translation='0.0 -7.75 0.0'>
            <Inline USE='KelpExamplesNoBase'/>
          </Transform>
        </Transform>
        <Transform DEF='K10_LOCALE' translation='7.0 0.0 2.0'>
          <Transform DEF='K10_DEEP' translation='0.0 -5.0 0.0'>
            <Inline url='"StripedSurfPerch.x3d" "https://www.web3d.org/x3d/content/examples/X3dForWebAuthors/KelpForestExhibit/StripedSurfPerch.x3d" "StripedSurfPerch.wrl" "https://www.web3d.org/x3d/content/examples/X3dForWebAuthors/KelpForestExhibit/StripedSurfPerch.wrl"'/>
          </Transform>
          <Transform DEF='K10_FLOOR' rotation='0.0 1.0 0.0 0.16' scale='0.5 0.75 0.5' translation='-1.0 -7.0 -1.0'>
            <Inline USE='KelpExamplesNoBase'/>
          </Transform>
        </Transform>
        <Transform DEF='K11_LOCALE' translation='8.0 0.0 -2.0'>
          <Transform DEF='K11_MIDWATER' rotation='0.0 1.0 0.0 0.3' translation='2.19 -7.0 0.15'>
            <Inline url='"SeaStarSimple.x3d" "https://www.web3d.org/x3d/content/examples/X3dForWebAuthors/KelpForestExhibit/SeaStarSimple.x3d" "SeaStarSimple.wrl" "https://www.web3d.org/x3d/content/examples/X3dForWebAuthors/KelpForestExhibit/SeaStarSimple.wrl"'/>
          </Transform>
          <Transform DEF='K11_DEEP' rotation='0.0 1.0 0.0 0.9' translation='1.0 -5.0 0.0'>
            <Inline url='"BlackSurfPerch.x3d" "https://www.web3d.org/x3d/content/examples/X3dForWebAuthors/KelpForestExhibit/BlackSurfPerch.x3d" "BlackSurfPerch.wrl" "https://www.web3d.org/x3d/content/examples/X3dForWebAuthors/KelpForestExhibit/BlackSurfPerch.wrl"'/>
          </Transform>
          <Transform DEF='K11_FLOOR' rotation='0.0 1.0 0.0 0.3' scale='0.5 0.75 0.5' translation='-0.3 -7.0 0.0'>
            <Inline USE='KelpExamplesNoBase'/>
          </Transform>
          <Transform translation='1.3 -5.0 3.0'>
            <Inline url='"SeaStarGroup.x3d" "https://www.web3d.org/x3d/content/examples/X3dForWebAuthors/KelpForestExhibit/SeaStarGroup.x3d" "SeaStarGroup.wrl" "https://www.web3d.org/x3d/content/examples/X3dForWebAuthors/KelpForestExhibit/SeaStarGroup.wrl"'/>
          </Transform>
        </Transform>
        <Transform DEF='R2_LOCALE' translation='-1.0 0.0 -1.0'>
          <Transform DEF='R2_MIDWATER' translation='-1.0 -6.0 -2.0'>
            <Inline url='"BlueRockFish.x3d" "https://www.web3d.org/x3d/content/examples/X3dForWebAuthors/KelpForestExhibit/BlueRockFish.x3d" "BlueRockFish.wrl" "https://www.web3d.org/x3d/content/examples/X3dForWebAuthors/KelpForestExhibit/BlueRockFish.wrl"'/>
          </Transform>
          <Transform DEF='R2_DEEP' translation='1.0 -6.5 -1.0'>
            <Inline url='"KelpSurfPerch.x3d" "https://www.web3d.org/x3d/content/examples/X3dForWebAuthors/KelpForestExhibit/KelpSurfPerch.x3d" "KelpSurfPerch.wrl" "https://www.web3d.org/x3d/content/examples/X3dForWebAuthors/KelpForestExhibit/KelpSurfPerch.wrl"'/>
          </Transform>
        </Transform>
        <Transform DEF='R3_LOCALE' translation='3.0 0.0 -4.0'>
          <Transform DEF='R3_MIDWATER' translation='0.0 -6.0 0.0'>
            <Inline url='"Garibaldi.x3d" "https://www.web3d.org/x3d/content/examples/X3dForWebAuthors/KelpForestExhibit/Garibaldi.x3d" "Garibaldi.wrl" "https://www.web3d.org/x3d/content/examples/X3dForWebAuthors/KelpForestExhibit/Garibaldi.wrl"'/>
          </Transform>
        </Transform>
        <Transform DEF='R5_LOCALE' translation='8.0 0.0 -2.0'>
          <Transform DEF='R5_SHALLOW' translation='-2.0 -2.0 0.0'>
            <Inline url='"KelpBass.x3d" "https://www.web3d.org/x3d/content/examples/X3dForWebAuthors/KelpForestExhibit/KelpBass.x3d" "KelpBass.wrl" "https://www.web3d.org/x3d/content/examples/X3dForWebAuthors/KelpForestExhibit/KelpBass.wrl"'/>
          </Transform>
        </Transform>
        <TimeSensor DEF='WAVE_CLOCK' cycleInterval='5.5' enabled='false' loop='true'/>
        <PositionInterpolator DEF='LEFT_SHALLOW_WAVE' key='0.0 0.125 0.25 0.375 0.5 0.625 0.75 0.875 1.0' keyValue='0.0 0.0 0.0 0.056 -0.085 0.0 0.08 -0.12 0.0 0.056 -0.085 0.0 0.0 0.0 0.0 -0.056 0.085 0.0 -0.08 0.12 0.0 -0.056 0.085 0.0 0.0 0.0 0.0'/>
        <PositionInterpolator DEF='LEFT_DEEP_WAVE' key='0.0 0.125 0.25 0.375 0.5 0.625 0.75 0.875 1.0' keyValue='0.0 0.0 0.0 0.035 -0.035 0.0 0.05 -0.05 0.0 0.035 -0.035 0.0 0.0 0.0 0.0 -0.035 0.035 0.0 -0.05 0.05 0.0 -0.035 0.035 0.0 0.0 0.0 0.0'/>
        <PositionInterpolator DEF='CENTER_WAVE' key='0.0 0.125 0.25 0.375 0.5 0.625 0.75 0.875 1.0' keyValue='0.0 0.0 0.0 0.106 0.0 0.0 0.15 0.0 0.0 0.106 0.0 0.0 0.0 0.0 0.0 -0.106 0.0 0.0 -0.15 0.0 0.0 -0.106 0.0 0.0 0.0 0.0 0.0'/>
        <PositionInterpolator DEF='RIGHT_SHALLOW_WAVE' key='0.0 0.125 0.25 0.375 0.5 0.625 0.75 0.875 1.0' keyValue='0.0 0.0 0.0 0.056 0.085 0.0 0.08 0.12 0.0 0.056 0.085 0.0 0.0 0.0 0.0 -0.056 -0.085 0.0 -0.08 -0.12 0.0 -0.056 -0.085 0.0 0.0 0.0 0.0'/>
        <PositionInterpolator DEF='RIGHT_DEEP_WAVE' key='0.0 0.125 0.25 0.375 0.5 0.625 0.75 0.875 1.0' keyValue='0.0 0.0 0.0 0.035 0.035 0.0 0.05 0.05 0.0 0.035 0.035 0.0 0.0 0.0 0.0 -0.035 -0.035 0.0 -0.05 -0.05 0.0 -0.035 -0.035 0.0 0.0 0.0 0.0'/>
      </Collision>
    </Group>
    <ROUTE fromField='fraction_changed' fromNode='WAVE_CLOCK' toField='set_fraction' toNode='CENTER_WAVE'/>
    <ROUTE fromField='value_changed' fromNode='CENTER_WAVE' toField='set_translation' toNode='K7_MIDWATER'/>
    <ROUTE fromField='value_changed' fromNode='RIGHT_DEEP_WAVE' toField='set_translation' toNode='K2_MIDWATER'/>
    <ROUTE fromField='value_changed' fromNode='CENTER_WAVE' toField='set_translation' toNode='K4_MIDWATER'/>
    <ROUTE fromField='value_changed' fromNode='LEFT_DEEP_WAVE' toField='set_translation' toNode='K10_DEEP'/>
    <ROUTE fromField='value_changed' fromNode='LEFT_DEEP_WAVE' toField='set_translation' toNode='K11_DEEP'/>
    <ROUTE fromField='value_changed' fromNode='RIGHT_SHALLOW_WAVE' toField='set_translation' toNode='R2_MIDWATER'/>
    <ROUTE fromField='value_changed' fromNode='RIGHT_DEEP_WAVE' toField='set_translation' toNode='R2_DEEP'/>
    <ROUTE fromField='value_changed' fromNode='CENTER_WAVE' toField='set_translation' toNode='R3_MIDWATER'/>
    <ROUTE fromField='value_changed' fromNode='RIGHT_SHALLOW_WAVE' toField='set_translation' toNode='R5_SHALLOW'/>
    <TimeSensor DEF='MasterClock' loop='true'/>
    <Group DEF='Nancy'>
      <!-- Scale used on Nancy underwater to approximate the defraction magnification of the plexiglass window. -->
      <Transform DEF='NancyTransform' rotation='-0.45 0.77 -0.45 1.82' scale='1.3 1.3 1.3' translation='3 -6.5 -2'>
        <Inline url='"../../HumanoidAnimation/Legacy/NancyDiving.x3d" "https://www.web3d.org/x3d/content/examples/HumanoidAnimation/Legacy/NancyDiving.x3d" "../../HumanoidAnimation/Legacy/NancyDiving.wrl" "https://www.web3d.org/x3d/content/examples/HumanoidAnimation/Legacy/NancyDiving.wrl"'/>
      </Transform>
      <TimeSensor DEF='JEFFSCLOCK' cycleInterval='100' loop='true'/>
      <ProtoInstance DEF='NancyInterpolator' name='WaypointInterpolator'>
        <fieldValue name='description' value='Nancy track'/>
        <fieldValue name='waypoints' value='-5.5 -5.7 -.2 -7.7 -2.7 -1.7 6 -3 -3 2 -2 -2 1 -4 -1 -2 -2 -2 -5.5 -5.7 -.2'/>
        <fieldValue name='defaultSpeed' value='0.5'/>
        <fieldValue name='pitchUpDownForVerticalWaypoints' value='true'/>
        <fieldValue name='labelDisplayMode' value='none'/>
        <fieldValue name='lineColor' value='0 0 0'/>
        <fieldValue name='labelColor' value='0 0.8 0.8'/>
        <fieldValue name='labelOffset' value='0 -1.6 0'/>
        <fieldValue name='labelFontSize' value='6'/>
        <fieldValue name='traceEnabled' value='false'/>
        <fieldValue name='transparency' value='1'/>
        <fieldValue name='turningRate' value='18'/>
        <!-- totalDuration is a computed output -->
      </ProtoInstance>
    </Group>
    <ROUTE fromField='fraction_changed' fromNode='JEFFSCLOCK' toField='set_fraction' toNode='NancyInterpolator'/>
    <ROUTE fromField='position_changed' fromNode='NancyInterpolator' toField='set_translation' toNode='NancyTransform'/>
    <ROUTE fromField='orientation_changed' fromNode='NancyInterpolator' toField='set_rotation' toNode='NancyTransform'/>
  </Scene>
</X3D>