X3D Model Documentation: AcousticTransmissionCylinderExample.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='title' content='AcousticTransmissionCylinderExample.x3d'/>
  6            <meta name='description' content='An example of an acoustic transmission cylinder, beamCount can be incremented or decremented by single pings'/>
  7            <meta name='creator' content='Oliver Tan'/>
  8            <meta name='created' content='11 May 2004'/>
  9            <meta name='modified' content='20 October 2019'/>
 10            <meta name='subject' content='Acoustic transmission'/>
 11            <meta name='identifier' content='https://savage.nps.edu/Savage/CommunicationsAndSensors/SeaWeb/AcousticTransmissionCylinderExample.x3d'/>
 12            <meta name='generator' content='X3D-Edit 3.2, https://savage.nps.edu/X3D-Edit'/>
 13            <meta name='license' content='../../license.html'/>
 14       </head>
<!--

<!--
Event Graph ROUTE Table shows event connections.
-->
<!-- to top Index for DEF nodes: AcousticTransmissionCylinder, BeamCountAnimationGroup, BeamCounter, ContinuousTransmissionTextTouch, TextAppearance, TransmissionDurationTriggerSingle1, TransmissionDurationTriggerSingle3, TransmissionTextTouchSingle1, TransmissionTextTouchSingle3, TransparentAppearance, TriggerClockSingle1, TriggerClockSingle3

Index for Viewpoint node: Viewpoint_1

Index for ExternProtoDeclare definition: AcousticTransmissionCylinder
-->
 15       <Scene>
 16            <WorldInfo title='AcousticTransmissionCylinderExample.x3d'/>
 17            <Background skyColor='0 0.02 0.2'/>
 18            <NavigationInfo visibilityLimit='10000'/>
 19            <ExternProtoDeclare name='AcousticTransmissionCylinder' appinfo='AcousticTransmissionCylinder visualizes the pulse width of cylindrical propagation with has a receding inner radius and a (maximum outer radius .'   url=' "../../../Savage/CommunicationsAndSensors/SeaWeb/AcousticTransmissionCylinderPrototype.x3d#AcousticTransmissionCylinder" "https://savage.nps.edu/Savage/CommunicationsAndSensors/SeaWeb/AcousticTransmissionCylinderPrototype.x3d#AcousticTransmissionCylinder" "../../../Savage/CommunicationsAndSensors/SeaWeb/AcousticTransmissionCylinderPrototype.wrl#AcousticTransmissionCylinder" "https://savage.nps.edu/Savage/CommunicationsAndSensors/SeaWeb/AcousticTransmissionCylinderPrototype.wrl#AcousticTransmissionCylinder" '>
 20                 <field name='startTransmission' type='SFBool' accessType='inputOnly'
                appinfo='Upon receipt of a boolean true event start a single (not continuous) transmission'/>
 21                 <field name='startContinuousTransmissions' type='SFBool' accessType='inputOnly'
                appinfo='Upon receipt of a boolean true event start continuous transmissions'/>
 22                 <field name='set_range' type='SFFloat' accessType='inputOnly'
                appinfo='Propagation range in meters'/>
 23                 <field name='defaultRange' type='SFFloat' accessType='initializeOnly'
                appinfo='Default propagation range in meters'/>
 24                 <field name='transmissionPropagationSpeed' type='SFFloat' accessType='initializeOnly'
                appinfo='Speed in meters / second'/>
 25                 <field name='set_transmissionDuration' type='SFFloat' accessType='inputOnly'
                appinfo='Duration in seconds'/>
 26                 <field name='transmissionDuration' type='SFFloat' accessType='initializeOnly'
                appinfo='Duration in seconds'/>
 27                 <field name='set_beamCount' type='SFInt32' accessType='inputOnly'
                appinfo='Number of segmented sections in 360-degree cylindrical beam'/>
 28                 <field name='beamCount' type='SFInt32' accessType='initializeOnly'
                appinfo='Number of segmented sections in 360-degree cylindrical beam'/>
 29                 <field name='height' type='SFFloat' accessType='initializeOnly'
                appinfo='Height of acoustic cylinder in meters'/>
 30                 <field name='set_color' type='SFColor' accessType='inputOnly'
                appinfo='Color of cylinder'/>
 31                 <field name='color' type='SFColor' accessType='initializeOnly'
                appinfo='Default color of cylinder'/>
 32                 <field name='traceEnabled' type='SFBool' accessType='initializeOnly'/>
 33            </ExternProtoDeclare>
 34 
 35                 <fieldValue name='defaultRange' value='1000'/>
 36                 <fieldValue name='transmissionPropagationSpeed' value='1500'/>
 37                 <fieldValue name='transmissionDuration' value='3'/>
 38                 <fieldValue name='beamCount' value='12'/>
 39                 <fieldValue name='height' value='200'/>
 40                 <fieldValue name='color' value='1 1 0.2'/>
 41                 <fieldValue name='traceEnabled' value='true'/>
 42            </ProtoInstance>
 43            <Transform rotation='1 0 0 -0.7' translation='0 1000 1800'>
 44                 <Viewpoint description='Acoustic Transmission Cylinder, 1800m'/>
 45                 <Transform translation='-4.5 -3 0'>
 46                      <Billboard axisOfRotation='0 0 0'>
 47                           <Group>
 48                                <Shape>
 49 
                                   <!-- Appearance TextAppearance is a DEF node that has 2 USE nodes: USE_1, USE_2 -->
                                   <Appearance DEF='TextAppearance'>
 50                                          <Material diffuseColor='.8 .8 0'/>
 51                                     </Appearance>
 52                                     <Text string='"Single 3 seconds" "Transmission"'>
 53                                          <FontStyle justify='"MIDDLE" "MIDDLE"' size='0.6'/>
 54                                     </Text>
 55                                </Shape>
 56                                <Shape>
 57 
                                   <!-- Appearance TransparentAppearance is a DEF node that has 2 USE nodes: USE_1, USE_2 -->
                                   <Appearance DEF='TransparentAppearance'>
 58                                          <Material transparency='1'/>
 59                                     </Appearance>
 60                                     <Box size='4 1.3 0.01'/>
 61                                </Shape>
 62 
                              <!-- ROUTE information for TransmissionTextTouchSingle3 node:  [from touchTime to TriggerClockSingle3.startTime ] [from isActive to AcousticTransmissionCylinder.startTransmission ] -->
                              <TouchSensor DEF='TransmissionTextTouchSingle3' description='perform single 3-second transmission increase beamCount'/>
 63 
                              <!-- ROUTE information for TriggerClockSingle3 node:  [from TransmissionTextTouchSingle3.touchTime to startTime ] [from fraction_changed to TransmissionDurationTriggerSingle3.set_fraction ] [from isActive to BeamCounter.next ] -->
                              <TimeSensor DEF='TriggerClockSingle3' cycleInterval='0.05'/>
 64 
                              <!-- ROUTE information for TransmissionDurationTriggerSingle3 node:  [from TriggerClockSingle3.fraction_changed to set_fraction ] [from value_changed to AcousticTransmissionCylinder.set_transmissionDuration ] -->
                              <ScalarInterpolator DEF='TransmissionDurationTriggerSingle3' key='0 1' keyValue='3 3'/>
 65                                < ROUTE  fromNode='TransmissionTextTouchSingle3' fromField='touchTime' toNode='TriggerClockSingle3' toField='startTime'/>
 66                                < ROUTE  fromNode='TriggerClockSingle3' fromField='fraction_changed' toNode='TransmissionDurationTriggerSingle3' toField='set_fraction'/>
 67                                < ROUTE  fromNode='TransmissionDurationTriggerSingle3' fromField='value_changed' toNode='AcousticTransmissionCylinder' toField='set_transmissionDuration'/>
 68                                < ROUTE  fromNode='TransmissionTextTouchSingle3' fromField='isActive' toNode='AcousticTransmissionCylinder' toField='startTransmission'/>
 69                           </Group>
 70                      </Billboard>
 71                 </Transform>
 72                 <Transform translation='0 -3 0'>
 73                      <Billboard axisOfRotation='0 0 0'>
 74                           <Group>
 75                                <Shape>
 76                                     <Appearance USE='TextAppearance'/>
 77                                     <Text string='"Single 1 second" "Transmission"'>
 78                                          <FontStyle justify='"MIDDLE" "MIDDLE"' size='0.6'/>
 79                                     </Text>
 80                                </Shape>
 81                                <Shape>
 82                                     <Appearance USE='TransparentAppearance'/>
 83                                     <Box size='4 1.3 0.01'/>
 84                                </Shape>
 85 
                              <!-- ROUTE information for TransmissionTextTouchSingle1 node:  [from touchTime to TriggerClockSingle1.startTime ] [from isActive to AcousticTransmissionCylinder.startTransmission ] -->
                              <TouchSensor DEF='TransmissionTextTouchSingle1' description='perform single 3-second transmission decrease beamCount'/>
 86 
                              <!-- ROUTE information for TriggerClockSingle1 node:  [from TransmissionTextTouchSingle1.touchTime to startTime ] [from fraction_changed to TransmissionDurationTriggerSingle1.set_fraction ] [from isActive to BeamCounter.previous ] -->
                              <TimeSensor DEF='TriggerClockSingle1' cycleInterval='0.05'/>
 87 
                              <!-- ROUTE information for TransmissionDurationTriggerSingle1 node:  [from TriggerClockSingle1.fraction_changed to set_fraction ] [from value_changed to AcousticTransmissionCylinder.set_transmissionDuration ] -->
                              <ScalarInterpolator DEF='TransmissionDurationTriggerSingle1' key='0 1' keyValue='1 1'/>
 88                                < ROUTE  fromNode='TransmissionTextTouchSingle1' fromField='touchTime' toNode='TriggerClockSingle1' toField='startTime'/>
 89                                < ROUTE  fromNode='TriggerClockSingle1' fromField='fraction_changed' toNode='TransmissionDurationTriggerSingle1' toField='set_fraction'/>
 90                                < ROUTE  fromNode='TransmissionDurationTriggerSingle1' fromField='value_changed' toNode='AcousticTransmissionCylinder' toField='set_transmissionDuration'/>
 91                                < ROUTE  fromNode='TransmissionTextTouchSingle1' fromField='isActive' toNode='AcousticTransmissionCylinder' toField='startTransmission'/>
 92                           </Group>
 93                      </Billboard>
 94                 </Transform>
 95                 <Transform translation='4.5 -3 0'>
 96                      <Billboard axisOfRotation='0 0 0'>
 97                           <Group>
 98                                <Shape>
 99                                     <Appearance USE='TextAppearance'/>
100                                     <Text string='"Continuous" "Transmissions"'>
101                                          <FontStyle justify='"MIDDLE" "MIDDLE"' size='0.6'/>
102                                     </Text>
103                                </Shape>
104                                <Shape>
105                                     <Appearance USE='TransparentAppearance'/>
106                                     <Box size='3.8 1.3 0.01'/>
107                                </Shape>
108 
                              <!-- ROUTE information for ContinuousTransmissionTextTouch node:  [from isActive to AcousticTransmissionCylinder.startContinuousTransmissions ] -->
                              <TouchSensor DEF='ContinuousTransmissionTextTouch' description='perform continuous transmissions'/>
109                                <!-- Use previous duration, no further computation -->
110                                < ROUTE  fromNode='ContinuousTransmissionTextTouch' fromField='isActive' toNode='AcousticTransmissionCylinder' toField='startContinuousTransmissions'/>
111                           </Group>
112                      </Billboard>
113                 </Transform>
114                 <Group DEF='BeamCountAnimationGroup'>
115 
                    <!-- ROUTE information for BeamCounter node:  [from TriggerClockSingle3.isActive to next ] [from TriggerClockSingle1.isActive to previous ] [from value_changed to AcousticTransmissionCylinder.set_beamCount ] -->
                    <IntegerSequencer DEF='BeamCounter' key='0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1' keyValue='12 16 20 24 30 36 45 60 120 180 360'/>
116                      < ROUTE  fromNode='TriggerClockSingle3' fromField='isActive' toNode='BeamCounter' toField='next'/>
117                      < ROUTE  fromNode='TriggerClockSingle1' fromField='isActive' toNode='BeamCounter' toField='previous'/>
118                      < ROUTE  fromNode='BeamCounter' fromField='value_changed' toNode='AcousticTransmissionCylinder' toField='set_beamCount'/>
119                 </Group>
120                 <Transform translation='-2 3.5 0'>
121                      <Billboard axisOfRotation='0 0 0'>
122                           <Group>
123                                <Shape>
124                                     <Appearance>
125                                          <Material diffuseColor='0.6 0.6 .1'/>
126                                     </Appearance>
127                                     <Text string=' "Transmission Acoustic Cylinder Example" "Distance = 1800m" "Propagation Speed = 1500m/sec" '>
128                                          <FontStyle justify='"FIRST" "MIDDLE"' size='0.3' style='BOLD'/>
129                                     </Text>
130                                </Shape>
131                           </Group>
132                      </Billboard>
133                 </Transform>
134            </Transform>
135       </Scene>
136  </X3D>
<!--

<!--
Event Graph ROUTE Table shows event connections.
-->
<!-- to top Index for DEF nodes: AcousticTransmissionCylinder, BeamCountAnimationGroup, BeamCounter, ContinuousTransmissionTextTouch, TextAppearance, TransmissionDurationTriggerSingle1, TransmissionDurationTriggerSingle3, TransmissionTextTouchSingle1, TransmissionTextTouchSingle3, TransparentAppearance, TriggerClockSingle1, TriggerClockSingle3

Index for Viewpoint node: Viewpoint_1

Index for ExternProtoDeclare definition: AcousticTransmissionCylinder
-->
X3D Tooltips element index: Appearance, Background, Billboard, Box, ExternProtoDeclare, field, fieldValue, FontStyle, Group, head, IntegerSequencer, Material, meta, NavigationInfo, ProtoInstance, ROUTE, ScalarInterpolator, Scene, Shape, Text, TimeSensor, TouchSensor, Transform, Viewpoint, WorldInfo, X3D, plus documentation for accessType definitions, type definitions, XML data types, and field types

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

ContinuousTransmissionTextTouch
TouchSensor
isActive
SFBool
→
ROUTE
event to
(1)
AcousticTransmissionCylinder
ProtoInstance
startContinuousTransmissions
SFBool

TransmissionTextTouchSingle1
TouchSensor
touchTime
SFTime
→
ROUTE
event to
(1)
TriggerClockSingle1
TimeSensor
startTime
SFTime
then
 
 
 
TriggerClockSingle1
TimeSensor
fraction_changed
SFFloat
→
ROUTE
event to
(2)
TransmissionDurationTriggerSingle1
ScalarInterpolator
set_fraction
SFFloat
then
 
 
 
TransmissionDurationTriggerSingle1
ScalarInterpolator
value_changed
SFFloat
→
ROUTE
event to
(3)
AcousticTransmissionCylinder
ProtoInstance
set_transmissionDuration
SFFloat
  then
 
 
 
TriggerClockSingle1
TimeSensor
isActive
SFBool
→
ROUTE
event to
(2)
BeamCounter
IntegerSequencer
previous
SFBool
then
 
 
 
BeamCounter
IntegerSequencer
value_changed
SFInt32
→
ROUTE
event to
(3)
AcousticTransmissionCylinder
ProtoInstance
set_beamCount
SFInt32
TransmissionTextTouchSingle1
TouchSensor
isActive
SFBool
→
ROUTE
event to
(1)
AcousticTransmissionCylinder
ProtoInstance
startTransmission
SFBool

TransmissionTextTouchSingle3
TouchSensor
touchTime
SFTime
→
ROUTE
event to
(1)
TriggerClockSingle3
TimeSensor
startTime
SFTime
then
 
 
 
TriggerClockSingle3
TimeSensor
fraction_changed
SFFloat
→
ROUTE
event to
(2)
TransmissionDurationTriggerSingle3
ScalarInterpolator
set_fraction
SFFloat
then
 
 
 
TransmissionDurationTriggerSingle3
ScalarInterpolator
value_changed
SFFloat
→
ROUTE
event to
(3)
AcousticTransmissionCylinder
ProtoInstance
set_transmissionDuration
SFFloat
  then
 
 
 
TriggerClockSingle3
TimeSensor
isActive
SFBool
→
ROUTE
event to
(2)
BeamCounter
IntegerSequencer
next
SFBool
then
 
 
 
BeamCounter
IntegerSequencer
value_changed
SFInt32
→
ROUTE
event to
(3)
AcousticTransmissionCylinder
ProtoInstance
set_beamCount
SFInt32
TransmissionTextTouchSingle3
TouchSensor
isActive
SFBool
→
ROUTE
event to
(1)
AcousticTransmissionCylinder
ProtoInstance
startTransmission
SFBool

      AcousticTransmissionCylinder
ProtoInstance
AcousticTransmissionCylinder
No ROUTE connection found for output events 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. 

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://savage.nps.edu/Savage/CommunicationsAndSensors/SeaWeb/AcousticTransmissionCylinderExampleIndex.html -->
<!-- Version control at
https://gitlab.nps.edu/Savage/Savage/CommunicationsAndSensors/SeaWeb/AcousticTransmissionCylinderExample.x3d -->

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

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