X3D Model Documentation: AriesPrototype.x3d

  1  <?xml version="1.0" encoding="UTF-8"?>
  2 
<!DOCTYPE X3D PUBLIC "ISO//Web3D//DTD X3D 3.0//EN" "https://www.web3d.org/specifications/x3d-3.0.dtd">
  3  <X3D profile='Immersive' version='3.0 xmlns:xsd='http://www.w3.org/2001/XMLSchema-instance' xsd:noNamespaceSchemaLocation='https://www.web3d.org/specifications/x3d-3.0.xsd'>
  4       <head>
  5            <meta name='titlecontent=' AriesPrototype.x3d '/>
  6            <meta name='descriptioncontent='Model of the Acoustic Radio Interactive Exploratory Server (ARIES), an operational NPS-designed Unmanned Underwater Vehicle (AUV). Expose position, rotation, sonars, thrusters, fins, etc. as a reusable prototype.'/>
  7            <meta name='creatorcontent='Don Brutzman NPS, aboard RV Gyre in Gulf of Mexico off Gulfport MS 1999; Jane Wu Rolands and Associates 2001, Duane Davis NPS 2003'/>
  8            <meta name='createdcontent='30 July 2000'/>
  9            <meta name='modifiedcontent='20 October 2019'/>
 10            <meta name='photocontent='AriesHoistCloseup.jpg'/>
 11            <meta name='referencecontent=' AriesFlyerMarch2001.pdf '/>
 12            <meta name='referencecontent=' organic_mcmONR2002.pdf '/>
 13            <meta name='referencecontent='AriesSchematic.png'/>
 14            <meta name='referencecontent=' AriesSchematic.ppt '/>
 15            <meta name='identifiercontent=' https://www.web3d.org/x3d/content/examples/Savage/Robots/UnmannedUnderwaterVehicles/AriesPrototype.x3d '/>
 16            <meta name='generatorcontent='X3D-Edit 3.2, https://www.web3d.org/x3d/tools/X3D-Edit'/>
 17            <meta name='licensecontent='../../license.html'/>
 18       </head>
<!--

<!--
Event Graph ROUTE Table shows event connections.
-->
<!-- to top DEF nodes index: AFTER_LATERAL_BEAMCONE, AFTER_LATERAL_THRUSTER, AFTER_PLANES, AFTER_RUDDERS, AFTER_VERTICAL_BEAMCONE, AFTER_VERTICAL_THRUSTER, AfterLateralBeamCone, AfterVerticalBeamCone, AriesTransform, BLADE_COORDINATES, FORWARD_LATERAL_BEAMCONE, FORWARD_LATERAL_THRUSTER, FORWARD_PLANES, FORWARD_RUDDERS, FORWARD_VERTICAL_BEAMCONE, FORWARD_VERTICAL_THRUSTER, ForwardLateralBeamCone, ForwardVerticalBeamCone, HULL, HULL_APPEARANCE, HullMaterial, HULLNAME_VIEWPOINT, LATERAL_THRUSTER_SHAPE, PLANE_SHAPE, PLANE_SURFACES, PlaneMaterial, PORT_BLADE, PORT_SCREW, PORT_SCREW_BEAMCONE, PORT_SCREW_BEAMCONE_AND_SHAFT, PORT_THRUSTER_BODY, PORT_THRUSTER_BRACKET, PortScrewBeamCone, PRIMARY_AUV_GEOMETRY, SCREW_APPEARANCE, SCREW_SHAFT, SHAFT, SHAFT_END_CAP, SONAR_STEERING_AND_DETECTS, ST1000, ST1000BeamCone, ST725, ST725BeamCone, STARBOARD_BLADE, STARBOARD_SCREW, STARBOARD_SCREW_BEAMCONE, STARBOARD_THRUSTER_BRACKET, StarboardScrewBeamCone, STARTBOARD_SCREW_BEAMCONE_AND_SHAFT, STARTBOARD_THRUSTER_BODY, THRUSTER_APPEARANCE, THRUSTER_BODY_APPEARANCE, THRUSTER_CONES, THRUSTER_INNERBODY_APPEARANCE, VERTICAL_THRUSTER_SHAPE

Index for Viewpoint nodes: Viewpoint_1, Viewpoint_2, Viewpoint_3, Viewpoint_4, Viewpoint_5, Viewpoint_6, Viewpoint_7, Viewpoint_8, Viewpoint_9, HULLNAME_VIEWPOINT

Index for ExternProtoDeclare definition: BeamCone

Index for ProtoDeclare definition: Aries
-->
 19       <Scene>
 20            <!-- Produce wireframe or transparent beam cones. -->
 21            <WorldInfo title='AriesPrototype.x3d'/>
 22            <ExternProtoDeclare name='BeamConeappinfo='Produce wireframe or transparent beam cones. 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/BeamConePrototype.x3d#BeamCone" "https://www.web3d.org/x3d/content/examples/Savage/CommunicationsAndSensors/Beam/BeamConePrototype.x3d#BeamCone" "../../CommunicationsAndSensors/Beam/BeamConePrototype.wrl#BeamCone" "https://www.web3d.org/x3d/content/examples/Savage/CommunicationsAndSensors/Beam/BeamConePrototype.wrl#BeamCone" '>
 23                 <field name='nametype='SFStringaccessType='initializeOnly'
                appinfo='BeamCone name aids tracing'/>
 24                 <field name='contacttype='SFBoolaccessType='inputOnly'
                appinfo='(communications) is transmitted signal in contact with receiver or (sensor) is a target return detected?'/>
 25                 <field name='rangetype='SFFloataccessType='inputOnly'
                appinfo='distance in meters along x axis'/>
 26                 <field name='defaultRangetype='SFFloataccessType='initializeOnly'
                appinfo='distance in meters used until eventIn range sent'/>
 27                 <field name='wireframetype='SFBoolaccessType='initializeOnly'
                appinfo='whether wireframe beam is drawn'/>
 28                 <field name='solidtype='SFBoolaccessType='initializeOnly'
                appinfo='whether solid beam is drawn'/>
 29                 <field name='beamHeightDegreestype='SFFloataccessType='initializeOnly'
                appinfo='degrees across vertical y axis'/>
 30                 <field name='beamWidthDegreestype='SFFloataccessType='initializeOnly'
                appinfo='degrees across horizontal z axis'/>
 31                 <field name='contactColortype='SFColoraccessType='initializeOnly'
                appinfo='rendering color when contact=true'/>
 32                 <field name='noContactColortype='SFColoraccessType='initializeOnly'
                appinfo='rendering color when contact=false'/>
 33                 <field name='transparencytype='SFFloataccessType='inputOutput'
                appinfo='1 = fully transparent wireframe only'/>
 34                 <field name='traceEnabledtype='SFBoolaccessType='initializeOnly'
                appinfo='flag to turn on Script tracing'/>
 35            </ExternProtoDeclare>
 36            <ProtoDeclare name='Ariesappinfo='Acoustic Radio Interactive Exploratory Server (ARIES) is an operational NPS-designed Unmanned Underwater Vehicle (AUV)'>
 37                 <ProtoInterface>
 38                      <field name='hullNametype='SFStringvalue='AriesaccessType='inputOutput'
                     appinfo='can be overridden at instantiation time only'/>
 39                      <field name='hullColortype='SFColorvalue='.9 .9 .9accessType='inputOutput'
                     appinfo='hull color for this UUV instance'/>
 40                      <field name='planeColortype='SFColorvalue='.1 .1 .8accessType='inputOutput'
                     appinfo='plane color for this UUV instance'/>
 41                      <field name='translationtype='SFVec3fvalue='0 0 0accessType='inputOutput'/>
 42                      <field name='rotationtype='SFRotationvalue='0 0 1 0accessType='inputOutput'/>
 43                      <field name='set_portRpmtype='SFFloataccessType='inputOnly'/>
 44                      <field name='set_stbdRpmtype='SFFloataccessType='inputOnly'/>
 45                      <field name='set_forwardRudderstype='SFFloataccessType='inputOnly'/>
 46                      <field name='set_afterRudderstype='SFFloataccessType='inputOnly'/>
 47                      <field name='set_forwardPlanestype='SFFloataccessType='inputOnly'/>
 48                      <field name='set_afterPlanestype='SFFloataccessType='inputOnly'/>
 49                      <field name='set_forwardVerticalThrustertype='SFFloataccessType='inputOnly'/>
 50                      <field name='set_afterVerticalThrustertype='SFFloataccessType='inputOnly'/>
 51                      <field name='set_forwardLateralThrustertype='SFFloataccessType='inputOnly'/>
 52                      <field name='set_afterLateralThrustertype='SFFloataccessType='inputOnly'/>
 53                      <field name='set_ST725Rangetype='SFFloataccessType='inputOnly'
                     appinfo='meters along sonar axis'/>
 54                      <field name='set_ST725Bearingtype='SFFloataccessType='inputOnly'
                     appinfo='degrees about vertical axis'/>
 55                      <field name='set_ST725Intensitytype='SFFloataccessType='inputOnly'
                     appinfo='signal-to-noise ratio decibels'/>
 56                      <field name='set_ST1000Rangetype='SFFloataccessType='inputOnly'
                     appinfo='meters along sonar axis'/>
 57                      <field name='set_ST1000Bearingtype='SFFloataccessType='inputOnly'
                     appinfo='degrees about vertical axis'/>
 58                      <field name='set_ST1000Intensitytype='SFFloataccessType='inputOnly'
                     appinfo='signal-to-noise ratio decibels'/>
 59                 </ProtoInterface>
 60                 <ProtoBody>
 61                      <Transform DEF='AriesTransform'>
 62                           <IS>
 63                                <connect nodeField='translationprotoField='translation'/>
 64                                <connect nodeField='rotationprotoField='rotation'/>
 65                           </IS>
 66 
                         <!-- ROUTE information for ST725 node:  [from SONAR_STEERING_AND_DETECTS.ST725Rotation to rotation ] -->
                         <Transform DEF='ST725translation='.9 -0.12 -0.03'>
 67 
                              <!-- ROUTE information for ST725BeamCone node:  [from SONAR_STEERING_AND_DETECTS.ST725Contact to contact ] [from SONAR_STEERING_AND_DETECTS.ST725Range_changed to range ] [from SONAR_STEERING_AND_DETECTS.ST725Intensity to transparency ] -->
                              <ProtoInstance name='BeamConeDEF='ST725BeamCone'>
 68                                     <fieldValue name='namevalue='ST725BeamCone'/>
 69                                     <fieldValue name='defaultRangevalue='1'/>
 70                                     <fieldValue name='beamHeightDegreesvalue='24'/>
 71                                     <fieldValue name='beamWidthDegreesvalue='1'/>
 72                                     <fieldValue name='solidvalue='true'/>
 73                                     <fieldValue name='wireframevalue='false'/>
 74                                     <fieldValue name='contactColorvalue='1 0 0'/>
 75                                     <fieldValue name='noContactColorvalue='.3 .05 .05'/>
 76                                     <fieldValue name='transparencyvalue='.2'/>
 77                                     <fieldValue name='traceEnabledvalue='false'/>
 78                                </ProtoInstance>
 79                           </Transform>
 80 
                         <!-- ROUTE information for ST1000 node:  [from SONAR_STEERING_AND_DETECTS.ST1000Rotation to rotation ] -->
                         <Transform DEF='ST1000translation='.7 .12 .05'>
 81 
                              <!-- ROUTE information for ST1000BeamCone node:  [from SONAR_STEERING_AND_DETECTS.ST1000Contact to contact ] [from SONAR_STEERING_AND_DETECTS.ST1000Range_changed to range ] [from SONAR_STEERING_AND_DETECTS.ST1000Intensity to transparency ] -->
                              <ProtoInstance name='BeamConeDEF='ST1000BeamCone'>
 82                                     <fieldValue name='namevalue='ST1000BeamCone'/>
 83                                     <fieldValue name='defaultRangevalue='1'/>
 84                                     <fieldValue name='beamHeightDegreesvalue='1'/>
 85                                     <fieldValue name='beamWidthDegreesvalue='1'/>
 86                                     <fieldValue name='solidvalue='true'/>
 87                                     <fieldValue name='wireframevalue='false'/>
 88                                     <fieldValue name='contactColorvalue='1 .8 0'/>
 89                                     <fieldValue name='noContactColorvalue='.4 .3 .05'/>
 90                                     <fieldValue name='transparencyvalue='.2'/>
 91                                     <fieldValue name='traceEnabledvalue='false'/>
 92                                </ProtoInstance>
 93                           </Transform>
 94 
 95                                <field name='set_ST725Rangetype='SFFloataccessType='inputOnly'/>
 96                                <field name='set_ST725Bearingtype='SFFloataccessType='inputOnly'/>
 97                                <field name='set_ST725Intensitytype='SFFloataccessType='inputOnly'/>
 98                                <field name='set_ST1000Rangetype='SFFloataccessType='inputOnly'/>
 99                                <field name='set_ST1000Bearingtype='SFFloataccessType='inputOnly'/>
100                                <field name='set_ST1000Intensitytype='SFFloataccessType='inputOnly'/>
101                                <field name='ST725Rotationtype='SFRotationaccessType='outputOnly'/>
102                                <field name='ST1000Rotationtype='SFRotationaccessType='outputOnly'/>
103                                <field name='ST725Contacttype='SFBoolaccessType='outputOnly'/>
104                                <field name='ST1000Contacttype='SFBoolaccessType='outputOnly'/>
105                                <field name='ST725Range_changedtype='SFFloataccessType='outputOnly'/>
106                                <field name='ST1000Range_changedtype='SFFloataccessType='outputOnly'/>
107                                <field name='ST725Intensitytype='SFFloataccessType='outputOnly'/>
108                                <field name='ST1000Intensitytype='SFFloataccessType='outputOnly'/>
109                                <IS>
110                                     <connect nodeField='set_ST725RangeprotoField='set_ST725Range'/>
111                                     <connect nodeField='set_ST725BearingprotoField='set_ST725Bearing'/>
112                                     <connect nodeField='set_ST725IntensityprotoField='set_ST725Intensity'/>
113                                     <connect nodeField='set_ST1000RangeprotoField='set_ST1000Range'/>
114                                     <connect nodeField='set_ST1000BearingprotoField='set_ST1000Bearing'/>
115                                     <connect nodeField='set_ST1000IntensityprotoField='set_ST1000Intensity'/>
116                                </IS>
  <![CDATA[
            
ecmascript:

function degreeToRadian( value )
{
   return value * Math.PI / 180;
}

function set_ST725Range (value, timeStamp)
{
   if ((value > 0) && (value < 30.0))
   {
      ST725Contact = true;
      ST725Range_changed = value;
   }
   else
   {
      ST725Contact = false;
      if ( value < 0 )
         ST725Range_changed = 0.0;
      else
         ST725Range_changed = 30.0;
   }
}
function set_ST725Bearing (value, timeStamp)
{
   ST725Rotation = new SFRotation(0, 1, 0, degreeToRadian(value));
}
function set_ST725Intensity (value, timeStamp)
{
   ST725Intensity = new SFFloat(value);
}

function set_ST1000Range (value, timeStamp)
{
   if ((value > 0) && (value < 30.0))
   {
      ST1000Contact = true;
      ST1000Range_changed = value;
   }
   else
   {
      ST1000Contact = false;
      if ( value < 0 )
         ST1000Range_changed = 0.0;
      else
         ST1000Range_changed = 30.0;
   }
}
function set_ST1000Bearing (value, timeStamp)
{
   ST1000Rotation = new SFRotation(0, 1, 0, degreeToRadian(value));
}
function set_ST1000Intensity (value, timeStamp)
{
   ST1000Intensity = new SFFloat(value);
}

          
]]>
118                           </Script>
119                           <Group>
120                                < ROUTE  fromNode='SONAR_STEERING_AND_DETECTS' fromField='ST725Rotation' toNode='ST725' toField='rotation'/>
121                                < ROUTE  fromNode='SONAR_STEERING_AND_DETECTS' fromField='ST1000Rotation' toNode='ST1000' toField='rotation'/>
122                                < ROUTE  fromNode='SONAR_STEERING_AND_DETECTS' fromField='ST725Contact' toNode='ST725BeamCone' toField='contact'/>
123                                < ROUTE  fromNode='SONAR_STEERING_AND_DETECTS' fromField='ST1000Contact' toNode='ST1000BeamCone' toField='contact'/>
124                                < ROUTE  fromNode='SONAR_STEERING_AND_DETECTS' fromField='ST725Range_changed' toNode='ST725BeamCone' toField='range'/>
125                                < ROUTE  fromNode='SONAR_STEERING_AND_DETECTS' fromField='ST1000Range_changed' toNode='ST1000BeamCone' toField='range'/>
126                                < ROUTE  fromNode='SONAR_STEERING_AND_DETECTS' fromField='ST725Intensity' toNode='ST725BeamCone' toField='transparency'/>
127                                < ROUTE  fromNode='SONAR_STEERING_AND_DETECTS' fromField='ST1000Intensity' toNode='ST1000BeamCone' toField='transparency'/>
128                           </Group>
129                           <LOD range='400'>
130                                <!-- ### hack job! need to update actual numbers instead of scaling -->
131                                <Transform DEF='PRIMARY_AUV_GEOMETRYscale='1 1.3 1'>
132                                     <!-- positive rotation about y-axis rotates rudders to port -->
133 
                                   <!-- ROUTE information for FORWARD_RUDDERS node:  [from PLANE_SURFACES.forwardRuddersRotation to rotation ] -->
                                   <Transform DEF='FORWARD_RUDDERStranslation='.6223 0 0'>
134                                          <Transform translation='0 .13335 0'>
135 
                                             <!-- Shape PLANE_SHAPE is a DEF node that has 7 USE nodes: USE_1, USE_2, USE_3, USE_4, USE_5, USE_6, USE_7 -->
                                             <Shape DEF='PLANE_SHAPE'>
136                                                    <Appearance>
137                                                         <Material DEF='PlaneMaterial'>
138                                                              <IS>
139                                                                   <connect nodeField='diffuseColorprotoField='planeColor'/>
140                                                              </IS>
141                                                         </Material>
142                                                    </Appearance>
143                                                    <!-- creaseAngle for sharp edges -->
144                                                    <IndexedFaceSet creaseAngle='3.14159coordIndex='0 3 2 1 -1 4 5 6 7 -1 0 1 5 4 -1 1 2 6 5 -1 2 3 7 6 -1 0 3 7 4 -1'>
145                                                         <!-- indices for point values range [0..7] -->
146                                                         <Coordinate point='.0635 0 -0.0127 .0381 .1778 -0.0127 -0.0381 .1778 -0.0127 -0.0889 0 -0.0127 .0635 0 .0127 .0381 .1778 .0127 -0.0381 .1778 .0127 -0.0889 0 .0127'/>
147                                                    </IndexedFaceSet>
148                                               </Shape>
149                                          </Transform>
150                                          <Transform rotation='1 0 0 3.14159267translation='0 -0.13335 0'>
151                                               <Shape USE='PLANE_SHAPE'/>
152                                          </Transform>
153                                     </Transform>
154                                     <!-- positive rotation about y-axis rotates rudder to port -->
155 
                                   <!-- ROUTE information for AFTER_RUDDERS node:  [from PLANE_SURFACES.afterRuddersRotation to rotation ] -->
                                   <Transform DEF='AFTER_RUDDERStranslation='-0.7747 0 0'>
156                                          <Transform translation='0 .13335 0'>
157                                               <Shape USE='PLANE_SHAPE'/>
158                                          </Transform>
159                                          <Transform rotation='1 0 0 3.14159267translation='0 -0.13335 0'>
160                                               <Shape USE='PLANE_SHAPE'/>
161                                          </Transform>
162                                     </Transform>
163 
                                   <!-- ROUTE information for FORWARD_PLANES node:  [from PLANE_SURFACES.forwardPlanesRotation to rotation ] -->
                                   <Transform DEF='FORWARD_PLANEStranslation='.6223 0 0'>
164                                          <Transform rotation='1 0 0 1.57079translation='0 0 .20955'>
165                                               <Shape USE='PLANE_SHAPE'/>
166                                          </Transform>
167                                          <Transform rotation='1 0 0 -1.57079translation='0 0 -0.20955'>
168                                               <Shape USE='PLANE_SHAPE'/>
169                                          </Transform>
170                                     </Transform>
171 
                                   <!-- ROUTE information for AFTER_PLANES node:  [from PLANE_SURFACES.afterPlanesRotation to rotation ] -->
                                   <Transform DEF='AFTER_PLANEStranslation='-0.7747 0 0'>
172                                          <Transform rotation='1 0 0 1.57079translation='0 0 .20955'>
173                                               <Shape USE='PLANE_SHAPE'/>
174                                          </Transform>
175                                          <Transform rotation='1 0 0 -1.57079translation='0 0 -0.20955'>
176                                               <Shape USE='PLANE_SHAPE'/>
177                                          </Transform>
178                                     </Transform>
179 
                                   <!-- ROUTE information for PLANE_SURFACES node:  [from forwardRuddersRotation to FORWARD_RUDDERS.rotation ] [from afterRuddersRotation to AFTER_RUDDERS.rotation ] [from forwardPlanesRotation to FORWARD_PLANES.rotation ] [from afterPlanesRotation to AFTER_PLANES.rotation ] -->
                                   <Script DEF='PLANE_SURFACES'>
180                                          <field name='set_forwardRudderstype='SFFloataccessType='inputOnly'/>
181                                          <field name='set_afterRudderstype='SFFloataccessType='inputOnly'/>
182                                          <field name='set_forwardPlanestype='SFFloataccessType='inputOnly'/>
183                                          <field name='set_afterPlanestype='SFFloataccessType='inputOnly'/>
184                                          <field name='forwardRuddersRotationtype='SFRotationaccessType='outputOnly'/>
185                                          <field name='afterRuddersRotationtype='SFRotationaccessType='outputOnly'/>
186                                          <field name='forwardPlanesRotationtype='SFRotationaccessType='outputOnly'/>
187                                          <field name='afterPlanesRotationtype='SFRotationaccessType='outputOnly'/>
188                                          <IS>
189                                               <connect nodeField='set_forwardRuddersprotoField='set_forwardRudders'/>
190                                               <connect nodeField='set_afterRuddersprotoField='set_afterRudders'/>
191                                               <connect nodeField='set_forwardPlanesprotoField='set_forwardPlanes'/>
192                                               <connect nodeField='set_afterPlanesprotoField='set_afterPlanes'/>
193                                          </IS>
  <![CDATA[
                
ecmascript:

function set_forwardRudders (value, timeStamp) {
   forwardRuddersRotation = new SFRotation(0, 1, 0, value);
}

function set_afterRudders (value, timeStamp) {
   afterRuddersRotation = new SFRotation(0, 1, 0, value);
}

function set_forwardPlanes (value, timeStamp) {
   forwardPlanesRotation = new SFRotation(0, 0, 1, value);
}

function set_afterPlanes (value, timeStamp) {
   afterPlanesRotation = new SFRotation(0, 0, 1, value);
}

              
]]>
195                                     </Script>
196                                     <Group>
197                                          < ROUTE  fromNode='PLANE_SURFACES' fromField='forwardRuddersRotation' toNode='FORWARD_RUDDERS' toField='rotation'/>
198                                          < ROUTE  fromNode='PLANE_SURFACES' fromField='afterRuddersRotation' toNode='AFTER_RUDDERS' toField='rotation'/>
199                                          < ROUTE  fromNode='PLANE_SURFACES' fromField='forwardPlanesRotation' toNode='FORWARD_PLANES' toField='rotation'/>
200                                          < ROUTE  fromNode='PLANE_SURFACES' fromField='afterPlanesRotation' toNode='AFTER_PLANES' toField='rotation'/>
201                                     </Group>
202                                     <Transform DEF='FORWARD_VERTICAL_THRUSTERtranslation='.3302 0 0'>
203 
                                        <!-- Shape VERTICAL_THRUSTER_SHAPE is a DEF node that has 1 USE node: USE_1 -->
                                        <Shape DEF='VERTICAL_THRUSTER_SHAPE'>
204 
                                             <!-- Appearance THRUSTER_APPEARANCE is a DEF node that has 1 USE node: USE_1 -->
                                             <Appearance DEF='THRUSTER_APPEARANCE'>
205                                                    <Material diffuseColor='.2 .2 .2'/>
206                                               </Appearance>
207                                               <Cylinder height='.29radius='.0635side='false'/>
208                                          </Shape>
209 
                                        <!-- ROUTE information for FORWARD_VERTICAL_BEAMCONE node:  [from THRUSTER_CONES.forwardVerticalThrusterBeamTranslation to translation ] -->
                                        <Transform DEF='FORWARD_VERTICAL_BEAMCONErotation='0 0 1 1.57079translation='0 .145 0'>
210 
                                             <!-- ROUTE information for ForwardVerticalBeamCone node:  [from THRUSTER_CONES.forwardVerticalThrusterBeamRange to range ] -->
                                             <ProtoInstance name='BeamConeDEF='ForwardVerticalBeamCone'>
211                                                    <fieldValue name='namevalue='ForwardVerticalBeamCone'/>
212                                                    <!-- range -1.0..0..1.0m <==> -24V..0..24V -->
213                                                    <fieldValue name='defaultRangevalue='1'/>
214                                                    <fieldValue name='beamHeightDegreesvalue='8'/>
215                                                    <fieldValue name='beamWidthDegreesvalue='8'/>
216                                                    <fieldValue name='solidvalue='false'/>
217                                                    <fieldValue name='wireframevalue='true'/>
218                                                    <fieldValue name='noContactColorvalue='0 .8 .4'/>
219                                                    <fieldValue name='transparencyvalue='0'/>
220                                                    <fieldValue name='traceEnabledvalue='false'/>
221                                               </ProtoInstance>
222                                          </Transform>
223                                     </Transform>
224                                     <Transform DEF='AFTER_VERTICAL_THRUSTERtranslation='-0.4953 0 0'>
225                                          <Shape USE='VERTICAL_THRUSTER_SHAPE'/>
226 
                                        <!-- ROUTE information for AFTER_VERTICAL_BEAMCONE node:  [from THRUSTER_CONES.afterVerticalThrusterBeamTranslation to translation ] -->
                                        <Transform DEF='AFTER_VERTICAL_BEAMCONErotation='0 0 1 1.57079translation='0 .145 0'>
227 
                                             <!-- ROUTE information for AfterVerticalBeamCone node:  [from THRUSTER_CONES.afterVerticalThrusterBeamRange to range ] -->
                                             <ProtoInstance name='BeamConeDEF='AfterVerticalBeamCone'>
228                                                    <fieldValue name='namevalue='AfterVerticalBeamCone'/>
229                                                    <!-- range -1.0..0..1.0m <==> -24V..0..24V -->
230                                                    <fieldValue name='defaultRangevalue='1'/>
231                                                    <fieldValue name='beamHeightDegreesvalue='8'/>
232                                                    <fieldValue name='beamWidthDegreesvalue='8'/>
233                                                    <fieldValue name='solidvalue='false'/>
234                                                    <fieldValue name='wireframevalue='true'/>
235                                                    <fieldValue name='noContactColorvalue='0 .8 .4'/>
236                                                    <fieldValue name='transparencyvalue='0'/>
237                                                    <fieldValue name='traceEnabledvalue='false'/>
238                                               </ProtoInstance>
239                                          </Transform>
240                                     </Transform>
241                                     <Transform DEF='FORWARD_LATERAL_THRUSTERrotation='1 0 0 1.57079translation='.4699 0 0'>
242 
                                        <!-- Shape LATERAL_THRUSTER_SHAPE is a DEF node that has 1 USE node: USE_1 -->
                                        <Shape DEF='LATERAL_THRUSTER_SHAPE'>
243                                               <Appearance USE='THRUSTER_APPEARANCE'/>
244                                               <Cylinder height='.44radius='.0635side='false'/>
245                                          </Shape>
246 
                                        <!-- ROUTE information for FORWARD_LATERAL_BEAMCONE node:  [from THRUSTER_CONES.forwardLateralThrusterBeamTranslation to translation ] -->
                                        <Transform DEF='FORWARD_LATERAL_BEAMCONErotation='0 0 1 1.57079translation='0 .145 0'>
247 
                                             <!-- ROUTE information for ForwardLateralBeamCone node:  [from THRUSTER_CONES.forwardLateralThrusterBeamRange to range ] -->
                                             <ProtoInstance name='BeamConeDEF='ForwardLateralBeamCone'>
248                                                    <fieldValue name='namevalue='ForwardLateralBeamCone'/>
249                                                    <!-- range -1.0..0..1.0m <==> -24V..0..24V -->
250                                                    <fieldValue name='defaultRangevalue='1'/>
251                                                    <fieldValue name='beamHeightDegreesvalue='8'/>
252                                                    <fieldValue name='beamWidthDegreesvalue='8'/>
253                                                    <fieldValue name='solidvalue='false'/>
254                                                    <fieldValue name='wireframevalue='true'/>
255                                                    <fieldValue name='noContactColorvalue='0 .8 .4'/>
256                                                    <fieldValue name='transparencyvalue='0'/>
257                                                    <fieldValue name='traceEnabledvalue='false'/>
258                                               </ProtoInstance>
259                                          </Transform>
260                                     </Transform>
261                                     <Transform DEF='AFTER_LATERAL_THRUSTERrotation='1 0 0 1.57079translation='-0.6223 0 0'>
262                                          <Shape USE='LATERAL_THRUSTER_SHAPE'/>
263 
                                        <!-- ROUTE information for AFTER_LATERAL_BEAMCONE node:  [from THRUSTER_CONES.afterLateralThrusterBeamTranslation to translation ] -->
                                        <Transform DEF='AFTER_LATERAL_BEAMCONErotation='0 0 1 1.57079translation='0 .145 0'>
264 
                                             <!-- ROUTE information for AfterLateralBeamCone node:  [from THRUSTER_CONES.afterLateralThrusterBeamRange to range ] -->
                                             <ProtoInstance name='BeamConeDEF='AfterLateralBeamCone'>
265                                                    <fieldValue name='namevalue='AfterLateralBeamCone'/>
266                                                    <!-- range -1.0..0..1.0m <==> -24V..0..24V -->
267                                                    <fieldValue name='defaultRangevalue='1'/>
268                                                    <fieldValue name='beamHeightDegreesvalue='8'/>
269                                                    <fieldValue name='beamWidthDegreesvalue='8'/>
270                                                    <fieldValue name='solidvalue='false'/>
271                                                    <fieldValue name='wireframevalue='true'/>
272                                                    <fieldValue name='noContactColorvalue='0 .8 .4'/>
273                                                    <fieldValue name='transparencyvalue='0'/>
274                                                    <fieldValue name='traceEnabledvalue='false'/>
275                                               </ProtoInstance>
276                                          </Transform>
277                                     </Transform>
278 
279                                          <field name='set_forwardVerticalThrustertype='SFFloataccessType='inputOnly'/>
280                                          <field name='set_afterVerticalThrustertype='SFFloataccessType='inputOnly'/>
281                                          <field name='set_forwardLateralThrustertype='SFFloataccessType='inputOnly'/>
282                                          <field name='set_afterLateralThrustertype='SFFloataccessType='inputOnly'/>
283                                          <field name='forwardVerticalThrusterBeamTranslationtype='SFVec3faccessType='outputOnly'/>
284                                          <field name='forwardVerticalThrusterBeamRangetype='SFFloataccessType='outputOnly'/>
285                                          <field name='afterVerticalThrusterBeamTranslationtype='SFVec3faccessType='outputOnly'/>
286                                          <field name='afterVerticalThrusterBeamRangetype='SFFloataccessType='outputOnly'/>
287                                          <field name='forwardLateralThrusterBeamTranslationtype='SFVec3faccessType='outputOnly'/>
288                                          <field name='forwardLateralThrusterBeamRangetype='SFFloataccessType='outputOnly'/>
289                                          <field name='afterLateralThrusterBeamTranslationtype='SFVec3faccessType='outputOnly'/>
290                                          <field name='afterLateralThrusterBeamRangetype='SFFloataccessType='outputOnly'/>
291                                          <IS>
292                                               <connect nodeField='set_forwardVerticalThrusterprotoField='set_forwardVerticalThruster'/>
293                                               <connect nodeField='set_afterVerticalThrusterprotoField='set_afterVerticalThruster'/>
294                                               <connect nodeField='set_forwardLateralThrusterprotoField='set_forwardLateralThruster'/>
295                                               <connect nodeField='set_afterLateralThrusterprotoField='set_afterLateralThruster'/>
296                                          </IS>
  <![CDATA[
                
ecmascript:

function set_forwardVerticalThruster (value, timeStamp) {
   if (value >= 0)
      forwardVerticalThrusterBeamTranslation = new SFVec3f(0, .145, 0);
   else
      forwardVerticalThrusterBeamTranslation = new SFVec3f(0, -0.145 + value, 0);

   forwardVerticalThrusterBeamRange = value;
}

function set_afterVerticalThruster (value, timeStamp) {
   if (value >= 0)
      afterVerticalThrusterBeamTranslation = new SFVec3f(0, .145, 0);
   else
      afterVerticalThrusterBeamTranslation = new SFVec3f(0, -0.145 + value, 0);

   afterVerticalThrusterBeamRange = value;
}

function set_forwardLateralThruster (value, timeStamp) {
   if (value >= 0)
      forwardLateralThrusterBeamTranslation = new SFVec3f(0, .21, 0);
   else
      forwardLateralThrusterBeamTranslation = new SFVec3f(0, -0.21 + value, 0);

   forwardLateralThrusterBeamRange = value;
}

function set_afterLateralThruster (value, timeStamp) {
   if (value >= 0)
      afterLateralThrusterBeamTranslation = new SFVec3f(0, .21, 0);
   else
      afterLateralThrusterBeamTranslation = new SFVec3f(0, -0.21 + value, 0);

   afterLateralThrusterBeamRange = value;
}

              
]]>
298                                     </Script>
299                                     <Group>
300                                          < ROUTE  fromNode='THRUSTER_CONES' fromField='forwardVerticalThrusterBeamTranslation' toNode='FORWARD_VERTICAL_BEAMCONE' toField='translation'/>
301                                          < ROUTE  fromNode='THRUSTER_CONES' fromField='forwardVerticalThrusterBeamRange' toNode='ForwardVerticalBeamCone' toField='range'/>
302                                          < ROUTE  fromNode='THRUSTER_CONES' fromField='afterVerticalThrusterBeamTranslation' toNode='AFTER_VERTICAL_BEAMCONE' toField='translation'/>
303                                          < ROUTE  fromNode='THRUSTER_CONES' fromField='afterVerticalThrusterBeamRange' toNode='AfterVerticalBeamCone' toField='range'/>
304                                          < ROUTE  fromNode='THRUSTER_CONES' fromField='forwardLateralThrusterBeamTranslation' toNode='FORWARD_LATERAL_BEAMCONE' toField='translation'/>
305                                          < ROUTE  fromNode='THRUSTER_CONES' fromField='forwardLateralThrusterBeamRange' toNode='ForwardLateralBeamCone' toField='range'/>
306                                          < ROUTE  fromNode='THRUSTER_CONES' fromField='afterLateralThrusterBeamTranslation' toNode='AFTER_LATERAL_BEAMCONE' toField='translation'/>
307                                          < ROUTE  fromNode='THRUSTER_CONES' fromField='afterLateralThrusterBeamRange' toNode='AfterLateralBeamCone' toField='range'/>
308                                     </Group>
309                                     <Shape DEF='HULL'>
310 
                                        <!-- Appearance HULL_APPEARANCE is a DEF node that has 1 USE node: USE_1 -->
                                        <Appearance DEF='HULL_APPEARANCE'>
311                                               <Material DEF='HullMaterial'>
312                                                    <IS>
313                                                         <connect nodeField='diffuseColorprotoField='hullColor'/>
314                                                    </IS>
315                                               </Material>
316                                          </Appearance>
317                                          <IndexedFaceSet creaseAngle='2.2coordIndex='0 26 34 33 32 31 25 1 -1 1 25 31 32 33 34 26 0 -1 1 25 29 28 2 -1 2 28 29 25 1 -1 2 28 35 36 37 38 27 3 -1 3 27 38 37 36 35 28 2 -1 3 27 30 26 0 -1 0 26 30 27 3 -1 0 4 1 -1 0 1 4 -1 1 5 2 -1 1 2 5 -1 2 6 3 -1 2 3 6 -1 3 7 0 -1 3 0 7 -1 7 0 8 -1 7 8 0 -1 8 0 9 -1 8 9 0 -1 9 0 4 -1 9 4 0 -1 4 1 10 -1 4 10 1 -1 10 1 11 -1 10 11 1 -1 11 1 5 -1 11 5 1 -1 5 2 12 -1 5 12 2 -1 12 2 13 -1 12 13 2 -1 13 2 6 -1 13 6 2 -1 6 3 14 -1 6 14 3 -1 14 3 15 -1 14 15 3 -1 15 3 7 -1 15 7 3 -1 4 10 16 -1 10 4 16 -1 10 11 16 -1 11 10 16 -1 11 5 17 -1 5 11 17 -1 5 12 18 -1 12 5 18 -1 12 13 19 -1 13 12 19 -1 13 6 19 -1 6 13 19 -1 6 14 20 -1 14 6 20 -1 14 15 20 -1 15 14 20 -1 15 7 21 -1 7 15 21 -1 7 8 22 -1 8 7 22 -1 8 9 23 -1 9 8 23 -1 9 4 23 -1 4 9 23 -1 4 16 23 -1 16 4 23 -1 11 17 16 -1 17 11 16 -1 5 18 17 -1 18 5 17 -1 12 19 18 -1 19 12 18 -1 6 20 19 -1 20 6 19 -1 20 15 21 -1 15 20 21 -1 21 7 22 -1 7 21 22 -1 22 8 23 -1 8 22 23 -1 23 16 24 -1 16 23 24 -1 16 17 24 -1 17 16 24 -1 17 18 24 -1 18 17 24 -1 18 19 24 -1 19 18 24 -1 19 20 24 -1 20 19 24 -1 20 21 24 -1 21 20 24 -1 21 22 24 -1 22 21 24 -1 22 23 24 -1 23 22 24 -1 25 26 30 29 -1 29 30 26 25 -1 27 28 29 30 -1 30 29 28 27 -1 31 32 36 35 -1 35 36 32 31 -1 32 33 37 36 -1 36 37 33 32 -1 34 38 37 33 -1 33 37 38 34 -1'>
318                                               <!-- Bow Cowling [0..24], Stern Cowling [25..30], Rudder Post [31..38] -->
319                                               <Coordinate point='.6985 .13335 -0.20955 .6985 .13335 .20955 .6985 -0.13335 .20955 .6985 -0.13335 -0.20955 1.05 .085 0 1.05 0 .1143 1.05 -0.085 0 1.05 0 -0.1143 1.05 .04572 -0.098985 1.05 .079188 -0.05715 1.05 .079188 .05715 1.05 .04572 .098985 1.05 -0.04572 .098985 1.05 -0.079188 .05715 1.05 -0.079188 -0.05715 1.05 -0.04572 -0.098985 1.1 .04064 .02032 1.1 .02032 .06096 1.1 -0.02032 .06096 1.1 -0.04064 .02032 1.1 -0.04064 -0.02032 1.1 -0.02032 -0.06096 1.1 .02032 -0.06096 1.1 .04064 -0.02032 1.11 0 0 -0.6985 .13335 .20955 -0.6985 .13335 -0.20955 -0.6985 -0.13335 -0.20955 -0.6985 -0.13335 .20955 -1.1303 0 .20955 -1.1303 0 -0.20955 -0.6985 .13335 .0635 -0.8509 .13335 .0635 -0.8509 .13335 -0.0635 -0.6985 .13335 -0.0635 -0.6985 -0.13335 .0635 -0.8509 -0.13335 .0635 -0.8509 -0.13335 -0.0635 -0.6985 -0.13335 -0.0635'/>
320                                          </IndexedFaceSet>
321                                     </Shape>
322                                     <!-- original translation -1.1557 0 .09525 -->
323                                     <Transform DEF='STARTBOARD_SCREW_BEAMCONE_AND_SHAFTtranslation='-1.3 0 .3'>
324                                          <Transform DEF='STARTBOARD_THRUSTER_BODYrotation='0 0 1 1.57translation='.15 0 0'>
325                                               <Shape>
326 
                                                  <!-- Appearance THRUSTER_BODY_APPEARANCE is a DEF node that has 1 USE node: USE_1 -->
                                                  <Appearance DEF='THRUSTER_BODY_APPEARANCE'>
327                                                         <Material diffuseColor='.9 .9 .9'/>
328                                                    </Appearance>
329                                                    <Cylinder height='.16radius='.08'/>
330                                               </Shape>
331                                               <Shape>
332 
                                                  <!-- Appearance THRUSTER_INNERBODY_APPEARANCE is a DEF node that has 1 USE node: USE_1 -->
                                                  <Appearance DEF='THRUSTER_INNERBODY_APPEARANCE'>
333                                                         <Material diffuseColor='.2 .2 .2'/>
334                                                    </Appearance>
335                                                    <Cylinder height='.22radius='.06'/>
336                                               </Shape>
337                                          </Transform>
338                                          <Transform DEF='STARBOARD_THRUSTER_BRACKETrotation='0 0 1 1.57translation='.2 0 -0.05'>
339                                               <Shape>
340                                                    <Appearance>
341                                                         <Material diffuseColor='.9 .9 .9'/>
342                                                    </Appearance>
343                                                    <Box size='.02 .05 .2'/>
344                                               </Shape>
345                                          </Transform>
346                                          <Transform DEF='STARBOARD_SCREW_BEAMCONErotation='0 1 0 3.14'>
347                                               <ProtoInstance name='BeamConeDEF='StarboardScrewBeamCone'>
348                                                    <fieldValue name='namevalue='StarboardScrewBeamCone'/>
349                                                    <!-- range values -1..0..1m <==> -700..0..700 RPM -->
350                                                    <fieldValue name='defaultRangevalue='1'/>
351                                                    <fieldValue name='beamHeightDegreesvalue='8'/>
352                                                    <fieldValue name='beamWidthDegreesvalue='8'/>
353                                                    <fieldValue name='solidvalue='false'/>
354                                                    <fieldValue name='wireframevalue='true'/>
355                                                    <fieldValue name='noContactColorvalue='0 .8 .4'/>
356                                                    <fieldValue name='transparencyvalue='0'/>
357                                                    <fieldValue name='traceEnabledvalue='false'/>
358                                                    <IS>
359                                                         <connect nodeField='rangeprotoField='set_stbdRpm'/>
360                                                    </IS>
361                                               </ProtoInstance>
362                                          </Transform>
363 
                                        <!-- Group SHAFT is a DEF node that has 1 USE node: USE_1 -->
                                        <Group DEF='SHAFT'>
364                                               <Transform rotation='0 0 1 1.57079translation='.0281 0 0'>
365                                                    <Shape DEF='SCREW_SHAFT'>
366 
                                                       <!-- Appearance SCREW_APPEARANCE is a DEF node that has 3 USE nodes: USE_1, USE_2, USE_3 -->
                                                       <Appearance DEF='SCREW_APPEARANCE'>
367                                                              <Material diffuseColor='.226 .197 0'/>
368                                                         </Appearance>
369                                                         <Cylinder bottom='falseheight='.0762radius='.008top='false'/>
370                                                    </Shape>
371                                               </Transform>
372                                               <Transform rotation='0 0 1 1.57079translation='-0.015 0 0'>
373                                                    <Shape DEF='SHAFT_END_CAP'>
374                                                         <Appearance USE='SCREW_APPEARANCE'/>
375                                                         <Cone bottom='falsebottomRadius='.008height='.01'/>
376                                                    </Shape>
377                                               </Transform>
378                                          </Group>
379                                     </Transform>
380                                     <!-- original translation -1.1557 0 .09525 -->
381                                     <Transform DEF='STARBOARD_SCREWtranslation='-1.3 0 .3'>
382 
                                        <!-- Transform STARBOARD_BLADE is a DEF node that has 3 USE nodes: USE_1, USE_2, USE_3 -->
                                        <Transform DEF='STARBOARD_BLADE'>
383                                               <Transform rotation='0 1 0 -0.39'>
384                                                    <Shape>
385                                                         <Appearance USE='SCREW_APPEARANCE'/>
386                                                         <IndexedFaceSet coordIndex='0 1 2 3 4 5 6 7 -1 0 7 6 5 4 3 2 1 -1'>
387 
                                                            <!-- Coordinate BLADE_COORDINATES is a DEF node that has 1 USE node: USE_1 -->
                                                            <Coordinate DEF='BLADE_COORDINATESpoint='0 0 -0.00508 0 .02540 -0.02032 0 .04572 -0.01524 0 .05080 -0.00508 0 .05080 .00508 0 .04572 .01524 0 .02540 .02032 0 0 .00508'/>
388                                                         </IndexedFaceSet>
389                                                    </Shape>
390                                               </Transform>
391                                          </Transform>
392                                          <Transform rotation='1 0 0 1.57079'>
393                                               <Transform USE='STARBOARD_BLADE'/>
394                                          </Transform>
395                                          <Transform rotation='1 0 0 3.14159267'>
396                                               <Transform USE='STARBOARD_BLADE'/>
397                                          </Transform>
398                                          <Transform rotation='1 0 0 -1.57079'>
399                                               <Transform USE='STARBOARD_BLADE'/>
400                                          </Transform>
401                                     </Transform>
402                                     <!-- original translation -1.1557 0 -0.09525 -->
403                                     <Transform DEF='PORT_SCREW_BEAMCONE_AND_SHAFTtranslation='-1.3 0 -0.3'>
404                                          <Transform DEF='PORT_THRUSTER_BODYrotation='0 0 1 1.57translation='.15 0 0'>
405                                               <Shape>
406                                                    <Appearance USE='THRUSTER_BODY_APPEARANCE'/>
407                                                    <Cylinder height='.16radius='.08'/>
408                                               </Shape>
409                                               <Shape>
410                                                    <Appearance USE='THRUSTER_INNERBODY_APPEARANCE'/>
411                                                    <Cylinder height='.22radius='.05'/>
412                                               </Shape>
413                                          </Transform>
414                                          <Transform DEF='PORT_THRUSTER_BRACKETrotation='0 0 1 1.57translation='.2 0 .05'>
415                                               <Shape>
416                                                    <Appearance>
417                                                         <Material diffuseColor='.9 .9 .9'/>
418                                                    </Appearance>
419                                                    <Box size='.02 .05 .2'/>
420                                               </Shape>
421                                          </Transform>
422                                          <Transform DEF='PORT_SCREW_BEAMCONErotation='0 1 0 3.14'>
423                                               <ProtoInstance name='BeamConeDEF='PortScrewBeamCone'>
424                                                    <fieldValue name='namevalue='PortScrewBeamCone'/>
425                                                    <!-- range values -1..0..1 m <==> -700..0..700 RPM -->
426                                                    <fieldValue name='defaultRangevalue='1'/>
427                                                    <fieldValue name='beamHeightDegreesvalue='8'/>
428                                                    <fieldValue name='beamWidthDegreesvalue='8'/>
429                                                    <fieldValue name='solidvalue='false'/>
430                                                    <fieldValue name='wireframevalue='true'/>
431                                                    <!-- Greenish blue for sea water flow -->
432                                                    <fieldValue name='noContactColorvalue='0 .8 .4'/>
433                                                    <fieldValue name='transparencyvalue='0'/>
434                                                    <fieldValue name='traceEnabledvalue='false'/>
435                                                    <IS>
436                                                         <connect nodeField='rangeprotoField='set_portRpm'/>
437                                                    </IS>
438                                               </ProtoInstance>
439                                          </Transform>
440                                          <Group USE='SHAFT'/>
441                                     </Transform>
442                                     <!-- original translation -1.1557 0 -0.09525 -->
443                                     <Transform DEF='PORT_SCREWtranslation='-1.3 0 -0.3'>
444 
                                        <!-- Group PORT_BLADE is a DEF node that has 3 USE nodes: USE_1, USE_2, USE_3 -->
                                        <Group DEF='PORT_BLADE'>
445                                               <Transform rotation='0 1 0 .39'>
446                                                    <Shape>
447                                                         <Appearance USE='SCREW_APPEARANCE'/>
448                                                         <IndexedFaceSet coordIndex='0 1 2 3 4 5 6 7 -1 0 7 6 5 4 3 2 1 -1'>
449                                                              <!-- This blade has reversed pitch -->
450                                                              <Coordinate USE='BLADE_COORDINATES'/>
451                                                         </IndexedFaceSet>
452                                                    </Shape>
453                                               </Transform>
454                                          </Group>
455                                          <Transform rotation='1 0 0 1.57079'>
456                                               <Group USE='PORT_BLADE'/>
457                                          </Transform>
458                                          <Transform rotation='1 0 0 3.14159267'>
459                                               <Group USE='PORT_BLADE'/>
460                                          </Transform>
461                                          <Transform rotation='1 0 0 -1.57079'>
462                                               <Group USE='PORT_BLADE'/>
463                                          </Transform>
464                                     </Transform>
465                                </Transform>
466                                <Shape>
467                                     <!-- Medium-resolution LOD level -->
468                                     <Appearance USE='HULL_APPEARANCE'/>
469                                     <!-- size is full length, height, width -->
470                                     <Box size='2.2 .26 .42'/>
471                                </Shape>
472                           </LOD>
473                           <Group>
474                                <Viewpoint DEF='HULLNAME_VIEWPOINTdescription='Aries Prototypeposition='0 0 4'>
475                                     <IS>
476                                          <connect nodeField='descriptionprotoField='hullName'/>
477                                     </IS>
478                                </Viewpoint>
479                                <Viewpoint description='Port Boworientation='0 1 0 2.356position='8 0 -8'/>
480                                <Viewpoint description='Boworientation='0 1 0 1.572position='10 0 0'/>
481                                <Viewpoint description='Starboard Boworientation='0 1 0 0.785position='8 0 8'/>
482                                <Viewpoint description='Port Beamorientation='0 1 0 3.14159267position='0 0 -10'/>
483                                <Viewpoint description='Port Asternorientation='0 1 0 3.926position='-8 0 -8'/>
484                                <Viewpoint description='Asternorientation='0 1 0 -1.4position='-10 0 0'/>
485                                <Viewpoint description='Starboard Asternorientation='0 1 0 -0.783position='-10 0 10'/>
486                                <Viewpoint description='Looking down from 25m above Ariesorientation='1 0 0 -1.57position='0 25 0'/>
487                           </Group>
488                      </Transform>
489                 </ProtoBody>
490            </ProtoDeclare>
491            <Viewpoint description='Aries AUV'/>
492            <Group>
493                 <ProtoInstance name='Aries'>
494                      <fieldValue name='translationvalue='0 0.4 0'/>
495                 </ProtoInstance>
496            </Group>
497            <!-- Viewable geometry is anchored text that links to an example that showing the usage of AriesPrototype -->
498            <Anchor description='AriesExampleparameter='"target=_blank"'   url=' "AriesExample.x3d" "https://www.web3d.org/x3d/content/examples/Savage/Robots/UnmannedUnderwaterVehicles/AriesExample.x3d" "AriesExample.wrl" "https://www.web3d.org/x3d/content/examples/Savage/Robots/UnmannedUnderwaterVehicles/AriesExample.wrl" '>
499                 <Shape>
500                      <Appearance>
501                           <Material diffuseColor='0 1 1emissiveColor='0 1 1'/>
502                      </Appearance>
503                      <Text string='"AriesPrototype" "is a prototype definition file" "" "click on text to view" "AriesExample"'>
504                           <FontStyle justify='"MIDDLE" "MIDDLE"'/>
505                      </Text>
506                 </Shape>
507            </Anchor>
508       </Scene>
509  </X3D>
<!--

<!--
Event Graph ROUTE Table shows event connections.
-->
<!-- to top DEF nodes index: AFTER_LATERAL_BEAMCONE, AFTER_LATERAL_THRUSTER, AFTER_PLANES, AFTER_RUDDERS, AFTER_VERTICAL_BEAMCONE, AFTER_VERTICAL_THRUSTER, AfterLateralBeamCone, AfterVerticalBeamCone, AriesTransform, BLADE_COORDINATES, FORWARD_LATERAL_BEAMCONE, FORWARD_LATERAL_THRUSTER, FORWARD_PLANES, FORWARD_RUDDERS, FORWARD_VERTICAL_BEAMCONE, FORWARD_VERTICAL_THRUSTER, ForwardLateralBeamCone, ForwardVerticalBeamCone, HULL, HULL_APPEARANCE, HullMaterial, HULLNAME_VIEWPOINT, LATERAL_THRUSTER_SHAPE, PLANE_SHAPE, PLANE_SURFACES, PlaneMaterial, PORT_BLADE, PORT_SCREW, PORT_SCREW_BEAMCONE, PORT_SCREW_BEAMCONE_AND_SHAFT, PORT_THRUSTER_BODY, PORT_THRUSTER_BRACKET, PortScrewBeamCone, PRIMARY_AUV_GEOMETRY, SCREW_APPEARANCE, SCREW_SHAFT, SHAFT, SHAFT_END_CAP, SONAR_STEERING_AND_DETECTS, ST1000, ST1000BeamCone, ST725, ST725BeamCone, STARBOARD_BLADE, STARBOARD_SCREW, STARBOARD_SCREW_BEAMCONE, STARBOARD_THRUSTER_BRACKET, StarboardScrewBeamCone, STARTBOARD_SCREW_BEAMCONE_AND_SHAFT, STARTBOARD_THRUSTER_BODY, THRUSTER_APPEARANCE, THRUSTER_BODY_APPEARANCE, THRUSTER_CONES, THRUSTER_INNERBODY_APPEARANCE, VERTICAL_THRUSTER_SHAPE

Index for Viewpoint nodes: Viewpoint_1, Viewpoint_2, Viewpoint_3, Viewpoint_4, Viewpoint_5, Viewpoint_6, Viewpoint_7, Viewpoint_8, Viewpoint_9, HULLNAME_VIEWPOINT

Index for ExternProtoDeclare definition: BeamCone

Index for ProtoDeclare definition: Aries
-->
X3D Tooltips element index: Anchor, Appearance, Box, Cone, connect, Coordinate, Cylinder, ExternProtoDeclare, field, fieldValue, FontStyle, Group, head, IndexedFaceSet, IS, LOD, Material, meta, ProtoBody, ProtoDeclare, ProtoInstance, ProtoInterface, ROUTE, Scene, Script, Shape, Text, Transform, Viewpoint, WorldInfo, X3D, plus documentation for accessType definitions, type definitions, XML data types, and field types

Event Graph ROUTE Table entries with 20 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.

PLANE_SURFACES
Script
forwardRuddersRotation
SFRotation

ROUTE
event to
(1)
FORWARD_RUDDERS
Transform
rotation
SFRotation
PLANE_SURFACES
Script
afterRuddersRotation
SFRotation

ROUTE
event to
(1)
AFTER_RUDDERS
Transform
rotation
SFRotation
PLANE_SURFACES
Script
forwardPlanesRotation
SFRotation

ROUTE
event to
(1)
FORWARD_PLANES
Transform
rotation
SFRotation
PLANE_SURFACES
Script
afterPlanesRotation
SFRotation

ROUTE
event to
(1)
AFTER_PLANES
Transform
rotation
SFRotation

SONAR_STEERING_AND_DETECTS
Script
ST725Rotation
SFRotation

ROUTE
event to
(1)
ST725
Transform
rotation
SFRotation
SONAR_STEERING_AND_DETECTS
Script
ST1000Rotation
SFRotation

ROUTE
event to
(1)
ST1000
Transform
rotation
SFRotation
SONAR_STEERING_AND_DETECTS
Script
ST725Contact
SFBool

ROUTE
event to
(1)
ST725BeamCone
ProtoInstance
contact
SFBool
SONAR_STEERING_AND_DETECTS
Script
ST1000Contact
SFBool

ROUTE
event to
(1)
ST1000BeamCone
ProtoInstance
contact
SFBool
SONAR_STEERING_AND_DETECTS
Script
ST725Range_changed
SFFloat

ROUTE
event to
(1)
ST725BeamCone
ProtoInstance
range
SFFloat
SONAR_STEERING_AND_DETECTS
Script
ST1000Range_changed
SFFloat

ROUTE
event to
(1)
ST1000BeamCone
ProtoInstance
range
SFFloat
SONAR_STEERING_AND_DETECTS
Script
ST725Intensity
SFFloat

ROUTE
event to
(1)
ST725BeamCone
ProtoInstance
transparency
SFFloat
SONAR_STEERING_AND_DETECTS
Script
ST1000Intensity
SFFloat

ROUTE
event to
(1)
ST1000BeamCone
ProtoInstance
transparency
SFFloat

THRUSTER_CONES
Script
forwardVerticalThrusterBeamTranslation
SFVec3f

ROUTE
event to
(1)
FORWARD_VERTICAL_BEAMCONE
Transform
translation
SFVec3f
THRUSTER_CONES
Script
forwardVerticalThrusterBeamRange
SFFloat

ROUTE
event to
(1)
ForwardVerticalBeamCone
ProtoInstance
range
SFFloat
THRUSTER_CONES
Script
afterVerticalThrusterBeamTranslation
SFVec3f

ROUTE
event to
(1)
AFTER_VERTICAL_BEAMCONE
Transform
translation
SFVec3f
THRUSTER_CONES
Script
afterVerticalThrusterBeamRange
SFFloat

ROUTE
event to
(1)
AfterVerticalBeamCone
ProtoInstance
range
SFFloat
THRUSTER_CONES
Script
forwardLateralThrusterBeamTranslation
SFVec3f

ROUTE
event to
(1)
FORWARD_LATERAL_BEAMCONE
Transform
translation
SFVec3f
THRUSTER_CONES
Script
forwardLateralThrusterBeamRange
SFFloat

ROUTE
event to
(1)
ForwardLateralBeamCone
ProtoInstance
range
SFFloat
THRUSTER_CONES
Script
afterLateralThrusterBeamTranslation
SFVec3f

ROUTE
event to
(1)
AFTER_LATERAL_BEAMCONE
Transform
translation
SFVec3f
THRUSTER_CONES
Script
afterLateralThrusterBeamRange
SFFloat

ROUTE
event to
(1)
AfterLateralBeamCone
ProtoInstance
range
SFFloat

line 493
ProtoInstance
Aries
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. 

      AfterLateralBeamCone
ProtoInstance
BeamCone
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. 

      AfterVerticalBeamCone
ProtoInstance
BeamCone
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. 

      ForwardLateralBeamCone
ProtoInstance
BeamCone
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. 

      ForwardVerticalBeamCone
ProtoInstance
BeamCone
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. 

PortScrewBeamCone
ProtoInstance
BeamCone
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. 

      ST1000BeamCone
ProtoInstance
BeamCone
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. 

      ST725BeamCone
ProtoInstance
BeamCone
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. 

StarboardScrewBeamCone
ProtoInstance
BeamCone
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. 

line 498
Anchor
description='AriesExample' 
User-interaction hint for this node. 

Additional guidance on X3D animation can be found in the 10-Step Animation Design Process and Event Tracing hint sheets. Have fun with X3D! 😀

-->
<!-- Online at
https://www.web3d.org/x3d/content/examples/Savage/Robots/UnmannedUnderwaterVehicles/AriesPrototypeIndex.html -->
<!-- Version control at
https://sourceforge.net/p/x3d/code/HEAD/tree/www.web3d.org/x3d/content/examples/Savage/Robots/UnmannedUnderwaterVehicles/AriesPrototype.x3d -->

<!-- Color-coding legend: X3D terminology <X3dNode  DEF='idNamefield='value'/> matches XML terminology <XmlElement  DEF='idNameattribute='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> -->

to top <!-- For additional help information about X3D scenes, please see X3D Tooltips, X3D Resources, and X3D Scene Authoring Hints. -->