Skip to content
Snippets Groups Projects
SeaWebBuoyExample.x3d 9.82 KiB
Newer Older
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE X3D PUBLIC "ISO//Web3D//DTD X3D 3.3//EN" "https://www.web3d.org/specifications/x3d-3.3.dtd">
<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'>
  <head>
    <meta content='SeaWebBuoyExample.x3d' name='title'/>
    <meta content='An example scene with 2 SeaWeb buoys.' name='description'/>
Brutzman, Don's avatar
Brutzman, Don committed
    <meta content='Oliver Tan' name='creator'/>
    <meta content='Don Brutzman' name='creator'/>
    <meta content='7 June 2004' name='created'/>
Brutzman, Don's avatar
Brutzman, Don committed
    <meta content='5 June 2024' name='modified'/>
    <meta content='fix type mismatches!' name='TODO'/>
    <meta content='SeaWeb, buoy, repeater' name='subject'/>
    <meta content='https://savage.nps.edu/Savage/CommunicationsAndSensors/SeaWeb/SeaWebBuoyExample.x3d' name='identifier'/>
Brutzman, Don's avatar
Brutzman, Don committed
    <meta content='X3D-Edit 4.0, https://savage.nps.edu/X3D-Edit' name='generator'/>
    <meta content='../../license.html' name='license'/>
  </head>
  <!-- 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 -->
  <Scene>
    <WorldInfo title='SeaWebBuoyExample.x3d'/>
    <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"'>
      <field accessType='inputOnly' appinfo='Position of buoy.' name='set_position' type='SFVec3f'/>
      <field accessType='initializeOnly' appinfo='Position of buoy.' name='position' type='SFVec3f'/>
      <field accessType='inputOnly' appinfo='Position of target of transmission.' name='set_targetPosition' type='SFVec3f'/>
      <field accessType='initializeOnly' appinfo='Position of target of transmission.' name='targetPosition' type='SFVec3f'/>
      <field accessType='inputOnly' appinfo='Id number of target.' name='set_targetIdNumber' type='SFInt32'/>
      <field accessType='initializeOnly' appinfo='Id number of target.' name='targetIdNumber' type='SFInt32'/>
      <field accessType='inputOnly' appinfo='Enable buoy for transmission.' name='set_enabled' type='SFBool'/>
      <field accessType='initializeOnly' appinfo='Enable buoy for transmission.' name='enabled' type='SFBool'/>
      <field accessType='inputOnly' appinfo='Start transmission.' name='set_activated' type='SFBool'/>
      <field accessType='initializeOnly' appinfo='Start transmission.' name='activated' type='SFBool'/>
      <field accessType='inputOnly' appinfo='Duration in seconds needed to transmit message (does not include transmissionTimeDelay or propagation delay).' name='set_transmissionDuration' type='SFTime'/>
      <field accessType='initializeOnly' appinfo='Duration in seconds needed to transmit message (does not include transmissionTimeDelay or propagation delay).' name='transmissionDuration' type='SFTime'/>
      <field accessType='inputOnly' appinfo='Time delay before transmission begins.' name='set_transmissionTimeDelay' type='SFTime'/>
      <field accessType='initializeOnly' appinfo='Time delay before transmission begins.' name='transmissionTimeDelay' type='SFTime'/>
      <field accessType='inputOnly' appinfo='Select between directional (true) or omni-directional (false) transmission.' name='set_directionalTransmission' type='SFBool'/>
      <field accessType='initializeOnly' appinfo='Select between directional (true) or omni-directional (false) transmission.' name='directionalTransmission' type='SFBool'/>
      <field accessType='inputOnly' appinfo='Determine which buoy type to use. "Racom" for Racom Buoy. "Telesonar" for Telesonar Repeater.' name='set_buoyType' type='SFString'/>
      <field accessType='initializeOnly' appinfo='Determine which buoy type to use. "Racom" for Racom Buoy. "Telesonar" for Telesonar Repeater.' name='buoyType' type='SFString'/>
      <field accessType='inputOnly' name='set_textMessage' type='MFString'/>
      <field accessType='initializeOnly' name='textMessage' type='MFString'/>
      <field accessType='inputOutput' name='textMessageColor' type='SFColor'/>
      <field accessType='inputOnly' name='set_description' type='SFString'/>
      <field accessType='initializeOnly' name='description' type='SFString'/>
      <field accessType='initializeOnly' name='traceEnabled' type='SFBool'/>
    </ExternProtoDeclare>
    <Viewpoint description='SeaWeb buoys: click to test communications' fieldOfView='0.9' position='0 0 35'/>
    <ProtoInstance DEF='SeaWebBuoyInstance1' name='SeaWebBuoy'>
      <fieldValue name='position' value='-10 0 0'/>
      <fieldValue name='targetPosition' value='10 0 0'/>
      <fieldValue name='enabled' value='true'/>
      <fieldValue name='activated' value='false'/>
      <fieldValue name='transmissionDuration' value='5'/>
      <fieldValue name='transmissionTimeDelay' value='2'/>
      <fieldValue name='directionalTransmission' value='false'/>
      <fieldValue name='buoyType' value='Racom'/>
      <fieldValue name='textMessage' value='"Message left-to-right"'/>
      <fieldValue name='textMessageColor' value='1 0 0'/>
      <fieldValue name='description' value='SeaWeb Racom Buoy'/>
      <fieldValue name='traceEnabled' value='true'/>
    </ProtoInstance>
    <ProtoInstance DEF='SeaWebBuoyInstance2' name='SeaWebBuoy'>
      <fieldValue name='position' value='10 0 0'/>
      <fieldValue name='targetPosition' value='-10 0 0'/>
      <fieldValue name='enabled' value='true'/>
      <fieldValue name='activated' value='false'/>
      <fieldValue name='transmissionDuration' value='5'/>
      <fieldValue name='transmissionTimeDelay' value='0.5'/>
      <fieldValue name='directionalTransmission' value='true'/>
      <fieldValue name='buoyType' value='Telesonar'/>
      <fieldValue name='textMessage' value='"Message right-to-left"'/>
      <fieldValue name='textMessageColor' value='0 1 0'/>
      <fieldValue name='description' value='SeaWeb Telesonar Buoy'/>
      <fieldValue name='traceEnabled' value='true'/>
    </ProtoInstance>
    <Transform rotation='1 0 0 -0.15' translation='0 1 25'>
      <Transform translation='-4.5 -3 0'>
        <Billboard axisOfRotation='0 0 0'>
          <Group>
            <Shape>
              <Appearance DEF='TextAppearance'>
                <Material diffuseColor='.8 .8 0'/>
              </Appearance>
              <Text string='"Single 4 seconds" "left-right transmission" "with 2 second delay"'>
                <FontStyle justify='"MIDDLE" "MIDDLE"' size='0.4'/>
              </Text>
            </Shape>
            <Shape>
              <Appearance DEF='TransparentAppearance'>
                <Material transparency='1'/>
              </Appearance>
              <Box size='3.4 1.3 0.01'/>
            </Shape>
Brutzman, Don's avatar
Brutzman, Don committed
            <TouchSensor DEF='SingleTransmissionTextTouch' description='Single Transmission Text is the simplest test'/>
            <IntegerTrigger DEF='TransmissionDuration2' integerKey='4'/>
            <ROUTE fromField='isActive' fromNode='SingleTransmissionTextTouch' toField='set_boolean' toNode='TransmissionDuration2'/>
            <ROUTE fromField='triggerValue' fromNode='TransmissionDuration2' toField='set_transmissionDuration' toNode='SeaWebBuoyInstance1'/>
            <ROUTE fromField='isActive' fromNode='SingleTransmissionTextTouch' toField='set_activated' toNode='SeaWebBuoyInstance1'/>
          </Group>
        </Billboard>
      </Transform>
      <Transform translation='0 -3 0'>
        <Billboard axisOfRotation='0 0 0'>
          <Group>
            <Shape>
              <Appearance USE='TextAppearance'/>
              <Text string='"Single 1 second" "right-left transmission"'>
                <FontStyle justify='"MIDDLE" "MIDDLE"' size='0.4'/>
              </Text>
            </Shape>
            <Shape>
              <Appearance USE='TransparentAppearance'/>
              <Box size='3.2 1 0.01'/>
            </Shape>
            <TouchSensor DEF='SingleTransmissionTextTouch2' description='SingleTransmissionText2'/>
            <IntegerTrigger DEF='TransmissionDuration1' integerKey='1'/>
            <ROUTE fromField='isActive' fromNode='SingleTransmissionTextTouch2' toField='set_boolean' toNode='TransmissionDuration1'/>
            <ROUTE fromField='triggerValue' fromNode='TransmissionDuration1' toField='set_transmissionDuration' toNode='SeaWebBuoyInstance2'/>
            <ROUTE fromField='isActive' fromNode='SingleTransmissionTextTouch2' toField='set_activated' toNode='SeaWebBuoyInstance2'/>
          </Group>
        </Billboard>
      </Transform>
      <Transform translation='4.5 -3 0'>
        <Billboard axisOfRotation='0 0 0'>
          <Group>
            <Shape>
              <Appearance USE='TextAppearance'/>
              <Text string='"Single 3 second" " right-left transmission"'>
                <FontStyle justify='"MIDDLE" "MIDDLE"' size='0.4'/>
              </Text>
            </Shape>
            <Shape>
              <Appearance USE='TransparentAppearance'/>
              <Box size='3.2 1 0.01'/>
            </Shape>
            <IntegerTrigger DEF='TransmissionDurationRL2' integerKey='3'/>
            <TouchSensor DEF='Single3SecRLTransmissionTextTouch' description='Single3SecRLTransmissionText'/>
            <ROUTE fromField='isActive' fromNode='Single3SecRLTransmissionTextTouch' toField='set_boolean' toNode='TransmissionDurationRL2'/>
            <ROUTE fromField='triggerValue' fromNode='TransmissionDurationRL2' toField='set_transmissionDuration' toNode='SeaWebBuoyInstance2'/>
            <ROUTE fromField='isActive' fromNode='Single3SecRLTransmissionTextTouch' toField='set_activated' toNode='SeaWebBuoyInstance2'/>
          </Group>
        </Billboard>
      </Transform>
    </Transform>
  </Scene>
</X3D>