1 |
<?xml version="1.0" encoding="UTF-8"?>
|
2 |
<!DOCTYPE X3D PUBLIC "ISO//Web3D//DTD X3D 3.3//EN" "https://www.web3d.org/specifications/x3d-3.3.dtd">
|
3 | <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'> |
4 | <head> |
5 | <meta name='title' content=' SonobuoyFieldScenario.x3d '/> |
6 | <meta name='description' content='Representative tactical visualization of a DICASS sonobuoy field.'/> |
7 | <meta name='creator' content='Don Brutzman'/> |
8 | <meta name='created' content='31 January 2003'/> |
9 | <meta name='modified' content='2 January 2025'/> |
10 | <meta name=' warning ' content=' problem with X3DOM, further debugging needed '/> |
11 | <meta name='coordinateSystem' content='x=East, z=North, y=Up'/> |
12 | <meta name='subject' content='sonobouy field'/> |
13 |
<meta name='Image' content='GridView.jpg'![]() |
14 |
<meta name='Image' content='SeaHawkRadioCommand.jpg'![]() |
15 |
<meta name='Image' content='SeaHawkView.jpg'![]() |
16 |
<meta name='Image' content='SeaHawkViewPing.jpg'![]() |
17 |
<meta name='Image' content='SonobuoyFieldScenario-1.jpg'![]() |
18 |
<meta name='Image' content='SonobuoyFieldScenario-2.jpg'![]() |
19 |
<meta name='Image' content='SonobuoyFieldScenario-3.jpg'![]() |
20 |
<meta name='Image' content='SonobuoyView.jpg'![]() |
21 | <meta name='identifier' content=' https://www.web3d.org/x3d/content/examples/Savage/CommunicationsAndSensors/Sonobuoys/SonobuoyFieldScenario.x3d '/> |
22 | <meta name='generator' content='X3D-Edit 3.3, https://www.web3d.org/x3d/tools/X3D-Edit'/> |
23 | <meta name='license' content='../../license.html'/> |
24 | </head> |
25 | <Scene> |
26 | <WorldInfo title='SonobuoyFieldScenario.x3d'/> |
27 | <NavigationInfo speed='100' visibilityLimit='40000'/> |
28 | <Viewpoint DEF='TopDown' description='Looking down from above - TODO check visibilityLimit' orientation='1 0 0 -1.550799' position='0 2000 10'/> |
29 | <Group DEF='BackgroundEnvironment'> |
30 | <!-- topmost Background node is bound and active --> |
31 | <Background DEF='OpenOcean' groundAngle='0.05 1.309 1.570796' groundColor='0 0 0 0 0.2 0.4 0.05 0.25 0.6 0.1 0.2 0.4' skyAngle='0.05 0.1 1.309 1.571' skyColor='0.8 0.8 0.2 0.1 0.1 0.6 0.1 0.1 0.6 0.1 0.25 0.8 0.6 0.6 0.9'/> |
32 | <Background DEF='SandyShallowBottom' groundAngle='0.05 1.52 1.56 1.570796' groundColor='0.2 0.2 0 0.3 0.3 0 0.5 0.5 0.3 0.1 0.3 0.4 0 0.2 0.4' skyAngle='0.05 0.1 1.309 1.571' skyColor='0.8 0.8 0.2 0.1 0.1 0.6 0.1 0.1 0.6 0.1 0.25 0.8 0.6 0.6 0.9'/> |
33 | <Background groundAngle='1.309 1.570796' groundColor='0.1 0.1 0 0.4 0.25 0.2 0.6 0.6 0.6' skyAngle='1.309 1.571' skyColor='0 0.2 0.7 0 0.5 1 1 1 1'/> |
34 | </Group> |
35 | <Group DEF='ExternProtoDeclareReferences'> |
36 | <ExternProtoDeclare name='BeamCylinder' appinfo='Produce wireframe or transparent beam cylinders. Typical uses include propeller/thruster water flow or line-of-sight sonar/radar/light beams. Negative range values invert base and apex at same relative location. Default: beam with apex at (0 0 0) and base of radius 1 in x-z plane at (1 0 0).' url=' "../../CommunicationsAndSensors/Beam/BeamCylinderPrototype.x3d#BeamCylinder" "https://www.web3d.org/x3d/content/examples/Savage/CommunicationsAndSensors/Beam/BeamCylinderPrototype.x3d#BeamCylinder" "../../CommunicationsAndSensors/Beam/BeamCylinderPrototype.wrl#BeamCylinder" "https://www.web3d.org/x3d/content/examples/Savage/CommunicationsAndSensors/Beam/BeamCylinderPrototype.wrl#BeamCylinder" '> |
37 |
<field name='name' type='SFString' accessType='initializeOnly'
appinfo='Assigning a name to a BeamCylinder aids tracing'/> |
38 |
<field name='contact' type='SFBool' accessType='inputOnly'
appinfo='(communications) is transmitted signal in contact with receiver or (sensor) is a target return detected?'/> |
39 |
<field name='range' type='SFFloat' accessType='inputOnly'
appinfo='distance in meters along x axis'/> |
40 |
<field name='defaultRange' type='SFFloat' accessType='initializeOnly'
appinfo='distance in meters used until eventIn range sent'/> |
41 |
<field name='wireframe' type='SFBool' accessType='initializeOnly'
appinfo='whether wireframe beam is drawn'/> |
42 |
<field name='solid' type='SFBool' accessType='initializeOnly'
appinfo='whether solid beam is drawn'/> |
43 |
<field name='beamHeight' type='SFFloat' accessType='initializeOnly'
appinfo='meters across vertical y axis'/> |
44 |
<field name='beamWidth' type='SFFloat' accessType='initializeOnly'
appinfo='meters across horizontal z axis'/> |
45 |
<field name='contactColor' type='SFColor' accessType='initializeOnly'
appinfo='rendering color when contact=true'/> |
46 |
<field name='noContactColor' type='SFColor' accessType='initializeOnly'
appinfo='rendering color when contact=false'/> |
47 |
<field name='transparency' type='SFFloat' accessType='inputOutput'
appinfo='1 = fully transparent wireframe only'/> |
48 | </ExternProtoDeclare> |
49 | <ExternProtoDeclare name='CrossHair' appinfo='CrossHair prototype provides a heads-up display (HUD) crosshair at the view center, which is useful for assessing NavigationInfo lookAt point' url=' "../../../Savage/Tools/HeadsUpDisplays/CrossHairPrototype.x3d#CrossHair" "https://www.web3d.org/x3d/content/examples/Savage/Tools/HeadsUpDisplays/CrossHairPrototype.x3d#CrossHair" "../../../Savage/Tools/HeadsUpDisplays/CrossHairPrototype.wrl#CrossHair" "https://www.web3d.org/x3d/content/examples/Savage/Tools/HeadsUpDisplays/CrossHairPrototype.wrl#CrossHair" '> |
50 |
<field name='enabled' type='SFBool' accessType='initializeOnly'
appinfo='whether CrossHair prototype is enabled or not'/> |
51 |
<field name='set_enabled' type='SFBool' accessType='inputOnly'
appinfo='control whether enabled/disabled'/> |
52 |
<field name='markerColor' type='SFColor' accessType='inputOutput'
appinfo='color of CrossHair marker'/> |
53 |
<field name='scale' type='SFVec3f' accessType='inputOutput'
appinfo='size of CrossHair in meters'/> |
54 |
<field name='positionOffsetFromCamera' type='SFVec3f' accessType='inputOutput'
appinfo='distance in front of HUD viewpoint'/> |
55 | </ExternProtoDeclare> |
56 | <ExternProtoDeclare name='DICASS' appinfo='AN/SSQ-62B/C/D/E Directional Command Activated Sonobuoy System (DICASS) Sonobuoy' url=' "DicassPrototype.x3d#DICASS" "https://www.web3d.org/x3d/content/examples/Savage/CommunicationsAndSensors/Sonobuoys/DicassPrototype.x3d#DICASS" "DicassPrototype.wrl#DICASS" "https://www.web3d.org/x3d/content/examples/Savage/CommunicationsAndSensors/Sonobuoys/DicassPrototype.wrl#DICASS" '> |
57 |
<field name='ID' type='MFString' accessType='inputOutput'
appinfo='identifier label for this buoy'/> |
58 |
<field name='version' type='SFString' accessType='initializeOnly'
appinfo='default value: AN/SSQ-62B'/> |
59 |
<field name='initialPositionXZ' type='SFVec2f' accessType='initializeOnly'
appinfo='local surface coordinates X=North Z=East'/> |
60 |
<field name='orderedPositionXZ' type='SFVec2f' accessType='inputOnly'
appinfo='local surface coordinates X=North Z=East'/> |
61 |
<field name='initialDepth' type='SFFloat' accessType='initializeOnly'
appinfo='meters depth use negative numbers for subsurface'/> |
62 |
<field name='orderedDepth' type='SFFloat' accessType='inputOnly'
appinfo='meters depth use negative numbers for subsurface'/> |
63 |
<field name='bindViewpoint' type='SFBool' accessType='inputOnly'
appinfo='trigger event to bind/unbind viewpoint'/> |
64 |
<field name='location_changed' type='SFVec3f' accessType='outputOnly'
appinfo='local coordinates X=North Y=altitude Z=East'/> |
65 |
<field name='maxRange' type='SFFloat' accessType='initializeOnly'
appinfo='maximum audible sonar detection range meters'/> |
66 |
<field name='pingDuration' type='SFTime' accessType='outputOnly'
appinfo='pingDuration corresponds to maxRange at 1500m/sec sound speed'/> |
67 |
<field name='startPing' type='SFBool' accessType='inputOnly'
appinfo='trigger event to start single ping'/> |
68 |
<field name='startContinuousPings' type='SFBool' accessType='inputOnly'
appinfo='trigger event to start continuous ping sequence'/> |
69 |
<field name='linkText' type='MFString' accessType='inputOutput'
appinfo='Can add linkable text for further information'/> |
70 |
<field name='linkUrl' type='MFString' accessType='inputOutput'
appinfo='url for linkable text'/> |
71 |
<field name='linkTargetWindow' type='MFString' accessType='inputOutput'
appinfo='target window for linkable text'/> |
72 |
<field name='soundSpeed' type='SFFloat' accessType='initializeOnly'
appinfo='in-water sound speed m/s, default value 1500' documentation='https://en.wikipedia.org/wiki/Speed_of_sound#Seawater'/> |
73 | </ExternProtoDeclare> |
74 | <ExternProtoDeclare name='GridXZ' appinfo='Line grid authoring tool to enable precise measurement of objects in 3D space - fixed position. Oriented along XZ plane size 20m by 20m.' url=' "../../../Savage/Tools/Authoring/GridXZPrototype.x3d#GridXZ" "https://www.web3d.org/x3d/content/examples/Savage/Tools/Authoring/GridXZPrototype.x3d#GridXZ" "../../../Savage/Tools/Authoring/GridXZPrototype.wrl#GridXZ" "https://www.web3d.org/x3d/content/examples/Savage/Tools/Authoring/GridXZPrototype.wrl#GridXZ" '> |
75 |
<field name='description' type='SFString' accessType='initializeOnly'
appinfo='Purpose of this grid displayed for overall Viewpoint'/> |
76 |
<field name='labelColor' type='SFColor' accessType='inputOutput'
appinfo='color for descriptive labels at grid edges and corners'/> |
77 |
<field name='scale' type='SFVec3f' accessType='inputOutput'
appinfo='default unscaled size: 10m by 10m'/> |
78 | <field name='originLabel' type='MFString' accessType='inputOutput'/> |
79 |
<field name='WestLabel' type='MFString' accessType='inputOutput'
appinfo='-X axis'/> |
80 | <field name='NorthWestLabel' type='MFString' accessType='inputOutput'/> |
81 |
<field name='NorthLabel' type='MFString' accessType='inputOutput'
appinfo='-Z axis'/> |
82 | <field name='NorthEastLabel' type='MFString' accessType='inputOutput'/> |
83 |
<field name='EastLabel' type='MFString' accessType='inputOutput'
appinfo='+X axis'/> |
84 | <field name='SouthEastLabel' type='MFString' accessType='inputOutput'/> |
85 |
<field name='SouthLabel' type='MFString' accessType='inputOutput'
appinfo='+Z axis'/> |
86 | <field name='SouthWestLabel' type='MFString' accessType='inputOutput'/> |
87 |
<field name='labelsOffset' type='SFVec3f' accessType='inputOutput'
appinfo='label location offset (in meters) to improve readability'/> |
88 | </ExternProtoDeclare> |
89 | <ExternProtoDeclare name='ViewPositionOrientation' appinfo='ViewPositionOrientation provides provides console output of local position and orientation as user navigates' url=' "../../Tools/Authoring/ViewPositionOrientationPrototype.x3d#ViewPositionOrientation" "https://www.web3d.org/x3d/content/examples/Savage/Tools/Authoring/ViewPositionOrientationPrototype.x3d#ViewPositionOrientation" "../../Tools/Authoring/ViewPositionOrientationPrototype.wrl#ViewPositionOrientation" "https://www.web3d.org/x3d/content/examples/Savage/Tools/Authoring/ViewPositionOrientationPrototype.wrl#ViewPositionOrientation" '> |
90 |
<field name='enabled' type='SFBool' accessType='inputOutput'
appinfo='Whether or not ViewPositionOrientation sends output to console'/> |
91 |
<field name='traceEnabled' type='SFBool' accessType='initializeOnly'
appinfo='Output internal trace messages for debugging this node, intended for developer use only'/> |
92 |
<field name='set_traceEnabled' type='SFBool' accessType='inputOnly'
appinfo='Ability to turn output tracing on/off at runtime'/> |
93 |
<field name='position_changed' type='SFVec3f' accessType='outputOnly'
appinfo='Output local position'/> |
94 |
<field name='orientation_changed' type='SFRotation' accessType='outputOnly'
appinfo='Output local orientation'/> |
95 |
<field name='outputViewpointString' type='MFString' accessType='outputOnly'
appinfo='MFString value of new Viewpoint'/> |
96 | </ExternProtoDeclare> |
97 | <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" '> |
98 | <!-- Priority of use: legSpeeds (m/sec), legDurations (seconds), defaultSpeed (m/sec) --> |
99 | <!-- interpolation fields --> |
100 | <!-- display-related fields --> |
101 |
<field name='description' type='SFString' accessType='initializeOnly'
appinfo='Short description of what is animated by this WaypointInterpolator.'/> |
102 |
<field name='waypoints' type='MFVec3f' accessType='initializeOnly'
appinfo='Waypoints being traversed with interpolation of intermediate positions and orientations.'/> |
103 |
<field name='add_waypoint' type='SFVec3f' accessType='inputOnly'
appinfo='Add another single waypoint to array of waypoints recalculate interpolator values.'/> |
104 |
<field name='set_waypoints' type='MFVec3f' accessType='inputOnly'
appinfo='Replace all waypoints recalculate interpolator values.'/> |
105 |
<field name='pitchUpDownForVerticalWaypoints' type='SFBool' accessType='initializeOnly'
appinfo='Whether to pitch child geometry (such as a vehicle) up or down to match vertical slope'/> |
106 |
<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.'/> |
107 |
<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.'/> |
108 |
<field name='defaultSpeed' type='SFFloat' accessType='initializeOnly'
appinfo='Units m/sec.'/> |
109 |
<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.'/> |
110 |
<field name='totalDuration' type='SFTime' accessType='outputOnly'
appinfo='Output calculation summing all leg durations, useful for setting TimeSensor cycleInterval. Units in seconds.'/> |
111 |
<field name='set_fraction' type='SFFloat' accessType='inputOnly'
appinfo='exposed PositionInterpolator and OrientationInterpolator setting'/> |
112 |
<field name='position_changed' type='SFVec3f' accessType='outputOnly'
appinfo='exposed PositionInterpolator setting'/> |
113 |
<field name='orientation_changed' type='SFRotation' accessType='outputOnly'
appinfo='exposed OrientationInterpolator setting'/> |
114 |
<field name='lineColor' type='SFColor' accessType='inputOutput'
appinfo='default color for non-active line segments'/> |
115 |
<field name='highlightSegmentColor' type='SFColor' accessType='inputOutput'
appinfo='active segment highlight color'/> |
116 |
<field name='transparency' type='SFFloat' accessType='inputOutput'
appinfo='1.0 is completely transparent, 0.0 is completely opaque.'/> |
117 |
<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)'/> |
118 |
<field name='heightLabel' type='SFString' accessType='initializeOnly'
appinfo='allowed values: altitude depth (negate Y value) none'/> |
119 |
<field name='labelOffset' type='SFVec3f' accessType='initializeOnly'
appinfo='heightLabel relative location'/> |
120 |
<field name='labelFontSize' type='SFFloat' accessType='initializeOnly'
appinfo='heightLabel text size'/> |
121 |
<field name='labelColor' type='SFColor' accessType='initializeOnly'
appinfo='heightLabel text color'/> |
122 |
<field name='traceEnabled' type='SFBool' accessType='initializeOnly'
appinfo='enable console output to trace script computations and prototype progress'/> |
123 |
<field name='outputInitializationComputations' type='SFBool' accessType='initializeOnly'
appinfo='Output the number of waypoints totalDistance and totalDuration to console upon initialization'/> |
124 |
<field name='verticalDropLineColor' type='SFColor' accessType='inputOutput'
appinfo='default color for vertical drop-line segments'/> |
125 |
<field name='verticalDropLineTransparency' type='SFFloat' accessType='inputOutput'
appinfo='1.0 is completely transparent, 0.0 is completely opaque.'/> |
126 | </ExternProtoDeclare> |
127 | </Group> |
128 | <ProtoInstance name='GridXZ'> |
129 | <fieldValue name='description' value='Sonobuoy Field Scenario'/> |
130 | <fieldValue name='labelColor' value='0.8 0.8 1'/> |
131 | <fieldValue name='scale' value='1000 1000 1000'/> |
132 | <fieldValue name='originLabel' value='"origin"'/> |
133 | <fieldValue name='WestLabel' value='"West" "-Z"'/> |
134 | <fieldValue name='NorthWestLabel' value='"10000 0 -10000"'/> |
135 | <fieldValue name='NorthLabel' value='"North" "+X"'/> |
136 | <fieldValue name='NorthEastLabel' value='"10000 0 10000"'/> |
137 | <fieldValue name='EastLabel' value='"East" "+Z"'/> |
138 | <fieldValue name='SouthEastLabel' value='"-10000 0 10000"'/> |
139 | <fieldValue name='SouthLabel' value='"South" "-X"'/> |
140 | <fieldValue name='SouthWestLabel' value='"-10000 0 -10000"'/> |
141 | </ProtoInstance> |
142 | <Switch DEF='AuthoringAssist' whichChoice='0'> |
143 | <Group> |
144 | <Transform scale='10 10 10'> |
145 | <Inline DEF='CoordinateAxes' url=' "../../../Savage/Tools/Authoring/CoordinateAxes.x3d" "https://www.web3d.org/x3d/content/examples/X3dForWebAuthors/Chapter03Grouping/CoordinateAxes.x3d" "https://www.web3d.org/x3d/content/examples/Savage/Tools/Authoring/CoordinateAxes.x3d" "../../../Savage/Tools/Authoring/CoordinateAxes.wrl" "https://www.web3d.org/x3d/content/examples/X3dForWebAuthors/Chapter03Grouping/CoordinateAxes.wrl" "https://www.web3d.org/x3d/content/examples/Savage/Tools/Authoring/CoordinateAxes.wrl" '/> |
146 | </Transform> |
147 | <ProtoInstance name='ViewPositionOrientation' DEF='ConsoleOutputViewPositionOrientation'> |
148 | <fieldValue name='enabled' value='false'/> |
149 | </ProtoInstance> |
150 | <ProtoInstance name='CrossHair' DEF='CrossHairInstance'> |
151 | <fieldValue name='enabled' value='true'/> |
152 | <fieldValue name='markerColor' value='1 0.5 0'/> |
153 | <fieldValue name='scale' value='1 1 1'/> |
154 | <fieldValue name='positionOffsetFromCamera' value='0 0 -6'/> |
155 | </ProtoInstance> |
156 | </Group> |
157 | <Transform DEF='Grid10kmBy10km' scale='1000 1000 1000'> |
158 | <Inline url=' "../../../Savage/Tools/Authoring/GridXZ_20x20Fixed.x3d" "https://www.web3d.org/x3d/content/examples/Savage/Tools/Authoring/GridXZ_20x20Fixed.x3d" "../../../Savage/Tools/Authoring/GridXZ_20x20Fixed.wrl" "https://www.web3d.org/x3d/content/examples/Savage/Tools/Authoring/GridXZ_20x20Fixed.wrl" '/> |
159 | </Transform> |
160 | </Switch> |
161 | <Group DEF='HelicopterGroup'> |
162 |
<!-- ROUTE information for SeahawkHelicopterTransform node:
[from HelicopterOrbitTrack.position_changed to set_translation
]
[from HelicopterOrbitTrack.orientation_changed to set_rotation
]
-->
<Transform DEF='SeahawkHelicopterTransform'> |
163 | <Inline url=' "../../AircraftHelicopters/SH60-Seahawk-UnitedStates/SH60Seahawk.x3d" "https://www.web3d.org/x3d/content/examples/Savage/AircraftHelicopters/SH60-Seahawk-UnitedStates/SH60Seahawk.x3d" "../../AircraftHelicopters/SH60-Seahawk-UnitedStates/SH60Seahawk.wrl" "https://www.web3d.org/x3d/content/examples/Savage/AircraftHelicopters/SH60-Seahawk-UnitedStates/SH60Seahawk.wrl" '/> |
164 | </Transform> |
165 |
<!-- ROUTE information for HelicopterOrbitClock node:
[from HelicopterOrbitTrack.totalDuration to set_cycleInterval
]
[from fraction_changed to HelicopterOrbitTrack.set_fraction
]
-->
<TimeSensor DEF='HelicopterOrbitClock' cycleInterval='211.7' loop='true'/> |
166 |
<!-- ProtoInstance
HelicopterOrbitTrack is a DEF node that has 1 USE node: USE_1
<!-- ROUTE information for HelicopterOrbitTrack node: [from HelicopterOrbitClock.fraction_changed to set_fraction ] [from totalDuration to HelicopterOrbitClock.set_cycleInterval ] [from position_changed to SeahawkHelicopterTransform.set_translation ] [from orientation_changed to SeahawkHelicopterTransform.set_rotation ] [from position_changed to RadioBeamOrientation.set_translation ] --> <ProtoInstance name='WaypointInterpolator' DEF='HelicopterOrbitTrack'> |
167 | <!-- Priority of use: legSpeeds (m/sec), legDurations (seconds), defaultSpeed (m/sec) --> |
168 | <fieldValue name='description' value='SH-60B Seahawk orbit'/> |
169 | <fieldValue name='waypoints' value='0 100 0 -1000 100 1000 -1000 500 5000 0 500 6000 5000 500 6000 6000 100 5000 6000 100 0 5000 100 -1000 1000 100 -1000 0 100 0'/> |
170 | <fieldValue name='pitchUpDownForVerticalWaypoints' value='false'/> |
171 | <fieldValue name='defaultSpeed' value='50'/> |
172 | <fieldValue name='turningRate' value='5'/> |
173 | <fieldValue name='lineColor' value='0.5 0.5 0'/> |
174 | <fieldValue name='highlightSegmentColor' value='1 1 0'/> |
175 | <fieldValue name='transparency' value='0'/> |
176 | <fieldValue name='labelDisplayMode' value='interpolation'/> |
177 | <fieldValue name='heightLabel' value='altitude'/> |
178 | <fieldValue name='labelOffset' value='0 3 0'/> |
179 | <fieldValue name='labelFontSize' value='0.8'/> |
180 | <fieldValue name='labelColor' value='1 1 0'/> |
181 | <fieldValue name='traceEnabled' value='false'/> |
182 | </ProtoInstance> |
183 | < ROUTE fromNode='HelicopterOrbitTrack' fromField='totalDuration' toNode='HelicopterOrbitClock' toField='set_cycleInterval'/> |
184 | < ROUTE fromNode='HelicopterOrbitClock' fromField='fraction_changed' toNode='HelicopterOrbitTrack' toField='set_fraction'/> |
185 | < ROUTE fromNode='HelicopterOrbitTrack' fromField='position_changed' toNode='SeahawkHelicopterTransform' toField='set_translation'/> |
186 | < ROUTE fromNode='HelicopterOrbitTrack' fromField='orientation_changed' toNode='SeahawkHelicopterTransform' toField='set_rotation'/> |
187 | </Group> |
188 | <Group DEF='SonobuoyFieldLayout'> |
189 | <Transform DEF='LocationBuoy1-1'> |
190 |
<!-- ProtoInstance
DICASS-1-1 is a DEF node that has 1 USE node: USE_1 -->
<ProtoInstance name='DICASS' DEF='DICASS-1-1'> |
191 | <fieldValue name='ID' value='"DICASS 1.1"'/> |
192 | <fieldValue name='initialPositionXZ' value='1000 1000'/> |
193 | <fieldValue name='initialDepth' value='-100'/> |
194 | <fieldValue name='maxRange' value='1000'/> |
195 | </ProtoInstance> |
196 | </Transform> |
197 | <Transform DEF='LocationBuoy1-2'> |
198 |
<!-- ProtoInstance
DICASS-1-2 is a DEF node that has 1 USE node: USE_1 -->
<ProtoInstance name='DICASS' DEF='DICASS-1-2'> |
199 | <fieldValue name='ID' value='"DICASS 1.2"'/> |
200 | <fieldValue name='initialPositionXZ' value='1000 2000'/> |
201 | <fieldValue name='initialDepth' value='-100'/> |
202 | <fieldValue name='maxRange' value='1000'/> |
203 | </ProtoInstance> |
204 | </Transform> |
205 | <Transform DEF='LocationBuoy1-3'> |
206 |
<!-- ProtoInstance
DICASS-1-3 is a DEF node that has 1 USE node: USE_1 -->
<ProtoInstance name='DICASS' DEF='DICASS-1-3'> |
207 | <fieldValue name='ID' value='"DICASS 1.3"'/> |
208 | <fieldValue name='initialPositionXZ' value='1000 3000'/> |
209 | <fieldValue name='initialDepth' value='-100'/> |
210 | <fieldValue name='maxRange' value='1000'/> |
211 | </ProtoInstance> |
212 | </Transform> |
213 | <Transform DEF='LocationBuoy1-4'> |
214 |
<!-- ProtoInstance
DICASS-1-4 is a DEF node that has 1 USE node: USE_1 -->
<ProtoInstance name='DICASS' DEF='DICASS-1-4'> |
215 | <fieldValue name='ID' value='"DICASS 1.4"'/> |
216 | <fieldValue name='initialPositionXZ' value='1000 4000'/> |
217 | <fieldValue name='initialDepth' value='-100'/> |
218 | <fieldValue name='maxRange' value='1000'/> |
219 | </ProtoInstance> |
220 | </Transform> |
221 | <Transform DEF='LocationBuoy2-1'> |
222 |
<!-- ProtoInstance
DICASS-2-1 is a DEF node that has 1 USE node: USE_1 -->
<ProtoInstance name='DICASS' DEF='DICASS-2-1'> |
223 | <fieldValue name='ID' value='"DICASS 2.1"'/> |
224 | <fieldValue name='initialPositionXZ' value='2000 1000'/> |
225 | <fieldValue name='initialDepth' value='-100'/> |
226 | <fieldValue name='maxRange' value='1000'/> |
227 | </ProtoInstance> |
228 | </Transform> |
229 | <Transform DEF='LocationBuoy2-2'> |
230 |
<!-- ProtoInstance
DICASS-2-2 is a DEF node that has 1 USE node: USE_1 -->
<ProtoInstance name='DICASS' DEF='DICASS-2-2'> |
231 | <fieldValue name='ID' value='"DICASS 2.2"'/> |
232 | <fieldValue name='initialPositionXZ' value='2000 2000'/> |
233 | <fieldValue name='initialDepth' value='-100'/> |
234 | <fieldValue name='maxRange' value='1000'/> |
235 | </ProtoInstance> |
236 | </Transform> |
237 | <Transform DEF='LocationBuoy2-3'> |
238 |
<!-- ProtoInstance
DICASS-2-3 is a DEF node that has 1 USE node: USE_1 -->
<ProtoInstance name='DICASS' DEF='DICASS-2-3'> |
239 | <fieldValue name='ID' value='"DICASS 2.3"'/> |
240 | <fieldValue name='initialPositionXZ' value='2000 3000'/> |
241 | <fieldValue name='initialDepth' value='-100'/> |
242 | <fieldValue name='maxRange' value='1000'/> |
243 | </ProtoInstance> |
244 | </Transform> |
245 | <Transform DEF='LocationBuoy2-4'> |
246 |
<!-- ProtoInstance
DICASS-2-4 is a DEF node that has 1 USE node: USE_1 -->
<ProtoInstance name='DICASS' DEF='DICASS-2-4'> |
247 | <fieldValue name='ID' value='"DICASS 2.4"'/> |
248 | <fieldValue name='initialPositionXZ' value='2000 4000'/> |
249 | <fieldValue name='initialDepth' value='-100'/> |
250 | <fieldValue name='maxRange' value='1000'/> |
251 | </ProtoInstance> |
252 | </Transform> |
253 | <Transform DEF='LocationBuoy3-1'> |
254 |
<!-- ProtoInstance
DICASS-3-1 is a DEF node that has 1 USE node: USE_1 -->
<ProtoInstance name='DICASS' DEF='DICASS-3-1'> |
255 | <fieldValue name='ID' value='"DICASS 3.1"'/> |
256 | <fieldValue name='initialPositionXZ' value='3000 1000'/> |
257 | <fieldValue name='initialDepth' value='-100'/> |
258 | <fieldValue name='maxRange' value='1000'/> |
259 | </ProtoInstance> |
260 | </Transform> |
261 | <Transform DEF='LocationBuoy3-2'> |
262 |
<!-- ProtoInstance
DICASS-3-2 is a DEF node that has 1 USE node: USE_1 -->
<ProtoInstance name='DICASS' DEF='DICASS-3-2'> |
263 | <fieldValue name='ID' value='"DICASS 3.2"'/> |
264 | <fieldValue name='initialPositionXZ' value='3000 2000'/> |
265 | <fieldValue name='initialDepth' value='-100'/> |
266 | <fieldValue name='maxRange' value='1000'/> |
267 | </ProtoInstance> |
268 | </Transform> |
269 | <Transform DEF='LocationBuoy3-3'> |
270 |
<!-- ProtoInstance
DICASS-3-3 is a DEF node that has 1 USE node: USE_1 -->
<ProtoInstance name='DICASS' DEF='DICASS-3-3'> |
271 | <fieldValue name='ID' value='"DICASS 3.3"'/> |
272 | <fieldValue name='initialPositionXZ' value='3000 3000'/> |
273 | <fieldValue name='initialDepth' value='-100'/> |
274 | <fieldValue name='maxRange' value='1000'/> |
275 | </ProtoInstance> |
276 | </Transform> |
277 | <Transform DEF='LocationBuoy3-4'> |
278 |
<!-- ProtoInstance
DICASS-3-4 is a DEF node that has 1 USE node: USE_1 -->
<ProtoInstance name='DICASS' DEF='DICASS-3-4'> |
279 | <fieldValue name='ID' value='"DICASS 3.4"'/> |
280 | <fieldValue name='initialPositionXZ' value='3000 4000'/> |
281 | <fieldValue name='initialDepth' value='-100'/> |
282 | <fieldValue name='maxRange' value='1000'/> |
283 | </ProtoInstance> |
284 | </Transform> |
285 | <Transform DEF='LocationBuoy4-1'> |
286 |
<!-- ProtoInstance
DICASS-4-1 is a DEF node that has 1 USE node: USE_1 -->
<ProtoInstance name='DICASS' DEF='DICASS-4-1'> |
287 | <fieldValue name='ID' value='"DICASS 4.1"'/> |
288 | <fieldValue name='initialPositionXZ' value='4000 1000'/> |
289 | <fieldValue name='initialDepth' value='-100'/> |
290 | <fieldValue name='maxRange' value='1000'/> |
291 | </ProtoInstance> |
292 | </Transform> |
293 | <Transform DEF='LocationBuoy4-2'> |
294 |
<!-- ProtoInstance
DICASS-4-2 is a DEF node that has 1 USE node: USE_1 -->
<ProtoInstance name='DICASS' DEF='DICASS-4-2'> |
295 | <fieldValue name='ID' value='"DICASS 4.2"'/> |
296 | <fieldValue name='initialPositionXZ' value='4000 2000'/> |
297 | <fieldValue name='initialDepth' value='-100'/> |
298 | <fieldValue name='maxRange' value='1000'/> |
299 | </ProtoInstance> |
300 | </Transform> |
301 | <Transform DEF='LocationBuoy4-3'> |
302 |
<!-- ProtoInstance
DICASS-4-3 is a DEF node that has 1 USE node: USE_1 -->
<ProtoInstance name='DICASS' DEF='DICASS-4-3'> |
303 | <fieldValue name='ID' value='"DICASS 4.3"'/> |
304 | <fieldValue name='initialPositionXZ' value='4000 3000'/> |
305 | <fieldValue name='initialDepth' value='-100'/> |
306 | <fieldValue name='maxRange' value='1000'/> |
307 | </ProtoInstance> |
308 | </Transform> |
309 | <Transform DEF='LocationBuoy4-4'> |
310 |
<!-- ProtoInstance
DICASS-4-4 is a DEF node that has 1 USE node: USE_1 -->
<ProtoInstance name='DICASS' DEF='DICASS-4-4'> |
311 | <fieldValue name='ID' value='"DICASS 4.4"'/> |
312 | <fieldValue name='initialPositionXZ' value='4000 4000'/> |
313 | <fieldValue name='initialDepth' value='-100'/> |
314 | <fieldValue name='maxRange' value='1000'/> |
315 | </ProtoInstance> |
316 | </Transform> |
317 | </Group> |
318 | <Group DEF='SonobuoyCommunications'> |
319 | <!-- Script SonobuoyFieldScenarioScript controls animation of DICAS sonar pings and helo commands --> |
320 |
<!-- ROUTE information for SonobuoyFieldScenarioScript node:
[from PingBuoySequenceClock.cycleTime to timeNextBouyPing
]
[from beamRotation to RadioBeamOrientation.set_rotation
]
[from sendCommand to RadioCommandTimer.startTime
]
[from keyValueRadioCommandInterpolator to RadioBeamInterpolator.keyValue
]
-->
<Script DEF='SonobuoyFieldScenarioScript' directOutput='true' url=' "SonobuoyFieldScenarioScript.js" "https://www.web3d.org/x3d/content/examples/Savage/CommunicationsAndSensors/Sonobuoys/SonobuoyFieldScenarioScript.js" '> |
321 | <!-- local Script variables --> |
322 | <field name='HelicopterWaypointInterpolator' type='SFNode' accessType='initializeOnly'> |
323 | <ProtoInstance USE='HelicopterOrbitTrack'/> |
324 | </field> |
325 | <field name='BuoyArray' type='MFNode' accessType='initializeOnly'> |
326 | <ProtoInstance USE='DICASS-1-1'/> |
327 | <ProtoInstance USE='DICASS-1-2'/> |
328 | <ProtoInstance USE='DICASS-1-3'/> |
329 | <ProtoInstance USE='DICASS-1-4'/> |
330 | <ProtoInstance USE='DICASS-2-1'/> |
331 | <ProtoInstance USE='DICASS-2-2'/> |
332 | <ProtoInstance USE='DICASS-2-3'/> |
333 | <ProtoInstance USE='DICASS-2-4'/> |
334 | <ProtoInstance USE='DICASS-3-1'/> |
335 | <ProtoInstance USE='DICASS-3-2'/> |
336 | <ProtoInstance USE='DICASS-3-3'/> |
337 | <ProtoInstance USE='DICASS-3-4'/> |
338 | <ProtoInstance USE='DICASS-4-1'/> |
339 | <ProtoInstance USE='DICASS-4-2'/> |
340 | <ProtoInstance USE='DICASS-4-3'/> |
341 | <ProtoInstance USE='DICASS-4-4'/> |
342 | </field> |
343 | <field name='timeNextBouyPing' type='SFTime' accessType='inputOnly'/> |
344 | <field name='activeBuoyLocation' type='SFVec3f' accessType='outputOnly'/> |
345 | <field name='buoyRange' type='SFFloat' accessType='outputOnly'/> |
346 | <field name='keyValueRadioCommandInterpolator' type='MFFloat' accessType='outputOnly'/> |
347 | <field name='beamRotation' type='SFRotation' accessType='outputOnly'/> |
348 | <field name='sendCommand' type='SFTime' accessType='outputOnly'/> |
349 | <field name='currentBuoyNumber' type='SFInt32' value='-1' accessType='initializeOnly'/> |
350 | <field name='ID' type='MFString' accessType='initializeOnly'/> |
351 | <field name='TRACE' type='SFBool' value='true' accessType='initializeOnly'/> |
352 | </Script> |
353 |
<!-- ROUTE information for PingBuoySequenceClock node:
[from cycleTime to SonobuoyFieldScenarioScript.timeNextBouyPing
]
-->
<TimeSensor DEF='PingBuoySequenceClock' cycleInterval='5' loop='true'/> |
354 | < ROUTE fromNode='PingBuoySequenceClock' fromField='cycleTime' toNode='SonobuoyFieldScenarioScript' toField='timeNextBouyPing'/> |
355 |
<!-- ROUTE information for RadioBeamOrientation node:
[from HelicopterOrbitTrack.position_changed to set_translation
]
[from SonobuoyFieldScenarioScript.beamRotation to set_rotation
]
-->
<Transform DEF='RadioBeamOrientation'> |
356 | < ROUTE fromNode='HelicopterOrbitTrack' fromField='position_changed' toNode='RadioBeamOrientation' toField='set_translation'/> |
357 | < ROUTE fromNode='SonobuoyFieldScenarioScript' fromField='beamRotation' toNode='RadioBeamOrientation' toField='set_rotation'/> |
358 |
<!-- ROUTE information for HeloToSonobuoyCommunication node:
[from RadioBeamInterpolator.value_changed to range
]
[from RadioContactSequencer.value_changed to contact
]
-->
<ProtoInstance name='BeamCylinder' DEF='HeloToSonobuoyCommunication'> |
359 | <fieldValue name='name' value='HeloToBuoyComms'/> |
360 | <fieldValue name='defaultRange' value='0.001'/> |
361 | <fieldValue name='beamHeight' value='0.25'/> |
362 | <fieldValue name='beamWidth' value='0.25'/> |
363 | <fieldValue name='transparency' value='0.5'/> |
364 | <fieldValue name='wireframe' value='true'/> |
365 | <fieldValue name='solid' value='true'/> |
366 | <fieldValue name='contactColor' value='0.4 0.4 0'/> |
367 | <fieldValue name='noContactColor' value='1.0 0.6 0.1'/> |
368 | </ProtoInstance> |
369 | <!-- animate radio communication --> |
370 |
<!-- ROUTE information for RadioCommandTimer node:
[from SonobuoyFieldScenarioScript.sendCommand to startTime
]
[from fraction_changed to RadioBeamInterpolator.set_fraction
]
[from fraction_changed to RadioContactSequencer.set_fraction
]
-->
<TimeSensor DEF='RadioCommandTimer' cycleInterval='0.5'/> |
371 | < ROUTE fromNode='SonobuoyFieldScenarioScript' fromField='sendCommand' toNode='RadioCommandTimer' toField='startTime'/> |
372 | <!-- helo command to buoy (ramp and hold), blank during sonar operation --> |
373 |
<!-- ROUTE information for RadioBeamInterpolator node:
[from SonobuoyFieldScenarioScript.keyValueRadioCommandInterpolator to keyValue
]
[from RadioCommandTimer.fraction_changed to set_fraction
]
[from value_changed to HeloToSonobuoyCommunication.range
]
-->
<ScalarInterpolator DEF='RadioBeamInterpolator' key='0 0.5 0.75 0.75 1' keyValue='0 -1000 -1000 0 0'/> |
374 | < ROUTE fromNode='SonobuoyFieldScenarioScript' fromField='keyValueRadioCommandInterpolator' toNode='RadioBeamInterpolator' toField='keyValue'/> |
375 | < ROUTE fromNode='RadioCommandTimer' fromField='fraction_changed' toNode='RadioBeamInterpolator' toField='set_fraction'/> |
376 | < ROUTE fromNode='RadioBeamInterpolator' fromField='value_changed' toNode='HeloToSonobuoyCommunication' toField='range'/> |
377 | <!-- change color to indicate command/response sequence --> |
378 |
<!-- ROUTE information for RadioContactSequencer node:
[from RadioCommandTimer.fraction_changed to set_fraction
]
[from value_changed to HeloToSonobuoyCommunication.contact
]
-->
<BooleanSequencer DEF='RadioContactSequencer' key='0 0.5 1' keyValue='false true false'/> |
379 | < ROUTE fromNode='RadioCommandTimer' fromField='fraction_changed' toNode='RadioContactSequencer' toField='set_fraction'/> |
380 | < ROUTE fromNode='RadioContactSequencer' fromField='value_changed' toNode='HeloToSonobuoyCommunication' toField='contact'/> |
381 | </Transform> |
382 | </Group> |
383 | </Scene> |
384 | </X3D> |
Event Graph ROUTE Table entries with 13 ROUTE connections total, showing X3D event-model relationships for this scene.
Each row shows an event cascade that may occur during a single timestamp interval between frame renderings, as part of the X3D execution model.
line 128
ProtoInstance GridXZ |
No direct ROUTE connection found for events to/from this node. This ProtoInstance contains SFNode/MFNode fieldValue declarations with direct access to other nodes, and thus has potential to produce run-time animation. |
ConsoleOutputViewPositionOrientation
ProtoInstance ViewPositionOrientation |
No direct ROUTE connection found for events to/from this node. This ProtoInstance contains SFNode/MFNode fieldValue declarations with direct access to other nodes, and thus has potential to produce run-time animation. |
CrossHairInstance
ProtoInstance CrossHair |
No direct ROUTE connection found for events to/from this node. This ProtoInstance contains SFNode/MFNode fieldValue declarations with direct access to other nodes, and thus has potential to produce run-time animation. |
DICASS-1-1
ProtoInstance DICASS |
No direct ROUTE connection found for events to/from this node. This ProtoInstance contains SFNode/MFNode fieldValue declarations with direct access to other nodes, and thus has potential to produce run-time animation. |
DICASS-1-2
ProtoInstance DICASS |
No direct ROUTE connection found for events to/from this node. This ProtoInstance contains SFNode/MFNode fieldValue declarations with direct access to other nodes, and thus has potential to produce run-time animation. |
DICASS-1-3
ProtoInstance DICASS |
No direct ROUTE connection found for events to/from this node. This ProtoInstance contains SFNode/MFNode fieldValue declarations with direct access to other nodes, and thus has potential to produce run-time animation. |
DICASS-1-4
ProtoInstance DICASS |
No direct ROUTE connection found for events to/from this node. This ProtoInstance contains SFNode/MFNode fieldValue declarations with direct access to other nodes, and thus has potential to produce run-time animation. |
DICASS-2-1
ProtoInstance DICASS |
No direct ROUTE connection found for events to/from this node. This ProtoInstance contains SFNode/MFNode fieldValue declarations with direct access to other nodes, and thus has potential to produce run-time animation. |
DICASS-2-2
ProtoInstance DICASS |
No direct ROUTE connection found for events to/from this node. This ProtoInstance contains SFNode/MFNode fieldValue declarations with direct access to other nodes, and thus has potential to produce run-time animation. |
DICASS-2-3
ProtoInstance DICASS |
No direct ROUTE connection found for events to/from this node. This ProtoInstance contains SFNode/MFNode fieldValue declarations with direct access to other nodes, and thus has potential to produce run-time animation. |
DICASS-2-4
ProtoInstance DICASS |
No direct ROUTE connection found for events to/from this node. This ProtoInstance contains SFNode/MFNode fieldValue declarations with direct access to other nodes, and thus has potential to produce run-time animation. |
DICASS-3-1
ProtoInstance DICASS |
No direct ROUTE connection found for events to/from this node. This ProtoInstance contains SFNode/MFNode fieldValue declarations with direct access to other nodes, and thus has potential to produce run-time animation. |
DICASS-3-2
ProtoInstance DICASS |
No direct ROUTE connection found for events to/from this node. This ProtoInstance contains SFNode/MFNode fieldValue declarations with direct access to other nodes, and thus has potential to produce run-time animation. |
DICASS-3-3
ProtoInstance DICASS |
No direct ROUTE connection found for events to/from this node. This ProtoInstance contains SFNode/MFNode fieldValue declarations with direct access to other nodes, and thus has potential to produce run-time animation. |
DICASS-3-4
ProtoInstance DICASS |
No direct ROUTE connection found for events to/from this node. This ProtoInstance contains SFNode/MFNode fieldValue declarations with direct access to other nodes, and thus has potential to produce run-time animation. |
DICASS-4-1
ProtoInstance DICASS |
No direct ROUTE connection found for events to/from this node. This ProtoInstance contains SFNode/MFNode fieldValue declarations with direct access to other nodes, and thus has potential to produce run-time animation. |
DICASS-4-2
ProtoInstance DICASS |
No direct ROUTE connection found for events to/from this node. This ProtoInstance contains SFNode/MFNode fieldValue declarations with direct access to other nodes, and thus has potential to produce run-time animation. |
DICASS-4-3
ProtoInstance DICASS |
No direct ROUTE connection found for events to/from this node. This ProtoInstance contains SFNode/MFNode fieldValue declarations with direct access to other nodes, and thus has potential to produce run-time animation. |
DICASS-4-4
ProtoInstance DICASS |
No direct ROUTE connection found for events to/from this node. This ProtoInstance contains SFNode/MFNode fieldValue declarations with direct access to other nodes, and thus has potential to produce run-time animation. |
HeloToSonobuoyCommunication
ProtoInstance BeamCylinder |
No direct ROUTE connection found for events to/from this node. This ProtoInstance contains SFNode/MFNode fieldValue declarations with direct access to other nodes, and thus has potential to produce run-time animation. |
<!--
Color-coding 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.
-->