#VRML V2.0 utf8 WorldInfo { title "NPS Virtual Kelp Forest Exhibit" info ["kelpForestMain3.4.wrl", "Model of the Monterey Bay Aquarium Kelp Forest", "DTG of last updated: 111500Jun98", "Added: " "Updated: kelpTank2.9.wrl; " "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://www.stl.nps.navy.mil/~brutzman/kelp" ] } DEF Root Group { children[ NavigationInfo { type ["EXAMINE" "FLY" "WALK" "ANY"] speed 3.0 } Viewpoint { description "Kelp Forest Monterey Bay Aquarium " position 0.0 -5.0 45.0 } Viewpoint { description "Front Windows" position 0.0 -4.5 7.5 orientation 1 0 0 .15 fieldOfView .95 } Viewpoint { description "Side Windows" position 25 -4 15 orientation 0 1 0 .9 fieldOfView .5 } Viewpoint { description "Star Fish" position 14 -5.75 1 orientation 0 1 0 1.25 } Viewpoint { description "Inside Tank" position 0.0 -5.0 -7.0 orientation 0.0 1.0 0.0 3.14 } Viewpoint { description "Top floor" position 12.5 5 -2 orientation -0.3 1 0.3 1.57079 fieldOfView 1.04719 } Viewpoint { description "Bird's Eye View" position 0.0 19.0 -3.5 orientation 1.0 0.0 0.0 -1.57 } Viewpoint { description "Pump House" position -5 1 0 orientation 0.0 1.0 0.0 1.3 fieldOfView .6 } Background { skyColor [ 0.0 0.5 1.0, 0.0 0.0 1.0, 0.0 0.0 1.0 ] skyAngle [ 1.309, 1.571 ] groundColor [ 0.1 0.10 0.0, 0.4 0.25 0.2, 0.6 0.60 0.6, ] groundAngle [ 1.309, 1.571 ] } Inline { url "introductionMessage1.3.wrl" } Collision { collide FALSE children [ Transform{ children [ Inline { url "sharkLocaleScott5.wrl" #calls shark2.2.wrl } ] } Transform{ children [ Inline { url "sharkLocaleScott4.wrl" #calls shark2.1.wrl } ] } Inline { url "kelpTank2.9.wrl" } Transform{ translation 0.3 -3.3 7.3 scale 0.54 0.75 0.52 children[ Inline{ url "rockFloor1.5.wrl" } ] } # DEF K1_LOCALE Transform { # translation -10.0 0.0 2.0 # children [ # DEF K1_SHALLOW Tansform { # translation 0.0 0.0 0.0 # children [ # ] # }#end K1_SHALLOW # DEF K1_MIDWATER Transform { # translation 0.0 0.0 0.0 # children [ # ] # }#end K1_MIDWATER # DEF K1_DEEP Transform { # translation 0.0 0.0 0.0 # children [ # ] # }#end K1_DEEP # DEF K1_FLOOR Transform { # translation 0.0 0.0 0.0 # children [ # ] # } # ] # }#end K1_LOCALE Transform DEF K2_LOCALE Transform { translation -4 0 1 children [ # DEF K2_SHALLOW Tansform { # translation 0.0 0.0 0.0 # children [ # ] # }#end K2_SHALLOW DEF K2_MIDWATER Transform { translation -1 -4 -4 scale .20 .20 .20 children [ Inline { url [ "SardineSchool.wrz" "SardineSchool/SardineSchool.wrz" # "SardineSchool.gz.wrl" # "SardineSchool/SardineSchool.gz.wrl" "SardineSchool.wrl" "SardineSchool/SardineSchool.wrl" # modeled by Stewart Liles ] } ] }#end K2_MIDWATER # DEF K2_DEEP Transform { # translation 0.0 0.0 0.0 # children [ # ] # }#end K2_DEEP DEF K2_FLOOR Transform { translation -1.9 -8.5 -1.5 rotation 0 1 0 .44 scale .5 .9 .5 children [ Inline { url "kelpNoBase.wrl" } ] } ] }#end K2_LOCALE Transform # DEF K3_LOCALE Transform { # translation -10.0 0.0 2.0 # children [ # DEF K3_SHALLOW Tansform { # translation 0.0 0.0 0.0 # children [ # ] # }#end K3_SHALLOW # DEF K3_MIDWATER Transform { # translation 0.0 0.0 0.0 # children [ # ] # }#end K3_MIDWATER # DEF K3_DEEP Transform { # translation 0.0 0.0 0.0 # children [ # ] # }#end K3_DEEP # DEF K3_FLOOR Transform { # translation 0.0 0.0 0.0 # children [ # ] # } # ] # }#end K3_LOCALE Transform DEF K4_LOCALE Transform { translation -2.5 0 -2.5 children [ # DEF K4_SHALLOW Tansform { # translation 0.0 0.0 0.0 # children [ # ] # }#end K4_SHALLOW DEF K4_MIDWATER Transform { translation -10.0 -2.0 -2 children [ Inline { url "HalfmoonGroup.wrl" } ] }#end K4_MIDWATER # DEF K4_DEEP Transform { # translation 0.0 0.0 0.0 # children [ # ] # }#end K4_DEEP DEF K4_FLOOR Transform { translation -1.5 -7.5 .5 rotation 0 1 0 -.3 scale .5 .8 .5 children [ Inline { url "kelpNoBase.wrl" } ] } ] }#end K4_LOCALE Transform # DEF K5_LOCALE Transform { # translation -10.0 0.0 2.0 # children [ # DEF K5_SHALLOW Tansform { # translation 0.0 0.0 0.0 # children [ # ] # }#end K5_SHALLOW # DEF K5_MIDWATER Transform { # translation 0.0 0.0 0.0 # children [ # ] # }#end K5_MIDWATER # DEF K5_DEEP Transform { # translation 0.0 0.0 0.0 # children [ # ] # }#end K5_DEEP # DEF K5_FLOOR Transform { # translation 0.0 0.0 0.0 # children [ # ] # } # ] # }#end K5_LOCALE Transform # DEF K6_LOCALE Transform { # translation -10.0 0.0 2.0 # children [ # DEF K6_SHALLOW Tansform { # translation 0.0 0.0 0.0 # children [ # ] # }#end K6_SHALLOW # DEF K6_MIDWATER Transform { # translation 0.0 0.0 0.0 # children [ # ] # }#end K6_MIDWATER # DEF K6_DEEP Transform { # translation 0.0 0.0 0.0 # children [ # ] # }#end K6_DEEP # DEF K6_FLOOR Transform { # translation 0.0 0.0 0.0 # children [ # ] # } # ] # }#end K6_LOCALE Transform DEF K7_LOCALE Transform { translation 2 0 -2.5 children [ # DEF K7_SHALLOW Tansform { # translation 0.0 0.0 0.0 # children [ # ] # }#end K7_SHALLOW DEF K7_MIDWATER Transform { translation 2.0 -4.0 0.0 children [ Inline { url "rubberlip.wrl" } ] scale 0.25 0.25 0.25 }#end K7_MIDWATER # DEF K7_DEEP Transform { # translation 0.0 0.0 0.0 # children [ # ] # }#end K7_DEEP DEF K7_FLOOR Transform { translation 0 -7.75 0 scale .5 .85 .5 children [ Inline { url "kelpNoBase.wrl" } ] } ] }#end K7_LOCALE Transform # DEF K8_LOCALE Transform { # translation -10.0 0.0 2.0 # children [ # DEF K8_SHALLOW Tansform { # translation 0.0 0.0 0.0 # children [ # ] # }#end K8_SHALLOW # DEF K8_MIDWATER Transform { # translation 0.0 0.0 0.0 # children [ # ] # }#end K8_MIDWATER # DEF K8_DEEP Transform { # translation 0.0 0.0 0.0 # children [ # ] # }#end K8_DEEP # DEF K8_FLOOR Transform { # translation 0.0 0.0 0.0 # children [ # ] # } # ] # }#end K8_LOCALE Transform # DEF K9_LOCALE Transform { # translation -10.0 0.0 2.0 # children [ # DEF K9_SHALLOW Tansform { # translation 0.0 0.0 0.0 # children [ # ] # }#end K9_SHALLOW # DEF K9_MIDWATER Transform { # translation 0.0 0.0 0.0 # children [ # ] # }#end K9_MIDWATER # DEF K9_DEEP Transform { # translation 0.0 0.0 0.0 # children [ # ] # }#end K9_DEEP # DEF K9_FLOOR Transform { # translation 0.0 0.0 0.0 # children [ # ] # } # ] # }#end K9_LOCALE Transform DEF K10_LOCALE Transform { translation 7.0 0.0 2.0 children [ # DEF K10_SHALLOW Tansform { # translation 0.0 0.0 0.0 # children [ # ] # }#end K10_SHALLOW # DEF K10_MIDWATER Transform { # translation 0.0 0.0 0.0 # children [ # ] # }#end K10_MIDWATER DEF K10_DEEP Transform { translation 0 -5 0 children [ Inline { url "StripedSurfperch.wrl" } ] }#end K10_DEEP DEF K10_FLOOR Transform { translation -1 -7 -1 rotation 0.0 1.0 0.0 .16 scale .5 .75 .5 children [ Inline { url "kelpNoBase.wrl" } ] } ] }#end K10_LOCALE Transform DEF K11_LOCALE Transform { translation 8 0 -2 children [ # DEF K11_SHALLOW Tansform { # translation 0.0 0.0 0.0 # children [ # ] # }#end K11_SHALLOW DEF K11_MIDWATER Transform { translation 2.19 -7.0 0.15 rotation 0 1 0 .3 children [ Inline { url "starFish1.8.wrl" } ] }#end K11_MIDWATER DEF K11_DEEP Transform { translation 1.0 -5 0 rotation 0 1 0 .9 children [ Inline { url "BlackSurfperch.wrl" #moves in and out of rock } ] }#end K11_DEEP DEF K11_FLOOR Transform { translation -.3 -7 0 rotation 0 1 0 .3 scale .5 .75 .5 children [ Inline { url "kelpNoBase.wrl" } ] } Transform { translation 1.3 -5.0 3.0 children [ Inline { url "starFishPatch.wrl" } ] } ] }#end K11_LOCALE Transform # DEF R1_LOCALE Transform { # translation -10.0 0.0 2.0 # children [ # DEF R1_SHALLOW Tansform { # translation 0.0 0.0 0.0 # children [ # ] # }#end R1_SHALLOW # DEF R1_MIDWATER Transform { # translation 0.0 0.0 0.0 # children [ # ] # }#end R1_MIDWATER # DEF R1_DEEP Transform { # translation 0.0 0.0 0.0 # children [ # ] # }#end R1_DEEP # DEF R1_FLOOR Transform { # translation 0.0 0.0 0.0 # children [ # ] # } # ] # }#end R1_LOCALE Transform DEF R2_LOCALE Transform { translation -1 0 -1 children [ # DEF R2_SHALLOW Tansform { # translation 0.0 0.0 0.0 # children [ # ] # }#end R2_SHALLOW DEF R2_MIDWATER Transform { translation -1 -6 -2 children [ Inline { url "blueRockFish.wrl" } ] }#end R2_MIDWATER DEF R2_DEEP Transform { translation 1 -6.5 -1 children [ Inline { url "kelpSurfperch.wrl" } ] }#end R2_DEEP # DEF R2_FLOOR Transform { # translation 0.0 0.0 0.0 # children [ # ] # } ] }#end R2_LOCALE Transform DEF R3_LOCALE Transform { translation 3 0 -4 children [ # DEF R3_SHALLOW Tansform { # translation 0.0 0.0 0.0 # children [ # ] # }#end R3_SHALLOW DEF R3_MIDWATER Transform { translation 0.0 -6 0.0 children [ Inline { url "garibaldi.wrl" } ] }#end R3_MIDWATER # DEF R3_DEEP Transform { # translation 0.0 0.0 0.0 # children [ # ] # }#end R3_DEEP # DEF R3_FLOOR Transform { # translation 0.0 0.0 0.0 # children [ # ] # } ] }#end R3_LOCALE Transform # DEF R4_LOCALE Transform { # translation 7 0.0 2.0 # children [ # DEF R4_SHALLOW Tansform { # translation 0.0 0.0 0.0 # children [ # ] # }#end R4_SHALLOW # DEF R4_MIDWATER Transform { # translation 0.0 0.0 0.0 # children [ # ] # }#end R4_MIDWATER # DEF R4_DEEP Transform { # translation 0.0 0.0 0.0 # children [ # ] # }#end R4_DEEP # DEF R4_FLOOR Transform { # translation 0.0 0.0 0.0 # children [ # ] # } # ] # }#end R4_LOCALE Transform DEF R5_LOCALE Transform { translation 8 0 -2 children [ DEF R5_SHALLOW Transform { translation -2 -2 0 children [ Inline { url "kelpBass.wrl" } ] }#end R5_SHALLOW # DEF R5_MIDWATER Transform { # translation 0.0 0.0 0.0 # children [ # ] # }#end R5_MIDWATER # DEF R5_DEEP Transform { # translation 0.0 0.0 0.0 # children [ # ] # }#end R5_DEEP # DEF R5_FLOOR Transform { # translation 0.0 0.0 0.0 # children [ # ] # } ] }#end R5_LOCALE Transform DEF WAVE_CLOCK TimeSensor { cycleInterval 5.5 enabled FALSE # master startup clock will initialize all TimeSensors synchronously loop TRUE } DEF LEFT_SHALLOW_WAVE PositionInterpolator{ key[0, .125, .25, .375, .5, .625, .75, .875, 1 ] keyValue[ 0 0 0, 0.056 -0.085 0, 0.08 -0.12 0, 0.056 -0.085 0, 0 0 0, -0.056 0.085 0, -0.08 0.12 0, -0.056 0.085 0, 0 0 0 ] } DEF LEFT_DEEP_WAVE PositionInterpolator{ key[0, .125, .25, .375, .5, .625, .75, .875, 1 ] keyValue[ 0 0 0, 0.035 -0.035 0, 0.05 -0.05 0, 0.035 -0.035 0, 0 0 0, -0.035 0.035 0, -0.05 0.05 0, -0.035 0.035 0, 0 0 0 ] } DEF CENTER_WAVE PositionInterpolator{ key[0, .125, .25, .375, .5, .625, .75, .875, 1 ] keyValue[ 0 0 0, 0.106 0 0, 0.15 0 0, 0.106 0 0, 0 0 0, -0.106 0 0 -0.15 0 0, -0.106 0 0, 0 0 0 ] } DEF RIGHT_SHALLOW_WAVE PositionInterpolator{ key[0, .125, .25, .375, .5, .625, .75, .875, 1 ] keyValue[ 0 0 0, 0.056 0.085 0, 0.08 0.12 0, 0.056 0.085 0, 0 0 0, -0.056 -0.085 0, -0.08 -0.12 0, -0.056 -0.085 0, 0 0 0 ] } DEF RIGHT_DEEP_WAVE PositionInterpolator{ key[0, .125, .25, .375, .5, .625, .75, .875, 1 ] keyValue[ 0 0 0, 0.035 0.035 0, 0.05 0.05 0, 0.035 0.035 0, 0 0 0, -0.035 -0.035 0, -0.05 -0.05 0, -0.035 -0.035 0, 0 0 0 ] } ]#end collision children }#end collision node ] }#end kelpForestMain #ROUTE WAVE_CLOCK.fraction_changed TO LEFT_SHALLOW_WAVE.set_fraction #ROUTE WAVE_CLOCK.fraction_changed TO LEFT_DEEP_WAVE.set_fraction ROUTE WAVE_CLOCK.fraction_changed TO CENTER_WAVE.set_fraction #ROUTE WAVE_CLOCK.fraction_changed TO RIGHT_SHALLOW_WAVE.set_fraction #ROUTE WAVE_CLOCK.fraction_changed TO RIGHT_DEEP_WAVE.set_fraction # also need to route this clock to pump and water surface, # so put all of these sensors/routes/transforms in top-level scene ROUTE CENTER_WAVE.value_changed TO K7_MIDWATER.set_translation ROUTE RIGHT_DEEP_WAVE.value_changed TO K2_MIDWATER.set_translation ROUTE CENTER_WAVE.value_changed TO K4_MIDWATER.set_translation ROUTE LEFT_DEEP_WAVE.value_changed TO K10_DEEP.set_translation ROUTE LEFT_DEEP_WAVE.value_changed TO K11_DEEP.set_translation ROUTE RIGHT_SHALLOW_WAVE.value_changed TO R2_MIDWATER.set_translation ROUTE RIGHT_DEEP_WAVE.value_changed TO R2_DEEP.set_translation ROUTE CENTER_WAVE.value_changed TO R3_MIDWATER.set_translation ROUTE RIGHT_SHALLOW_WAVE.value_changed TO R5_SHALLOW.set_translation # etc. route one of five wave clocks to each locale