<
WorldInfo 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"
'
title='
NPS Virtual Kelp Forest Exhibit'/>
<
NavigationInfo speed='
3.0'
type='
"EXAMINE" "FLY" "WALK" "ANY"'
transitionType='
"ANIMATE"'/>
<
ExternProtoDeclare name='
ViewPositionOrientation'
url='
"
ViewPositionOrientationPrototype.wrl#ViewPositionOrientation"
"
/www.web3d.org/x3d/content/examples/Savage/Tools/Authoring/ViewPositionOrientationPrototype.wrl#ViewPositionOrientation"
"
https://savage.nps.edu/Savage/Tools/Authoring/ViewPositionOrientationPrototype.wrl#ViewPositionOrientation"
"
ViewPositionOrientationPrototype.x3d#ViewPositionOrientation"
"
/www.web3d.org/x3d/content/examples/Savage/Tools/Authoring/ViewPositionOrientationPrototype.x3d#ViewPositionOrientation"
"
https://savage.nps.edu/Savage/Tools/Authoring/ViewPositionOrientationPrototype.x3d#ViewPositionOrientation"
"
file:///c:/www.web3d.org/x3d/content/examples/Savage/Tools/Authoring/ViewPositionOrientationPrototype.wrl#ViewPositionOrientation"
'>
<field name='enabled' type='SFBool' accessType='inputOutput'/>
<field name='traceEnabled' type='SFBool' accessType='initializeOnly'/>
<field name='set_traceEnabled' type='SFBool' accessType='inputOnly'/>
<field name='position_changed' type='SFVec3f' accessType='outputOnly'/>
<field name='orientation_changed' type='SFRotation' accessType='outputOnly'/>
<field name='outputViewpointString' type='MFString' accessType='outputOnly'/>
</
ExternProtoDeclare>
<
ProtoInstance name='
ViewPositionOrientation'
containerField='
children'>
<fieldValue name='enabled' value='false'/>
</
ProtoInstance>
<
ExternProtoDeclare name='
WaypointInterpolator'
url='
"
../Savage/Tools/Animation/WaypointInterpolatorPrototype.wrl#WaypointInterpolator"
"
https://savage.nps.edu/Savage/Tools/Animation/WaypointInterpolatorPrototype.wrl#WaypointInterpolator"
"
../Savage/Tools/Animation/WaypointInterpolatorPrototype.x3d#WaypointInterpolator"
"
https://savage.nps.edu/Savage/Tools/Animation/WaypointInterpolatorPrototype.x3d#WaypointInterpolator"
'>
<field name='description' type='SFString' accessType='initializeOnly'/>
<field name='waypoints' type='MFVec3f' accessType='initializeOnly'/>
<field name='pitchUpDownForVerticalWaypoints' type='SFBool' accessType='initializeOnly'/>
<!-- Priority of use: legSpeeds (m/sec), legDurations (seconds), defaultSpeed (m/sec) -->
<field name='legSpeeds' type='MFFloat' accessType='initializeOnly'
appinfo='Units m/sec. If used, array lengths for legSpeeds and legDurations must be one less than number of waypoints.'/>
<field name='legDurations' type='MFTime' accessType='initializeOnly'
appinfo='Units in seconds. If used, array lengths for legSpeeds and legDurations must be one less than number of waypoints.'/>
<field name='defaultSpeed' type='SFFloat' accessType='initializeOnly'
appinfo='Units m/sec.'/>
<field name='turningRate' type='SFFloat' accessType='initializeOnly'
appinfo='turningRate (degrees/second) also determines standoff distance prior to waypoint where turn commences. If 0, turns are instantaneous.'/>
<field name='totalDuration' type='SFTime' accessType='outputOnly'
appinfo='Output calculation combining all leg durations, units in seconds.'/>
<!-- exposed PositionInterpolator and OrientationInterpolator settings: -->
<field name='set_fraction' type='SFFloat' accessType='inputOnly'/>
<field name='position_changed' type='SFVec3f' accessType='outputOnly'/>
<field name='orientation_changed' type='SFRotation' accessType='outputOnly'/>
<field name='lineColor' type='SFColor' accessType='inputOutput'/>
<field name='highlightSegmentColor' type='SFColor' accessType='inputOutput'
appinfo='highlightSegmentColors must contain two color values, for each endpoint of the highlight segment.'/>
<field name='transparency' type='SFFloat' accessType='inputOutput'/>
<field name='labelDisplayMode' type='SFString' accessType='initializeOnly'
appinfo='allowed values: none; waypoints (produce labels at each waypoint); or interpolation (produce single moving label at interpolator time, course, speed, location)'/>
<field name='heightLabel' type='SFString' accessType='initializeOnly'
appinfo='allowed values: altitude, depth (negate Y value), none'/>
<field name='labelOffset' type='SFVec3f' accessType='initializeOnly'/>
<field name='labelFontSize' type='SFFloat' accessType='initializeOnly'/>
<field name='labelColor' type='SFColor' accessType='initializeOnly'/>
<field name='traceEnabled' type='SFBool' accessType='initializeOnly'/>
<field name='outputInitializationComputations' type='SFBool' accessType='initializeOnly'
appinfo='Output the number of waypoints, totalDistance and totalDuration to console upon initialization'/>
<field name='verticalDropLineColor' type='SFColor' accessType='inputOutput'
appinfo='default color for vertical drop-line segments'/>
<field name='verticalDropLineTransparency' type='SFFloat' accessType='inputOutput'
appinfo='1.0 is completely transparent, 0.0 is completely opaque.'/>
</
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'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.571'
groundColor='
0.1 0.1 0.0, 0.4 0.25 0.2, 0.6 0.6 0.6, '
skyAngle='
1.309 1.571'
skyColor='
0.0 0.5 1.0, 0.0 0.0 1.0, 0.0 0.0 1.0, '/>
<
Inline
url='
"
IntroductionMessage.wrl"
"
http://www.web3d.org/x3d/content/examples/Basic/KelpForestExhibit/IntroductionMessage.wrl"
"
IntroductionMessage.x3d"
"
http://www.web3d.org/x3d/content/examples/Basic/KelpForestExhibit/IntroductionMessage.x3d"
'/>
<
Collision enabled='
false'>
<
Transform>
</
Transform>
<
Transform>
</
Transform>
<
Transform>
</
Transform>
<
Transform scale='
0.54 0.75 0.52'
translation='
0.3 -2.88 7.3'>
</
Transform>
<
Transform DEF='
K2_LOCALE'
translation='
-4.0 0.0 1.0'>
<!--
K2_MIDWATER ROUTE:
[
from RIGHT_DEEP_WAVE.value_changed to set_translation
]
-->
<
Transform DEF='
K2_MIDWATER'
scale='
0.2 0.2 0.2'
translation='
-1.0 -4.0 -4.0'>
</
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'>
</
Transform>
</
Transform>
<
Transform DEF='
K4_LOCALE'
translation='
-2.5 0.0 -2.5'>
<!--
K4_MIDWATER ROUTE:
[
from CENTER_WAVE.value_changed to set_translation
]
-->
<
Transform DEF='
K4_MIDWATER'
translation='
-10.0 -2.0 -2.0'>
</
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'>
</
Transform>
</
Transform>
<
Transform DEF='
K7_LOCALE'
translation='
2.0 0.0 -2.5'>
<!--
K7_MIDWATER ROUTE:
[
from CENTER_WAVE.value_changed to set_translation
]
-->
<
Transform DEF='
K7_MIDWATER'
scale='
0.25 0.25 0.25'
translation='
2.0 -4.0 0.0'>
</
Transform>
<
Transform DEF='
K7_FLOOR'
scale='
0.5 0.85 0.5'
translation='
0.0 -7.75 0.0'>
</
Transform>
</
Transform>
<
Transform DEF='
K10_LOCALE'
translation='
7.0 0.0 2.0'>
<!--
K10_DEEP ROUTE:
[
from LEFT_DEEP_WAVE.value_changed to set_translation
]
-->
<
Transform DEF='
K10_DEEP'
translation='
0.0 -5.0 0.0'>
</
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'>
</
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'>
</
Transform>
<!--
K11_DEEP ROUTE:
[
from LEFT_DEEP_WAVE.value_changed to set_translation
]
-->
<
Transform DEF='
K11_DEEP'
rotation='
0.0 1.0 0.0 0.9'
translation='
1.0 -5.0 0.0'>
</
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'>
</
Transform>
<
Transform translation='
1.3 -5.0 3.0'>
</
Transform>
</
Transform>
<
Transform DEF='
R2_LOCALE'
translation='
-1.0 0.0 -1.0'>
</
Transform>
<
Transform DEF='
R3_LOCALE'
translation='
3.0 0.0 -4.0'>
</
Transform>
<
Transform DEF='
R5_LOCALE'
translation='
8.0 0.0 -2.0'>
</
Transform>
<!--
WAVE_CLOCK ROUTE:
[
from fraction_changed to CENTER_WAVE.set_fraction
]
-->
<
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, '/>
<!--
LEFT_DEEP_WAVE ROUTEs:
[
from value_changed to K10_DEEP.set_translation
]
[
from value_changed to K11_DEEP.set_translation
]
-->
<
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, '/>
<!--
CENTER_WAVE ROUTEs:
[
from WAVE_CLOCK.fraction_changed to set_fraction
]
[
from value_changed to K7_MIDWATER.set_translation
]
[
from value_changed to K4_MIDWATER.set_translation
]
[
from value_changed to R3_MIDWATER.set_translation
]
-->
<
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, '/>
<!--
RIGHT_SHALLOW_WAVE ROUTEs:
[
from value_changed to R2_MIDWATER.set_translation
]
[
from value_changed to R5_SHALLOW.set_translation
]
-->
<
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, '/>
<!--
RIGHT_DEEP_WAVE ROUTEs:
[
from value_changed to K2_MIDWATER.set_translation
]
[
from value_changed to R2_DEEP.set_translation
]
-->
<
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 fromNode='
WAVE_CLOCK'
fromField='
fraction_changed'
toNode='
CENTER_WAVE'
toField='
set_fraction'/>
<
ROUTE fromNode='
CENTER_WAVE'
fromField='
value_changed'
toNode='
K7_MIDWATER'
toField='
set_translation'/>
<
ROUTE fromNode='
RIGHT_DEEP_WAVE'
fromField='
value_changed'
toNode='
K2_MIDWATER'
toField='
set_translation'/>
<
ROUTE fromNode='
CENTER_WAVE'
fromField='
value_changed'
toNode='
K4_MIDWATER'
toField='
set_translation'/>
<
ROUTE fromNode='
LEFT_DEEP_WAVE'
fromField='
value_changed'
toNode='
K10_DEEP'
toField='
set_translation'/>
<
ROUTE fromNode='
LEFT_DEEP_WAVE'
fromField='
value_changed'
toNode='
K11_DEEP'
toField='
set_translation'/>
<
ROUTE fromNode='
RIGHT_SHALLOW_WAVE'
fromField='
value_changed'
toNode='
R2_MIDWATER'
toField='
set_translation'/>
<
ROUTE fromNode='
RIGHT_DEEP_WAVE'
fromField='
value_changed'
toNode='
R2_DEEP'
toField='
set_translation'/>
<
ROUTE fromNode='
CENTER_WAVE'
fromField='
value_changed'
toNode='
R3_MIDWATER'
toField='
set_translation'/>
<
ROUTE fromNode='
RIGHT_SHALLOW_WAVE'
fromField='
value_changed'
toNode='
R5_SHALLOW'
toField='
set_translation'/>
<
TimeSensor DEF='
MasterClock'
loop='
true'/>
<
Group DEF='
Nancy'>
</
Group>
<
ROUTE fromNode='
JEFFSCLOCK'
fromField='
fraction_changed'
toNode='
NancyInterpolator'
toField='
set_fraction'/>
<
ROUTE fromNode='
NancyInterpolator'
fromField='
position_changed'
toNode='
NancyTransform'
toField='
set_translation'/>
<
ROUTE fromNode='
NancyInterpolator'
fromField='
orientation_changed'
toNode='
NancyTransform'
toField='
set_rotation'/>