<?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>
</head>
<!--
<!--
Event Graph ROUTE Table
shows event connections
-->
<!--
Index for DEF nodes:
CENTER_WAVE,
JEFFSCLOCK,
K10_DEEP,
K10_FLOOR,
K10_LOCALE,
K11_DEEP,
K11_FLOOR,
K11_LOCALE,
K11_MIDWATER,
K2_FLOOR,
K2_LOCALE,
K2_MIDWATER,
K4_FLOOR,
K4_LOCALE,
K4_MIDWATER,
K7_FLOOR,
K7_LOCALE,
K7_MIDWATER,
KelpExamplesNoBase,
LEFT_DEEP_WAVE,
LEFT_SHALLOW_WAVE,
MasterClock,
Nancy,
NancyInterpolator,
NancyTransform,
R2_DEEP,
R2_LOCALE,
R2_MIDWATER,
R3_LOCALE,
R3_MIDWATER,
R5_LOCALE,
R5_SHALLOW,
RIGHT_DEEP_WAVE,
RIGHT_SHALLOW_WAVE,
Root,
Viewpoints,
WAVE_CLOCK
Index for Viewpoint nodes:
Viewpoint_1,
Viewpoint_2,
Viewpoint_3,
Viewpoint_4,
Viewpoint_5,
Viewpoint_6,
Viewpoint_7
Index for ExternProtoDeclare definitions:
WaypointInterpolator,
WhereAmI
-->
<Scene>
<Collision enabled='false'>
<Transform translation='0 -3.5 -2'>
<Shape>
<Appearance>
<Material diffuseColor='1 .5 0' transparency='.9'/>
</Appearance>
<Box size='20 11 11'/>
</Shape>
</Transform>
</Collision>
<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://faculty.nps.edu/brutzman/kelp"
' title='NPS Virtual Kelp Forest Exhibit'/>
<NavigationInfo speed='3.0'/>
<ExternProtoDeclare name='WhereAmI'
url='
"../Chapter14Prototypes/WhereAmIPrototype.x3d#WhereAmI"
"https://www.web3d.org/x3d/content/examples/X3dForWebAuthors/Chapter14Prototypes/WhereAmIPrototype.x3d#WhereAmI" "../Chapter14Prototypes/WhereAmIPrototype.wrl#WhereAmI"
"https://www.web3d.org/x3d/content/examples/X3dForWebAuthors/Chapter14Prototypes/WhereAmIPrototype.wrl#WhereAmI" '
/>
<ProtoInstance name='WhereAmI'/>
<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://savage.nps.edu/Savage/Tools/Animation/WaypointInterpolatorPrototype.x3d#WaypointInterpolator" "../../Savage/Tools/Animation/WaypointInterpolatorPrototype.wrl#WaypointInterpolator"
"https://savage.nps.edu/Savage/Tools/Animation/WaypointInterpolatorPrototype.wrl#WaypointInterpolator" '
>
<!-- Priority of use: legSpeeds (m/sec), legDurations (seconds), defaultSpeed (m/sec) -->
<field name='description' type='SFString' accessType='initializeOnly'
appinfo='Short description of what is animated by this WaypointInterpolator.'
/>
<field name='waypoints' type='MFVec3f' accessType='initializeOnly'
appinfo='Waypoints being traversed with interpolation of intermediate positions and orientations.'
/>
<field name='add_waypoint' type='SFVec3f' accessType='inputOnly'
appinfo='Add another single waypoint to array of waypoints recalculate interpolator values.'
/>
<field name='set_waypoints' type='MFVec3f' accessType='inputOnly'
appinfo='Replace all waypoints recalculate interpolator values.'
/>
<field name='pitchUpDownForVerticalWaypoints' type='SFBool' accessType='initializeOnly'
appinfo='Whether to pitch child geometry (such as a vehicle) up or down to match vertical slope'
/>
<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 summing all leg durations, useful for setting TimeSensor cycleInterval. Units in seconds.'
/>
<!-- interpolation fields -->
<field name='set_fraction' type='SFFloat' accessType='inputOnly'
appinfo='exposed PositionInterpolator and OrientationInterpolator setting'
/>
<field name='position_changed' type='SFVec3f' accessType='outputOnly'
appinfo='exposed PositionInterpolator setting'
/>
<field name='orientation_changed' type='SFRotation' accessType='outputOnly'
appinfo='exposed OrientationInterpolator setting'
/>
<!-- display-related fields -->
<field name='lineColor' type='SFColor' accessType='inputOutput'
appinfo='default color for non-active line segments'
/>
<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'
appinfo='1.0 is completely transparent, 0.0 is completely opaque.'
/>
<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'
appinfo='heightLabel relative location'
/>
<field name='labelFontSize' type='SFFloat' accessType='initializeOnly'
appinfo='heightLabel text size'
/>
<field name='labelColor' type='SFColor' accessType='initializeOnly'
appinfo='heightLabel text color'
/>
<field name='traceEnabled' type='SFBool' accessType='initializeOnly'
appinfo='enable console output to trace script computations and prototype progress'
/>
<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 skyColor='.8 .8 .8'/>
<
Fog color='
.8 .8 .8'
visibilityRange='
60'/>
<Inline
url='
"../KelpForestExhibit/IntroductionMessage.x3d"
"https://www.web3d.org/x3d/content/examples/X3dForWebAuthors/KelpForestExhibit/IntroductionMessage.x3d" "../KelpForestExhibit/IntroductionMessage.wrl"
"https://www.web3d.org/x3d/content/examples/X3dForWebAuthors/KelpForestExhibit/IntroductionMessage.wrl" '
/>
<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'>
</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'>
</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'>
</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'>
</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>
</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>
</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>
<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'/>
</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'>
<!-- Scale used on Nancy underwater to approximate the defraction magnification of the plexiglass window. -->
</Transform>
<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
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'/>
</Scene>
</X3D>
<!--
<!--
Event Graph ROUTE Table
shows event connections
-->
<!--
Index for DEF nodes:
CENTER_WAVE,
JEFFSCLOCK,
K10_DEEP,
K10_FLOOR,
K10_LOCALE,
K11_DEEP,
K11_FLOOR,
K11_LOCALE,
K11_MIDWATER,
K2_FLOOR,
K2_LOCALE,
K2_MIDWATER,
K4_FLOOR,
K4_LOCALE,
K4_MIDWATER,
K7_FLOOR,
K7_LOCALE,
K7_MIDWATER,
KelpExamplesNoBase,
LEFT_DEEP_WAVE,
LEFT_SHALLOW_WAVE,
MasterClock,
Nancy,
NancyInterpolator,
NancyTransform,
R2_DEEP,
R2_LOCALE,
R2_MIDWATER,
R3_LOCALE,
R3_MIDWATER,
R5_LOCALE,
R5_SHALLOW,
RIGHT_DEEP_WAVE,
RIGHT_SHALLOW_WAVE,
Root,
Viewpoints,
WAVE_CLOCK
Index for Viewpoint nodes:
Viewpoint_1,
Viewpoint_2,
Viewpoint_3,
Viewpoint_4,
Viewpoint_5,
Viewpoint_6,
Viewpoint_7
Index for ExternProtoDeclare definitions:
WaypointInterpolator,
WhereAmI
-->
-->
<!--
Online at
https://www.web3d.org/x3d/content/examples/X3dForWebAuthors/Chapter12EnvironmentSensorSound/CollisionKelpForestMainIndex.html
-->
<!--
Version control at
https://sourceforge.net/p/x3d/code/HEAD/tree/www.web3d.org/x3d/content/examples/X3dForWebAuthors/Chapter12EnvironmentSensorSound/CollisionKelpForestMain.x3d
-->
<!--
Color legend: X3D terminology
<X3dNode
DEF='idName' field='value'/>
matches XML terminology
<XmlElement
DEF='idName' attribute='value'/>
(Light-blue background: event-based behavior node or statement)
(Grey background inside box: inserted documentation)
(Magenta background: X3D Extensibility)
<ProtoInstance
name='ProtoName'>
<field
name='fieldName'/> </ProtoInstance>
-->
<!--
For additional help information about X3D scenes, please see X3D Tooltips, X3D Resources, and X3D Scene Authoring Hints.
-->