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='titlecontent=' AcousticTransmissionCylinderExample.x3d '/>
  6            <meta name='descriptioncontent='An example of an acoustic transmission cylinder, beamCount can be incremented or decremented by single pings'/>
  7            <meta name='creatorcontent='Oliver Tan'/>
  8            <meta name='createdcontent='11 May 2004'/>
  9            <meta name='modifiedcontent='20 October 2019'/>
 10            <meta name='subjectcontent='Acoustic transmission'/>
 11            <meta name='identifiercontent=' https://www.web3d.org/x3d/content/examples/Savage/CommunicationsAndSensors/SeaWeb/AcousticTransmissionCylinderExample.x3d '/>
 12            <meta name='generatorcontent='X3D-Edit 3.2, https://www.web3d.org/x3d/tools/X3D-Edit'/>
 13            <meta name='licensecontent='../../license.html'/>
 14       </head>
<!--

<!--
Event Graph ROUTE Table shows event connections.
-->
<!-- to top DEF nodes index: 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='AcousticTransmissionCylinderappinfo='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://www.web3d.org/x3d/content/examples/Savage/CommunicationsAndSensors/SeaWeb/AcousticTransmissionCylinderPrototype.x3d#AcousticTransmissionCylinder" "../../../Savage/CommunicationsAndSensors/SeaWeb/AcousticTransmissionCylinderPrototype.wrl#AcousticTransmissionCylinder" "https://www.web3d.org/x3d/content/examples/Savage/CommunicationsAndSensors/SeaWeb/AcousticTransmissionCylinderPrototype.wrl#AcousticTransmissionCylinder" '>
 20                 <field name='startTransmissiontype='SFBoolaccessType='inputOnly'
                appinfo='Upon receipt of a boolean true event start a single (not continuous) transmission'/>
 21                 <field name='startContinuousTransmissionstype='SFBoolaccessType='inputOnly'
                appinfo='Upon receipt of a boolean true event start continuous transmissions'/>
 22                 <field name='set_rangetype='SFFloataccessType='inputOnly'
                appinfo='Propagation range in meters'/>
 23                 <field name='defaultRangetype='SFFloataccessType='initializeOnly'
                appinfo='Default propagation range in meters'/>
 24                 <field name='transmissionPropagationSpeedtype='SFFloataccessType='initializeOnly'
                appinfo='Speed in meters / second'/>
 25                 <field name='set_transmissionDurationtype='SFFloataccessType='inputOnly'
                appinfo='Duration in seconds'/>
 26                 <field name='transmissionDurationtype='SFFloataccessType='initializeOnly'
                appinfo='Duration in seconds'/>
 27                 <field name='set_beamCounttype='SFInt32accessType='inputOnly'
                appinfo='Number of segmented sections in 360-degree cylindrical beam'/>
 28                 <field name='beamCounttype='SFInt32accessType='initializeOnly'
                appinfo='Number of segmented sections in 360-degree cylindrical beam'/>
 29                 <field name='heighttype='SFFloataccessType='initializeOnly'
                appinfo='Height of acoustic cylinder in meters'/>
 30                 <field name='set_colortype='SFColoraccessType='inputOnly'
                appinfo='Color of cylinder'/>
 31                 <field name='colortype='SFColoraccessType='initializeOnly'
                appinfo='Default color of cylinder'/>
 32                 <field name='traceEnabledtype='SFBoolaccessType='initializeOnly'/>
 33            </ExternProtoDeclare>
 34 
 35                 <fieldValue name='defaultRangevalue='1000'/>
 36                 <fieldValue name='transmissionPropagationSpeedvalue='1500'/>
 37                 <fieldValue name='transmissionDurationvalue='3'/>
 38                 <fieldValue name='beamCountvalue='12'/>
 39                 <fieldValue name='heightvalue='200'/>
 40                 <fieldValue name='colorvalue='1 1 0.2'/>
 41                 <fieldValue name='traceEnabledvalue='true'/>
 42            </ProtoInstance>
 43            <Transform rotation='1 0 0 -0.7translation='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='TransmissionTextTouchSingle3description='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='TriggerClockSingle3cycleInterval='0.05'/>
 64 
                              <!-- ROUTE information for TransmissionDurationTriggerSingle3 node:  [from TriggerClockSingle3.fraction_changed to set_fraction ] [from value_changed to AcousticTransmissionCylinder.set_transmissionDuration ] -->
                              <ScalarInterpolator DEF='TransmissionDurationTriggerSingle3key='0 1keyValue='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='TransmissionTextTouchSingle1description='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='TriggerClockSingle1cycleInterval='0.05'/>
 87 
                              <!-- ROUTE information for TransmissionDurationTriggerSingle1 node:  [from TriggerClockSingle1.fraction_changed to set_fraction ] [from value_changed to AcousticTransmissionCylinder.set_transmissionDuration ] -->
                              <ScalarInterpolator DEF='TransmissionDurationTriggerSingle1key='0 1keyValue='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='ContinuousTransmissionTextTouchdescription='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='BeamCounterkey='0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1keyValue='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.3style='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 DEF nodes index: 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 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. 

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/CommunicationsAndSensors/SeaWeb/AcousticTransmissionCylinderExampleIndex.html -->
<!-- Version control at
https://sourceforge.net/p/x3d/code/HEAD/tree/www.web3d.org/x3d/content/examples/Savage/CommunicationsAndSensors/SeaWeb/AcousticTransmissionCylinderExample.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. -->