{ "X3D": {
    "encoding":"UTF-8",
    "@profile":"Immersive",
    "@version":"3.3",
    "@xsd:noNamespaceSchemaLocation":"https://www.web3d.org/specifications/x3d-3.3.xsd",
    "JSON schema":"https://www.web3d.org/specifications/x3d-4.0-JSONSchema.autogenerated.json",
    "head": {
        "meta": [
          {
            "@name":"title",
            "@content":"KelpForestMain.x3d"
          },
          {
            "@name":"description",
            "@content":"This is the main entry to the Kelp Forest that loads all of the other components as Inline scenes."
          },
          {
            "@name":"creator",
            "@content":"Don Brutzman"
          },
          {
            "@name":"created",
            "@content":"1 June 1998"
          },
          {
            "@name":"modified",
            "@content":"2 March 2026"
          },
          {
            "@name":"reference",
            "@content":"http://faculty.nps.edu/brutzman/kelp"
          },
          {
            "@name":"reference",
            "@content":"http://faculty.nps.edu/brutzman/kelp/KelpForestDesignPaper.pdf"
          },
          {
            "@name":"subject",
            "@content":"Kelp Forest 3D models"
          },
          {
            "@name":"accessRights",
            "@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":"identifier",
            "@content":"https://www.web3d.org/x3d/content/examples/X3dForWebAuthors/KelpForestExhibit/KelpForestMain.x3d"
          },
          {
            "@name":"generator",
            "@content":"X3D-Edit 3.3, https://www.web3d.org/x3d/tools/X3D-Edit"
          },
          {
            "@name":"license",
            "@content":"../license.html"
          },
          {
            "@name":"translated",
            "@content":"17 April 2026"
          },
          {
            "@name":"generator",
            "@content":"X3dToJson.xslt, https://www.web3d.org/x3d/stylesheets/X3dToJson.html"
          },
          {
            "@name":"reference",
            "@content":"X3D JSON encoding: https://www.web3d.org/wiki/index.php/X3D_JSON_Encoding"
          }
        ]
    },
    "Scene": {
        "-children":[
          { "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":
            {
              "@name":"ViewPositionOrientation",
              "@appinfo":"ViewPositionOrientation prototype provides local position and orientation as user navigates with optional console output",
              "@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": [
                {
                  "@name":"enabled",
                  "@accessType":"inputOutput",
                  "@appinfo":"Whether or not ViewPositionOrientation sends output to console.",
                  "@type":"SFBool"
                },
                {
                  "@name":"traceEnabled",
                  "@accessType":"initializeOnly",
                  "@appinfo":"Output internal trace messages for debugging this node - developer use only can be ignored.",
                  "@type":"SFBool"
                },
                {
                  "@name":"set_traceEnabled",
                  "@accessType":"inputOnly",
                  "@appinfo":"Ability to turn output tracing on/off at runtime.",
                  "@type":"SFBool"
                },
                {
                  "@name":"position_changed",
                  "@accessType":"outputOnly",
                  "@appinfo":"Output local position.",
                  "@type":"SFVec3f"
                },
                {
                  "@name":"orientation_changed",
                  "@accessType":"outputOnly",
                  "@appinfo":"Output local orientation.",
                  "@type":"SFRotation"
                },
                {
                  "@name":"outputViewpointString",
                  "@accessType":"outputOnly",
                  "@appinfo":"MFString value of new Viewpoint for example: <Viewpoint position=\"20 15 20\" orientation=\"-0.516 0.83 0.212 0.9195\"/>",
                  "@type":"MFString"
                }
              ]
            }
          },
          { "ProtoInstance":
            {
              "@name":"ViewPositionOrientation",
              "@DEF":"ConsoleOutputViewPositionOrientation",
              "fieldValue": [
                {
                  "@name":"enabled",
                  "@value":false
                }
              ]
            }
          },
          { "ExternProtoDeclare":
            {
              "@name":"WaypointInterpolator",
              "@appinfo":"Reads waypoints and legSpeeds/legDurations/defaultSpeed to provide a customizable position/orientation interpolator.",
              "@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"],
              "-children":[
                {
                  "#comment":"Priority of use: legSpeeds (m/sec), legDurations (seconds), defaultSpeed (m/sec)"
                },
                {
                  "#comment":"interpolation fields"
                },
                {
                  "#comment":"display-related fields"
                }
              ],
              "field": [
                {
                  "@name":"description",
                  "@accessType":"initializeOnly",
                  "@appinfo":"Short description of what is animated by this WaypointInterpolator.",
                  "@type":"SFString"
                },
                {
                  "@name":"waypoints",
                  "@accessType":"initializeOnly",
                  "@appinfo":"Waypoints being traversed with interpolation of intermediate positions and orientations.",
                  "@type":"MFVec3f"
                },
                {
                  "@name":"add_waypoint",
                  "@accessType":"inputOnly",
                  "@appinfo":"Add another single waypoint to array of waypoints recalculate interpolator values.",
                  "@type":"SFVec3f"
                },
                {
                  "@name":"set_waypoints",
                  "@accessType":"inputOnly",
                  "@appinfo":"Replace all waypoints recalculate interpolator values.",
                  "@type":"MFVec3f"
                },
                {
                  "@name":"pitchUpDownForVerticalWaypoints",
                  "@accessType":"initializeOnly",
                  "@appinfo":"Whether to pitch child geometry (such as a vehicle) up or down to match vertical slope",
                  "@type":"SFBool"
                },
                {
                  "@name":"legSpeeds",
                  "@accessType":"initializeOnly",
                  "@appinfo":"Units m/sec. If used, array lengths for legSpeeds and legDurations must be one less than number of waypoints.",
                  "@type":"MFFloat"
                },
                {
                  "@name":"legDurations",
                  "@accessType":"initializeOnly",
                  "@appinfo":"Units in seconds. If used, array lengths for legSpeeds and legDurations must be one less than number of waypoints.",
                  "@type":"MFTime"
                },
                {
                  "@name":"defaultSpeed",
                  "@accessType":"initializeOnly",
                  "@appinfo":"Units m/sec.",
                  "@type":"SFFloat"
                },
                {
                  "@name":"turningRate",
                  "@accessType":"initializeOnly",
                  "@appinfo":"turningRate (degrees/second) also determines standoff distance prior to waypoint where turn commences. If 0 turns are instantaneous.",
                  "@type":"SFFloat"
                },
                {
                  "@name":"totalDuration",
                  "@accessType":"outputOnly",
                  "@appinfo":"Output calculation summing all leg durations, useful for setting TimeSensor cycleInterval. Units in seconds.",
                  "@type":"SFTime"
                },
                {
                  "@name":"set_fraction",
                  "@accessType":"inputOnly",
                  "@appinfo":"exposed PositionInterpolator and OrientationInterpolator setting",
                  "@type":"SFFloat"
                },
                {
                  "@name":"position_changed",
                  "@accessType":"outputOnly",
                  "@appinfo":"exposed PositionInterpolator setting",
                  "@type":"SFVec3f"
                },
                {
                  "@name":"orientation_changed",
                  "@accessType":"outputOnly",
                  "@appinfo":"exposed OrientationInterpolator setting",
                  "@type":"SFRotation"
                },
                {
                  "@name":"lineColor",
                  "@accessType":"inputOutput",
                  "@appinfo":"default color for non-active line segments",
                  "@type":"SFColor"
                },
                {
                  "@name":"highlightSegmentColor",
                  "@accessType":"inputOutput",
                  "@appinfo":"highlightSegmentColors must contain two color values for each endpoint of the highlight segment.",
                  "@type":"SFColor"
                },
                {
                  "@name":"transparency",
                  "@accessType":"inputOutput",
                  "@appinfo":"1.0 is completely transparent, 0.0 is completely opaque.",
                  "@type":"SFFloat"
                },
                {
                  "@name":"labelDisplayMode",
                  "@accessType":"initializeOnly",
                  "@appinfo":"allowed values: none; waypoints (produce labels at each waypoint); or interpolation (produce single moving label at interpolator time course speed location)",
                  "@type":"SFString"
                },
                {
                  "@name":"heightLabel",
                  "@accessType":"initializeOnly",
                  "@appinfo":"allowed values: altitude depth (negate Y value) none",
                  "@type":"SFString"
                },
                {
                  "@name":"labelOffset",
                  "@accessType":"initializeOnly",
                  "@appinfo":"heightLabel relative location",
                  "@type":"SFVec3f"
                },
                {
                  "@name":"labelFontSize",
                  "@accessType":"initializeOnly",
                  "@appinfo":"heightLabel text size",
                  "@type":"SFFloat"
                },
                {
                  "@name":"labelColor",
                  "@accessType":"initializeOnly",
                  "@appinfo":"heightLabel text color",
                  "@type":"SFColor"
                },
                {
                  "@name":"traceEnabled",
                  "@accessType":"initializeOnly",
                  "@appinfo":"enable console output to trace script computations and prototype progress",
                  "@type":"SFBool"
                },
                {
                  "@name":"outputInitializationComputations",
                  "@accessType":"initializeOnly",
                  "@appinfo":"Output the number of waypoints totalDistance and totalDuration to console upon initialization",
                  "@type":"SFBool"
                },
                {
                  "@name":"verticalDropLineColor",
                  "@accessType":"inputOutput",
                  "@appinfo":"default color for vertical drop-line segments",
                  "@type":"SFColor"
                },
                {
                  "@name":"verticalDropLineTransparency",
                  "@accessType":"inputOutput",
                  "@appinfo":"1.0 is completely transparent, 0.0 is completely opaque.",
                  "@type":"SFFloat"
                }
              ]
            }
          },
          { "Group":
            {
              "@DEF":"Viewpoints",
              "-children":[
                { "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'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":
            {
              "@DEF":"Root",
              "-children":[
                { "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,
                    "-children":[
                      { "Transform":
                        {
                          "-children":[
                            { "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":
                        {
                          "-children":[
                            { "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":
                        {
                          "-children":[
                            { "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":
                        {
                          "@scale":[0.54,0.75,0.52],
                          "@translation":[0.3,-2.88,7.3],
                          "-children":[
                            { "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":
                        {
                          "@DEF":"K2_LOCALE",
                          "@translation":[-4.0,0.0,1.0],
                          "-children":[
                            { "Transform":
                              {
                                "@DEF":"K2_MIDWATER",
                                "@scale":[0.2,0.2,0.2],
                                "@translation":[-1.0,-4.0,-4.0],
                                "-children":[
                                  { "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":
                              {
                                "@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],
                                "-children":[
                                  { "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":
                        {
                          "@DEF":"K4_LOCALE",
                          "@translation":[-2.5,0.0,-2.5],
                          "-children":[
                            { "Transform":
                              {
                                "@DEF":"K4_MIDWATER",
                                "@translation":[-10.0,-2.0,-2.0],
                                "-children":[
                                  { "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":
                              {
                                "@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],
                                "-children":[
                                  { "Inline":
                                    {
                                      "@USE":"KelpExamplesNoBase"
                                    }
                                  }
                                ]
                              }
                            }
                          ]
                        }
                      },
                      { "Transform":
                        {
                          "@DEF":"K7_LOCALE",
                          "@translation":[2.0,0.0,-2.5],
                          "-children":[
                            { "Transform":
                              {
                                "@DEF":"K7_MIDWATER",
                                "@scale":[0.25,0.25,0.25],
                                "@translation":[2.0,-4.0,0.0],
                                "-children":[
                                  { "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":
                              {
                                "@DEF":"K7_FLOOR",
                                "@scale":[0.5,0.85,0.5],
                                "@translation":[0.0,-7.75,0.0],
                                "-children":[
                                  { "Inline":
                                    {
                                      "@USE":"KelpExamplesNoBase"
                                    }
                                  }
                                ]
                              }
                            }
                          ]
                        }
                      },
                      { "Transform":
                        {
                          "@DEF":"K10_LOCALE",
                          "@translation":[7.0,0.0,2.0],
                          "-children":[
                            { "Transform":
                              {
                                "@DEF":"K10_DEEP",
                                "@translation":[0.0,-5.0,0.0],
                                "-children":[
                                  { "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":
                              {
                                "@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],
                                "-children":[
                                  { "Inline":
                                    {
                                      "@USE":"KelpExamplesNoBase"
                                    }
                                  }
                                ]
                              }
                            }
                          ]
                        }
                      },
                      { "Transform":
                        {
                          "@DEF":"K11_LOCALE",
                          "@translation":[8.0,0.0,-2.0],
                          "-children":[
                            { "Transform":
                              {
                                "@DEF":"K11_MIDWATER",
                                "@rotation":[0.0,1.0,0.0,0.3],
                                "@translation":[2.19,-7.0,0.15],
                                "-children":[
                                  { "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":
                              {
                                "@DEF":"K11_DEEP",
                                "@rotation":[0.0,1.0,0.0,0.9],
                                "@translation":[1.0,-5.0,0.0],
                                "-children":[
                                  { "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":
                              {
                                "@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],
                                "-children":[
                                  { "Inline":
                                    {
                                      "@USE":"KelpExamplesNoBase"
                                    }
                                  }
                                ]
                              }
                            },
                            { "Transform":
                              {
                                "@translation":[1.3,-5.0,3.0],
                                "-children":[
                                  { "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":
                        {
                          "@DEF":"R2_LOCALE",
                          "@translation":[-1.0,0.0,-1.0],
                          "-children":[
                            { "Transform":
                              {
                                "@DEF":"R2_MIDWATER",
                                "@translation":[-1.0,-6.0,-2.0],
                                "-children":[
                                  { "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":
                              {
                                "@DEF":"R2_DEEP",
                                "@translation":[1.0,-6.5,-1.0],
                                "-children":[
                                  { "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":
                        {
                          "@DEF":"R3_LOCALE",
                          "@translation":[3.0,0.0,-4.0],
                          "-children":[
                            { "Transform":
                              {
                                "@DEF":"R3_MIDWATER",
                                "@translation":[0.0,-6.0,0.0],
                                "-children":[
                                  { "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":
                        {
                          "@DEF":"R5_LOCALE",
                          "@translation":[8.0,0.0,-2.0],
                          "-children":[
                            { "Transform":
                              {
                                "@DEF":"R5_SHALLOW",
                                "@translation":[-2.0,-2.0,0.0],
                                "-children":[
                                  { "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"]
                                    }
                                  }
                                ]
                              }
                            }
                          ]
                        }
                      },
                      { "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]
                        }
                      }
                    ]
                  }
                }
              ]
            }
          },
          { "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",
              "-children":[
                {
                  "#comment":"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],
                    "-children":[
                      { "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"]
                        }
                      }
                    ]
                  }
                },
                { "TimeSensor":
                  {
                    "@DEF":"JEFFSCLOCK",
                    "@cycleInterval":100,
                    "@loop":true
                  }
                },
                { "ProtoInstance":
                  {
                    "@name":"WaypointInterpolator",
                    "@DEF":"NancyInterpolator",
                    "fieldValue": [
                      {
                        "@name":"description",
                        "@value":"Nancy track"
                      },
                      {
                        "@name":"waypoints",
                        "@value":[-5.5,-5.7,-0.2,-7.7,-2.7,-1.7,6,-3,-3,2,-2,-2,1,-4,-1,-2,-2,-2,-5.5,-5.7,-0.2]
                      },
                      {
                        "@name":"defaultSpeed",
                        "@value":0.5
                      },
                      {
                        "@name":"pitchUpDownForVerticalWaypoints",
                        "@value":true
                      },
                      {
                        "@name":"labelDisplayMode",
                        "@value":"none"
                      },
                      {
                        "@name":"lineColor",
                        "@value":[0,0,0]
                      },
                      {
                        "@name":"labelColor",
                        "@value":[0,0.8,0.8]
                      },
                      {
                        "@name":"labelOffset",
                        "@value":[0,-1.6,0]
                      },
                      {
                        "@name":"labelFontSize",
                        "@value":6
                      },
                      {
                        "@name":"traceEnabled",
                        "@value":false
                      },
                      {
                        "@name":"transparency",
                        "@value":1
                      },
                      {
                        "@name":"turningRate",
                        "@value":18
                      }
                    ],
                    "-children":[
                      {
                        "#comment":"totalDuration is a computed output"
                      }
                    ]
                  }
                }
              ]
            }
          },
          { "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"
            }
          }
        ]
    }
  }
}