X3D Model Documentation: SeaWebBuoyExample.x3d

  1  <?xml version="1.0" encoding="UTF-8"?>
  2  <!DOCTYPE X3D PUBLIC "ISO//Web3D//DTD X3D 3.3//EN" "https://www.web3d.org/specifications/x3d-3.3.dtd">
  3  <X3D profile='Immersive' version='3.3 xmlns:xsd='http://www.w3.org/2001/XMLSchema-instance' xsd:noNamespaceSchemaLocation='https://www.web3d.org/specifications/x3d-3.3.xsd'>
  4       <head>
  5            <meta name='titlecontent='SeaWebBuoyExample.x3d'/>
  6            <meta name='descriptioncontent='An example scene with 2 SeaWeb buoys.'/>
  7            <meta name='creatorcontent='Oliver Tan'/>
  8            <meta name='creatorcontent='Don Brutzman'/>
  9            <meta name='createdcontent='7 June 2004'/>
 10            <meta name='modifiedcontent='5 June 2024'/>
 11            <meta name=' TODO content=' fix type mismatches! '/>
 12            <meta name='subjectcontent='SeaWeb, buoy, repeater'/>
 13            <meta name='identifiercontent='https://savage.nps.edu/Savage/CommunicationsAndSensors/SeaWeb/SeaWebBuoyExample.x3d'/>
 14            <meta name='generatorcontent='X3D-Edit 4.0, https://savage.nps.edu/X3D-Edit'/>
 15            <meta name='licensecontent='../../license.html'/>
 16       </head>
<!--

<!--
Event Graph ROUTE Table shows event connections.
-->

<!-- to top Index for DEF nodes: SeaWebBuoyInstance1, SeaWebBuoyInstance2, Single3SecRLTransmissionTextTouch, SingleTransmissionTextTouch, SingleTransmissionTextTouch2, TextAppearance, TransmissionDuration1, TransmissionDuration2, TransmissionDurationRL2, TransparentAppearance

Index for Viewpoint node: Viewpoint_1

Index for ExternProtoDeclare definition: SeaWebBuoy
-->
 17       <!-- Issue in Xj3D: org.web3d.vrml.lang.InvalidFieldConnectionException: The source field(TransmissionDuration2.triggerValue) type SFInt32 and destination field(SeaWebBuoyInstance1.set_transmissionDuration) type SFTime don't match. Line: 92 Column: 143 -->
 18       <Scene>
 19            <WorldInfo title='SeaWebBuoyExample.x3d'/>
 20            <ExternProtoDeclare name='SeaWebBuoy'   url=' "SeaWebBuoyPrototype.x3d#SeaWebBuoy" "https://savage.nps.edu/Savage/CommunicationsAndSensors/SeaWeb/SeaWebBuoyPrototype.x3d#SeaWebBuoy" "SeaWebBuoyPrototype.wrl#SeaWebBuoy" "https://savage.nps.edu/Savage/CommunicationsAndSensors/SeaWeb/SeaWebBuoyPrototype.wrl#SeaWebBuoy" '>
 21                 <field name='set_positiontype='SFVec3faccessType='inputOnly'
                appinfo='Position of buoy.'/>
 22                 <field name='positiontype='SFVec3faccessType='initializeOnly'
                appinfo='Position of buoy.'/>
 23                 <field name='set_targetPositiontype='SFVec3faccessType='inputOnly'
                appinfo='Position of target of transmission.'/>
 24                 <field name='targetPositiontype='SFVec3faccessType='initializeOnly'
                appinfo='Position of target of transmission.'/>
 25                 <field name='set_targetIdNumbertype='SFInt32accessType='inputOnly'
                appinfo='Id number of target.'/>
 26                 <field name='targetIdNumbertype='SFInt32accessType='initializeOnly'
                appinfo='Id number of target.'/>
 27                 <field name='set_enabledtype='SFBoolaccessType='inputOnly'
                appinfo='Enable buoy for transmission.'/>
 28                 <field name='enabledtype='SFBoolaccessType='initializeOnly'
                appinfo='Enable buoy for transmission.'/>
 29                 <field name='set_activatedtype='SFBoolaccessType='inputOnly'
                appinfo='Start transmission.'/>
 30                 <field name='activatedtype='SFBoolaccessType='initializeOnly'
                appinfo='Start transmission.'/>
 31                 <field name='set_transmissionDurationtype='SFTimeaccessType='inputOnly'
                appinfo='Duration in seconds needed to transmit message (does not include transmissionTimeDelay or propagation delay).'/>
 32                 <field name='transmissionDurationtype='SFTimeaccessType='initializeOnly'
                appinfo='Duration in seconds needed to transmit message (does not include transmissionTimeDelay or propagation delay).'/>
 33                 <field name='set_transmissionTimeDelaytype='SFTimeaccessType='inputOnly'
                appinfo='Time delay before transmission begins.'/>
 34                 <field name='transmissionTimeDelaytype='SFTimeaccessType='initializeOnly'
                appinfo='Time delay before transmission begins.'/>
 35                 <field name='set_directionalTransmissiontype='SFBoolaccessType='inputOnly'
                appinfo='Select between directional (true) or omni-directional (false) transmission.'/>
 36                 <field name='directionalTransmissiontype='SFBoolaccessType='initializeOnly'
                appinfo='Select between directional (true) or omni-directional (false) transmission.'/>
 37                 <field name='set_buoyTypetype='SFStringaccessType='inputOnly'
                appinfo='Determine which buoy type to use. "Racom" for Racom Buoy. "Telesonar" for Telesonar Repeater.'/>
 38                 <field name='buoyTypetype='SFStringaccessType='initializeOnly'
                appinfo='Determine which buoy type to use. "Racom" for Racom Buoy. "Telesonar" for Telesonar Repeater.'/>
 39                 <field name='set_textMessagetype='MFStringaccessType='inputOnly'/>
 40                 <field name='textMessagetype='MFStringaccessType='initializeOnly'/>
 41                 <field name='textMessageColortype='SFColoraccessType='inputOutput'/>
 42                 <field name='set_descriptiontype='SFStringaccessType='inputOnly'/>
 43                 <field name='descriptiontype='SFStringaccessType='initializeOnly'/>
 44                 <field name='traceEnabledtype='SFBoolaccessType='initializeOnly'/>
 45            </ExternProtoDeclare>
 46            <Viewpoint description='SeaWeb buoys: click to test communicationsfieldOfView='0.9position='0 0 35'/>
 47 
          <!-- ROUTE information for SeaWebBuoyInstance1 node:  [from TransmissionDuration2.triggerValue to set_transmissionDuration ] [from SingleTransmissionTextTouch.isActive to set_activated ] -->
          <ProtoInstance name='SeaWebBuoyDEF='SeaWebBuoyInstance1'>
 48                 <fieldValue name='positionvalue='-10 0 0'/>
 49                 <fieldValue name='targetPositionvalue='10 0 0'/>
 50                 <fieldValue name='enabledvalue='true'/>
 51                 <fieldValue name='activatedvalue='false'/>
 52                 <fieldValue name='transmissionDurationvalue='5'/>
 53                 <fieldValue name='transmissionTimeDelayvalue='2'/>
 54                 <fieldValue name='directionalTransmissionvalue='false'/>
 55                 <fieldValue name='buoyTypevalue='Racom'/>
 56                 <fieldValue name='textMessagevalue='"Message left-to-right"'/>
 57                 <fieldValue name='textMessageColorvalue='1 0 0'/>
 58                 <fieldValue name='descriptionvalue='SeaWeb Racom Buoy'/>
 59                 <fieldValue name='traceEnabledvalue='true'/>
 60            </ProtoInstance>
 61 
 62                 <fieldValue name='positionvalue='10 0 0'/>
 63                 <fieldValue name='targetPositionvalue='-10 0 0'/>
 64                 <fieldValue name='enabledvalue='true'/>
 65                 <fieldValue name='activatedvalue='false'/>
 66                 <fieldValue name='transmissionDurationvalue='5'/>
 67                 <fieldValue name='transmissionTimeDelayvalue='0.5'/>
 68                 <fieldValue name='directionalTransmissionvalue='true'/>
 69                 <fieldValue name='buoyTypevalue='Telesonar'/>
 70                 <fieldValue name='textMessagevalue='"Message right-to-left"'/>
 71                 <fieldValue name='textMessageColorvalue='0 1 0'/>
 72                 <fieldValue name='descriptionvalue='SeaWeb Telesonar Buoy'/>
 73                 <fieldValue name='traceEnabledvalue='true'/>
 74            </ProtoInstance>
 75            <Transform rotation='1 0 0 -0.15translation='0 1 25'>
 76                 <Transform translation='-4.5 -3 0'>
 77                      <Billboard axisOfRotation='0 0 0'>
 78                           <Group>
 79                                <Shape>
 80 
                                   <!-- Appearance TextAppearance is a DEF node that has 2 USE nodes: USE_1, USE_2 -->
                                   <Appearance DEF='TextAppearance'>
 81                                          <Material diffuseColor='.8 .8 0'/>
 82                                     </Appearance>
 83                                     <Text string='"Single 4 seconds" "left-right transmission" "with 2 second delay"'>
 84                                          <FontStyle justify='"MIDDLE" "MIDDLE"size='0.4'/>
 85                                     </Text>
 86                                </Shape>
 87                                <Shape>
 88 
                                   <!-- Appearance TransparentAppearance is a DEF node that has 2 USE nodes: USE_1, USE_2 -->
                                   <Appearance DEF='TransparentAppearance'>
 89                                          <Material transparency='1'/>
 90                                     </Appearance>
 91                                     <Box size='3.4 1.3 0.01'/>
 92                                </Shape>
 93 
                              <!-- ROUTE information for SingleTransmissionTextTouch node:  [from isActive to TransmissionDuration2.set_boolean ] [from isActive to SeaWebBuoyInstance1.set_activated ] -->
                              <TouchSensor DEF='SingleTransmissionTextTouchdescription='Single Transmission Text is the simplest test'/>
 94 
                              <!-- ROUTE information for TransmissionDuration2 node:  [from SingleTransmissionTextTouch.isActive to set_boolean ] [from triggerValue to SeaWebBuoyInstance1.set_transmissionDuration ] -->
                              <IntegerTrigger DEF='TransmissionDuration2integerKey='4'/>
 95                                < ROUTE  fromNode='SingleTransmissionTextTouch' fromField='isActive' toNode='TransmissionDuration2' toField='set_boolean'/>
 96                                < ROUTE  fromNode='TransmissionDuration2' fromField='triggerValue' toNode='SeaWebBuoyInstance1' toField='set_transmissionDuration'/>
 97                                < ROUTE  fromNode='SingleTransmissionTextTouch' fromField='isActive' toNode='SeaWebBuoyInstance1' toField='set_activated'/>
 98                           </Group>
 99                      </Billboard>
100                 </Transform>
101                 <Transform translation='0 -3 0'>
102                      <Billboard axisOfRotation='0 0 0'>
103                           <Group>
104                                <Shape>
105                                     <Appearance USE='TextAppearance'/>
106                                     <Text string='"Single 1 second" "right-left transmission"'>
107                                          <FontStyle justify='"MIDDLE" "MIDDLE"size='0.4'/>
108                                     </Text>
109                                </Shape>
110                                <Shape>
111                                     <Appearance USE='TransparentAppearance'/>
112                                     <Box size='3.2 1 0.01'/>
113                                </Shape>
114 
                              <!-- ROUTE information for SingleTransmissionTextTouch2 node:  [from isActive to TransmissionDuration1.set_boolean ] [from isActive to SeaWebBuoyInstance2.set_activated ] -->
                              <TouchSensor DEF='SingleTransmissionTextTouch2description='SingleTransmissionText2'/>
115 
                              <!-- ROUTE information for TransmissionDuration1 node:  [from SingleTransmissionTextTouch2.isActive to set_boolean ] [from triggerValue to SeaWebBuoyInstance2.set_transmissionDuration ] -->
                              <IntegerTrigger DEF='TransmissionDuration1integerKey='1'/>
116                                < ROUTE  fromNode='SingleTransmissionTextTouch2' fromField='isActive' toNode='TransmissionDuration1' toField='set_boolean'/>
117                                < ROUTE  fromNode='TransmissionDuration1' fromField='triggerValue' toNode='SeaWebBuoyInstance2' toField='set_transmissionDuration'/>
118                                < ROUTE  fromNode='SingleTransmissionTextTouch2' fromField='isActive' toNode='SeaWebBuoyInstance2' toField='set_activated'/>
119                           </Group>
120                      </Billboard>
121                 </Transform>
122                 <Transform translation='4.5 -3 0'>
123                      <Billboard axisOfRotation='0 0 0'>
124                           <Group>
125                                <Shape>
126                                     <Appearance USE='TextAppearance'/>
127                                     <Text string='"Single 3 second" " right-left transmission"'>
128                                          <FontStyle justify='"MIDDLE" "MIDDLE"size='0.4'/>
129                                     </Text>
130                                </Shape>
131                                <Shape>
132                                     <Appearance USE='TransparentAppearance'/>
133                                     <Box size='3.2 1 0.01'/>
134                                </Shape>
135 
                              <!-- ROUTE information for TransmissionDurationRL2 node:  [from Single3SecRLTransmissionTextTouch.isActive to set_boolean ] [from triggerValue to SeaWebBuoyInstance2.set_transmissionDuration ] -->
                              <IntegerTrigger DEF='TransmissionDurationRL2integerKey='3'/>
136 
                              <!-- ROUTE information for Single3SecRLTransmissionTextTouch node:  [from isActive to TransmissionDurationRL2.set_boolean ] [from isActive to SeaWebBuoyInstance2.set_activated ] -->
                              <TouchSensor DEF='Single3SecRLTransmissionTextTouchdescription='Single3SecRLTransmissionText'/>
137                                < ROUTE  fromNode='Single3SecRLTransmissionTextTouch' fromField='isActive' toNode='TransmissionDurationRL2' toField='set_boolean'/>
138                                < ROUTE  fromNode='TransmissionDurationRL2' fromField='triggerValue' toNode='SeaWebBuoyInstance2' toField='set_transmissionDuration'/>
139                                < ROUTE  fromNode='Single3SecRLTransmissionTextTouch' fromField='isActive' toNode='SeaWebBuoyInstance2' toField='set_activated'/>
140                           </Group>
141                      </Billboard>
142                 </Transform>
143            </Transform>
144       </Scene>
145  </X3D>
<!--

<!--
Event Graph ROUTE Table shows event connections.
-->

<!-- to top Index for DEF nodes: SeaWebBuoyInstance1, SeaWebBuoyInstance2, Single3SecRLTransmissionTextTouch, SingleTransmissionTextTouch, SingleTransmissionTextTouch2, TextAppearance, TransmissionDuration1, TransmissionDuration2, TransmissionDurationRL2, TransparentAppearance

Index for Viewpoint node: Viewpoint_1

Index for ExternProtoDeclare definition: SeaWebBuoy
-->
X3D Tooltips element index: Appearance, Billboard, Box, ExternProtoDeclare, field, fieldValue, FontStyle, Group, head, IntegerTrigger, Material, meta, ProtoInstance, ROUTE, Scene, Shape, Text, TouchSensor, Transform, Viewpoint, WorldInfo, X3D, accessType and type, XML data types, field types

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

Single3SecRLTransmissionTextTouch
TouchSensor
isActive
SFBool

ROUTE
event to
(1)
TransmissionDurationRL2
IntegerTrigger
set_boolean
SFBool
then
 
 
 
TransmissionDurationRL2
IntegerTrigger
triggerValue
SFInt32

ROUTE
event to
(2)
SeaWebBuoyInstance2
ProtoInstance
set_transmissionDuration
SFTime
Single3SecRLTransmissionTextTouch
TouchSensor
isActive
SFBool

ROUTE
event to
(1)
SeaWebBuoyInstance2
ProtoInstance
set_activated
SFBool

SingleTransmissionTextTouch
TouchSensor
isActive
SFBool

ROUTE
event to
(1)
TransmissionDuration2
IntegerTrigger
set_boolean
SFBool
then
 
 
 
TransmissionDuration2
IntegerTrigger
triggerValue
SFInt32

ROUTE
event to
(2)
SeaWebBuoyInstance1
ProtoInstance
set_transmissionDuration
SFTime
SingleTransmissionTextTouch
TouchSensor
isActive
SFBool

ROUTE
event to
(1)
SeaWebBuoyInstance1
ProtoInstance
set_activated
SFBool

SingleTransmissionTextTouch2
TouchSensor
isActive
SFBool

ROUTE
event to
(1)
TransmissionDuration1
IntegerTrigger
set_boolean
SFBool
then
 
 
 
TransmissionDuration1
IntegerTrigger
triggerValue
SFInt32

ROUTE
event to
(2)
SeaWebBuoyInstance2
ProtoInstance
set_transmissionDuration
SFTime
SingleTransmissionTextTouch2
TouchSensor
isActive
SFBool

ROUTE
event to
(1)
SeaWebBuoyInstance2
ProtoInstance
set_activated
SFBool

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

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