{ "X3D": {
    "encoding":"UTF-8",
    "@profile":"Immersive",
    "@version":"3.0",
    "@xsd:noNamespaceSchemaLocation":"https://www.web3d.org/specifications/x3d-3.0.xsd",
    "JSON schema":"https://www.web3d.org/specifications/x3d-4.0-JSONSchema.autogenerated.json",
    "head": {
        "meta": [
          {
            "@name":"title",
            "@content":"AcousticTransmissionCylinderExample.x3d"
          },
          {
            "@name":"description",
            "@content":"An example of an acoustic transmission cylinder, beamCount can be incremented or decremented by single pings"
          },
          {
            "@name":"creator",
            "@content":"Oliver Tan"
          },
          {
            "@name":"created",
            "@content":"11 May 2004"
          },
          {
            "@name":"modified",
            "@content":"20 October 2019"
          },
          {
            "@name":"subject",
            "@content":"Acoustic transmission"
          },
          {
            "@name":"identifier",
            "@content":"https://www.web3d.org/x3d/content/examples/Savage/CommunicationsAndSensors/SeaWeb/AcousticTransmissionCylinderExample.x3d"
          },
          {
            "@name":"generator",
            "@content":"X3D-Edit 3.2, https://www.web3d.org/x3d/tools/X3D-Edit"
          },
          {
            "@name":"license",
            "@content":"../../license.html"
          },
          {
            "@name":"translated",
            "@content":"21 April 2026"
          },
          {
            "@name":"generator",
            "@content":"X3dToJson.xslt, https://www.web3d.org/x3d/stylesheets/X3dToJson.html"
          },
          {
            "@name":"reference",
            "@content":"X3D JSON encoding: https://www.web3d.org/wiki/index.php/X3D_JSON_Encoding"
          }
        ]
    },
    "Scene": {
        "-children":[
          { "WorldInfo":
            {
              "@title":"AcousticTransmissionCylinderExample.x3d"
            }
          },
          { "Background":
            {
              "@skyColor":[0,0.02,0.2]
            }
          },
          { "NavigationInfo":
            {
              "@visibilityLimit":10000
            }
          },
          { "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://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"],
              "field": [
                {
                  "@name":"startTransmission",
                  "@accessType":"inputOnly",
                  "@appinfo":"Upon receipt of a boolean true event start a single (not continuous) transmission",
                  "@type":"SFBool"
                },
                {
                  "@name":"startContinuousTransmissions",
                  "@accessType":"inputOnly",
                  "@appinfo":"Upon receipt of a boolean true event start continuous transmissions",
                  "@type":"SFBool"
                },
                {
                  "@name":"set_range",
                  "@accessType":"inputOnly",
                  "@appinfo":"Propagation range in meters",
                  "@type":"SFFloat"
                },
                {
                  "@name":"defaultRange",
                  "@accessType":"initializeOnly",
                  "@appinfo":"Default propagation range in meters",
                  "@type":"SFFloat"
                },
                {
                  "@name":"transmissionPropagationSpeed",
                  "@accessType":"initializeOnly",
                  "@appinfo":"Speed in meters / second",
                  "@type":"SFFloat"
                },
                {
                  "@name":"set_transmissionDuration",
                  "@accessType":"inputOnly",
                  "@appinfo":"Duration in seconds",
                  "@type":"SFFloat"
                },
                {
                  "@name":"transmissionDuration",
                  "@accessType":"initializeOnly",
                  "@appinfo":"Duration in seconds",
                  "@type":"SFFloat"
                },
                {
                  "@name":"set_beamCount",
                  "@accessType":"inputOnly",
                  "@appinfo":"Number of segmented sections in 360-degree cylindrical beam",
                  "@type":"SFInt32"
                },
                {
                  "@name":"beamCount",
                  "@accessType":"initializeOnly",
                  "@appinfo":"Number of segmented sections in 360-degree cylindrical beam",
                  "@type":"SFInt32"
                },
                {
                  "@name":"height",
                  "@accessType":"initializeOnly",
                  "@appinfo":"Height of acoustic cylinder in meters",
                  "@type":"SFFloat"
                },
                {
                  "@name":"set_color",
                  "@accessType":"inputOnly",
                  "@appinfo":"Color of cylinder",
                  "@type":"SFColor"
                },
                {
                  "@name":"color",
                  "@accessType":"initializeOnly",
                  "@appinfo":"Default color of cylinder",
                  "@type":"SFColor"
                },
                {
                  "@name":"traceEnabled",
                  "@accessType":"initializeOnly",
                  "@type":"SFBool"
                }
              ]
            }
          },
          { "ProtoInstance":
            {
              "@name":"AcousticTransmissionCylinder",
              "@DEF":"AcousticTransmissionCylinder",
              "fieldValue": [
                {
                  "@name":"defaultRange",
                  "@value":1000
                },
                {
                  "@name":"transmissionPropagationSpeed",
                  "@value":1500
                },
                {
                  "@name":"transmissionDuration",
                  "@value":3
                },
                {
                  "@name":"beamCount",
                  "@value":12
                },
                {
                  "@name":"height",
                  "@value":200
                },
                {
                  "@name":"color",
                  "@value":[1,1,0.2]
                },
                {
                  "@name":"traceEnabled",
                  "@value":true
                }
              ]
            }
          },
          { "Transform":
            {
              "@rotation":[1,0,0,-0.7],
              "@translation":[0,1000,1800],
              "-children":[
                { "Viewpoint":
                  {
                    "@description":"Acoustic Transmission Cylinder, 1800m"
                  }
                },
                { "Transform":
                  {
                    "@translation":[-4.5,-3,0],
                    "-children":[
                      { "Billboard":
                        {
                          "@axisOfRotation":[0,0,0],
                          "-children":[
                            { "Group":
                              {
                                "-children":[
                                  { "Shape":
                                    {
                                      "-appearance":
                                        { "Appearance":
                                          {
                                            "@DEF":"TextAppearance",
                                            "-material":
                                              { "Material":
                                                {
                                                  "@diffuseColor":[0.8,0.8,0]
                                                }
                                              }
                                          }
                                        },
                                      "-geometry":
                                        { "Text":
                                          {
                                            "@string":["Single 3 seconds","Transmission"],
                                            "-fontStyle":
                                              { "FontStyle":
                                                {
                                                  "@justify":["MIDDLE","MIDDLE"],
                                                  "@size":0.6
                                                }
                                              }
                                          }
                                        }
                                    }
                                  },
                                  { "Shape":
                                    {
                                      "-appearance":
                                        { "Appearance":
                                          {
                                            "@DEF":"TransparentAppearance",
                                            "-material":
                                              { "Material":
                                                {
                                                  "@transparency":1
                                                }
                                              }
                                          }
                                        },
                                      "-geometry":
                                        { "Box":
                                          {
                                            "@size":[4,1.3,0.01]
                                          }
                                        }
                                    }
                                  },
                                  { "TouchSensor":
                                    {
                                      "@DEF":"TransmissionTextTouchSingle3",
                                      "@description":"perform single 3-second transmission increase beamCount"
                                    }
                                  },
                                  { "TimeSensor":
                                    {
                                      "@DEF":"TriggerClockSingle3",
                                      "@cycleInterval":0.05
                                    }
                                  },
                                  { "ScalarInterpolator":
                                    {
                                      "@DEF":"TransmissionDurationTriggerSingle3",
                                      "@key":[0,1],
                                      "@keyValue":[3,3]
                                    }
                                  },
                                  { "ROUTE":
                                    {
                                      "@fromField":"touchTime",
                                      "@fromNode":"TransmissionTextTouchSingle3",
                                      "@toField":"startTime",
                                      "@toNode":"TriggerClockSingle3"
                                    }
                                  },
                                  { "ROUTE":
                                    {
                                      "@fromField":"fraction_changed",
                                      "@fromNode":"TriggerClockSingle3",
                                      "@toField":"set_fraction",
                                      "@toNode":"TransmissionDurationTriggerSingle3"
                                    }
                                  },
                                  { "ROUTE":
                                    {
                                      "@fromField":"value_changed",
                                      "@fromNode":"TransmissionDurationTriggerSingle3",
                                      "@toField":"set_transmissionDuration",
                                      "@toNode":"AcousticTransmissionCylinder"
                                    }
                                  },
                                  { "ROUTE":
                                    {
                                      "@fromField":"isActive",
                                      "@fromNode":"TransmissionTextTouchSingle3",
                                      "@toField":"startTransmission",
                                      "@toNode":"AcousticTransmissionCylinder"
                                    }
                                  }
                                ]
                              }
                            }
                          ]
                        }
                      }
                    ]
                  }
                },
                { "Transform":
                  {
                    "@translation":[0,-3,0],
                    "-children":[
                      { "Billboard":
                        {
                          "@axisOfRotation":[0,0,0],
                          "-children":[
                            { "Group":
                              {
                                "-children":[
                                  { "Shape":
                                    {
                                      "-appearance":
                                        { "Appearance":
                                          {
                                            "@USE":"TextAppearance"
                                          }
                                        },
                                      "-geometry":
                                        { "Text":
                                          {
                                            "@string":["Single 1 second","Transmission"],
                                            "-fontStyle":
                                              { "FontStyle":
                                                {
                                                  "@justify":["MIDDLE","MIDDLE"],
                                                  "@size":0.6
                                                }
                                              }
                                          }
                                        }
                                    }
                                  },
                                  { "Shape":
                                    {
                                      "-appearance":
                                        { "Appearance":
                                          {
                                            "@USE":"TransparentAppearance"
                                          }
                                        },
                                      "-geometry":
                                        { "Box":
                                          {
                                            "@size":[4,1.3,0.01]
                                          }
                                        }
                                    }
                                  },
                                  { "TouchSensor":
                                    {
                                      "@DEF":"TransmissionTextTouchSingle1",
                                      "@description":"perform single 3-second transmission decrease beamCount"
                                    }
                                  },
                                  { "TimeSensor":
                                    {
                                      "@DEF":"TriggerClockSingle1",
                                      "@cycleInterval":0.05
                                    }
                                  },
                                  { "ScalarInterpolator":
                                    {
                                      "@DEF":"TransmissionDurationTriggerSingle1",
                                      "@key":[0,1],
                                      "@keyValue":[1,1]
                                    }
                                  },
                                  { "ROUTE":
                                    {
                                      "@fromField":"touchTime",
                                      "@fromNode":"TransmissionTextTouchSingle1",
                                      "@toField":"startTime",
                                      "@toNode":"TriggerClockSingle1"
                                    }
                                  },
                                  { "ROUTE":
                                    {
                                      "@fromField":"fraction_changed",
                                      "@fromNode":"TriggerClockSingle1",
                                      "@toField":"set_fraction",
                                      "@toNode":"TransmissionDurationTriggerSingle1"
                                    }
                                  },
                                  { "ROUTE":
                                    {
                                      "@fromField":"value_changed",
                                      "@fromNode":"TransmissionDurationTriggerSingle1",
                                      "@toField":"set_transmissionDuration",
                                      "@toNode":"AcousticTransmissionCylinder"
                                    }
                                  },
                                  { "ROUTE":
                                    {
                                      "@fromField":"isActive",
                                      "@fromNode":"TransmissionTextTouchSingle1",
                                      "@toField":"startTransmission",
                                      "@toNode":"AcousticTransmissionCylinder"
                                    }
                                  }
                                ]
                              }
                            }
                          ]
                        }
                      }
                    ]
                  }
                },
                { "Transform":
                  {
                    "@translation":[4.5,-3,0],
                    "-children":[
                      { "Billboard":
                        {
                          "@axisOfRotation":[0,0,0],
                          "-children":[
                            { "Group":
                              {
                                "-children":[
                                  { "Shape":
                                    {
                                      "-appearance":
                                        { "Appearance":
                                          {
                                            "@USE":"TextAppearance"
                                          }
                                        },
                                      "-geometry":
                                        { "Text":
                                          {
                                            "@string":["Continuous","Transmissions"],
                                            "-fontStyle":
                                              { "FontStyle":
                                                {
                                                  "@justify":["MIDDLE","MIDDLE"],
                                                  "@size":0.6
                                                }
                                              }
                                          }
                                        }
                                    }
                                  },
                                  { "Shape":
                                    {
                                      "-appearance":
                                        { "Appearance":
                                          {
                                            "@USE":"TransparentAppearance"
                                          }
                                        },
                                      "-geometry":
                                        { "Box":
                                          {
                                            "@size":[3.8,1.3,0.01]
                                          }
                                        }
                                    }
                                  },
                                  { "TouchSensor":
                                    {
                                      "@DEF":"ContinuousTransmissionTextTouch",
                                      "@description":"perform continuous transmissions"
                                    }
                                  },
                                  {
                                    "#comment":"Use previous duration, no further computation"
                                  },
                                  { "ROUTE":
                                    {
                                      "@fromField":"isActive",
                                      "@fromNode":"ContinuousTransmissionTextTouch",
                                      "@toField":"startContinuousTransmissions",
                                      "@toNode":"AcousticTransmissionCylinder"
                                    }
                                  }
                                ]
                              }
                            }
                          ]
                        }
                      }
                    ]
                  }
                },
                { "Group":
                  {
                    "@DEF":"BeamCountAnimationGroup",
                    "-children":[
                      { "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]
                        }
                      },
                      { "ROUTE":
                        {
                          "@fromField":"isActive",
                          "@fromNode":"TriggerClockSingle3",
                          "@toField":"next",
                          "@toNode":"BeamCounter"
                        }
                      },
                      { "ROUTE":
                        {
                          "@fromField":"isActive",
                          "@fromNode":"TriggerClockSingle1",
                          "@toField":"previous",
                          "@toNode":"BeamCounter"
                        }
                      },
                      { "ROUTE":
                        {
                          "@fromField":"value_changed",
                          "@fromNode":"BeamCounter",
                          "@toField":"set_beamCount",
                          "@toNode":"AcousticTransmissionCylinder"
                        }
                      }
                    ]
                  }
                },
                { "Transform":
                  {
                    "@translation":[-2,3.5,0],
                    "-children":[
                      { "Billboard":
                        {
                          "@axisOfRotation":[0,0,0],
                          "-children":[
                            { "Group":
                              {
                                "-children":[
                                  { "Shape":
                                    {
                                      "-appearance":
                                        { "Appearance":
                                          {
                                            "-material":
                                              { "Material":
                                                {
                                                  "@diffuseColor":[0.6,0.6,0.1]
                                                }
                                              }
                                          }
                                        },
                                      "-geometry":
                                        { "Text":
                                          {
                                            "@string":["Transmission Acoustic Cylinder Example","Distance = 1800m","Propagation Speed = 1500m/sec"],
                                            "-fontStyle":
                                              { "FontStyle":
                                                {
                                                  "@justify":["FIRST","MIDDLE"],
                                                  "@size":0.3,
                                                  "@style":"BOLD"
                                                }
                                              }
                                          }
                                        }
                                    }
                                  }
                                ]
                              }
                            }
                          ]
                        }
                      }
                    ]
                  }
                }
              ]
            }
          }
        ]
    }
  }
}