| 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.
-->