<WorldInfo title='SoundAudioClip.x3d'/>
<Viewpoint description='Sound spheroid approximating ellipsoid volume' orientation='1 0 0 -0.2' position='0 40 200'/>
<Viewpoint description='100m distant' orientation='1 0 0 -0.2' position='0 20 100'/>
<Viewpoint description='50m distant' orientation='1 0 0 -0.2' position='0 10 50'/>
<Viewpoint description='25m distant' orientation='1 0 0 -0.2' position='0 5 25'/>
<Viewpoint description='10m distant' orientation='1 0 0 -0.2' position='0 2 10'/>
<Viewpoint description='center' orientation='0 1 0 -1.57' position='0 2 0'/>
<NavigationInfo speed='10' type='"WALK" "ANY"'/>
<!-- Sound node is positioned and oriented in local coordinate reference frame of scene graph at origin of sound -->
<!-- Sound location y-value is 1.6 in order to match typical avatar height (in meters) -->
<Sound DEF='Audible' location='0 1.6 0' maxBack='20' maxFront='100' minBack='10' minFront='10' priority='1'>
</Sound>
<!-- minWidth = sqrt (minBack * minFront) = 10 -->
<!-- maxWidth = sqrt (maxBack * maxFront) = 45 -->
<!-- Approximate ellipsoidal footprints and envelope using Cylinders and Spheres, respectively -->
<!-- Minimum attenuation parameters 10, 10, 10 produce a Cylinder and Sphere with uniform scale -->
<Transform DEF='minShapes' scale='10 10 10'>
<Shape>
<Cylinder height='0.05'/>
<Appearance>
</Appearance>
</Shape>
<Collision enabled='false'>
<Shape>
<Sphere/>
<Appearance>
</Appearance>
</Shape>
</Collision>
</Transform>
<!-- Maximum attenuation parameters 20, 100, 45 produce a Cylinder and Sphere with non-uniform scale -->
<!-- Sound direction is x axis, so maximum-attenuation length = (100 + 20) = 120 and radius = 120 / 2 = 60 along x axis -->
<!-- and so width, height dimensions ~= maximum-attenuation halfwidth = maxWidth ~= 45 along y, z axes -->
<!-- Ellipsoid focus is (0 0 0) but geometric center of spheroidal approximation is (-maxBack + x radius) = (-20 + 60) = 40 along x axis -->
<Transform DEF='maxShapes' scale='60 45 45' translation='40 0 0'>
<Shape>
<Cylinder height='0.002'/>
<Appearance>
</Appearance>
</Shape>
<Collision enabled='false'>
<Shape>
<Sphere/>
<Appearance>
</Appearance>
</Shape>
</Collision>
</Transform>
<!-- Author-assist prototype from Savage X3D model archive -->
<ExternProtoDeclare name='GridXZ'
url='
"../../Savage/Tools/Authoring/GridXZPrototype.x3d#GridXZ"
"https://savage.nps.edu/Savage/Tools/Authoring/GridXZPrototype.x3d#GridXZ" "../../Savage/Tools/Authoring/GridXZPrototype.wrl#GridXZ"
"https://savage.nps.edu/Savage/Tools/Authoring/GridXZPrototype.wrl#GridXZ" '>
<field name='description' type='SFString' accessType='initializeOnly'/>
<field name='labelColor' type='SFColor' accessType='inputOutput'/>
<field name='scale' type='SFVec3f' accessType='inputOutput'
appinfo='default unscaled size: 10m by 10m'/>
<field name='labelsOffset' type='SFVec3f' accessType='inputOutput'
appinfo='label location offset (in meters) to improve readability'/>
<field name='originLabel' type='MFString' accessType='inputOutput'/>
<field name='WestLabel' type='MFString' accessType='inputOutput'
appinfo='-Z axis'/>
<field name='NorthWestLabel' type='MFString' accessType='inputOutput'/>
<field name='NorthLabel' type='MFString' accessType='inputOutput'
appinfo='+X axis'/>
<field name='NorthEastLabel' type='MFString' accessType='inputOutput'/>
<field name='EastLabel' type='MFString' accessType='inputOutput'
appinfo='+Z axis'/>
<field name='SouthEastLabel' type='MFString' accessType='inputOutput'/>
<field name='SouthLabel' type='MFString' accessType='inputOutput'
appinfo='-X axis'/>
<field name='SouthWestLabel' type='MFString' accessType='inputOutput'/>
</ExternProtoDeclare>
<!-- default values scaled up by factor of 10 in this instance -->
<ProtoInstance name='GridXZ'>
<fieldValue name='description' value='GridXZ'/>
<fieldValue name='labelColor' value='1 1 1'/>
<fieldValue name='scale' value='10 10 10'/>
<fieldValue name='labelsOffset' value='0 -0.5 0'/>
<fieldValue name='originLabel' value='"origin" "0 0 0"'/>
<fieldValue name='NorthLabel' value='"North" "-Z"'/>
<fieldValue name='NorthEastLabel' value='"100 0 -100"'/>
<fieldValue name='EastLabel' value='"East" "+X"'/>
<fieldValue name='SouthEastLabel' value='"100 0 100"'/>
<fieldValue name='SouthLabel' value='"South" "+Z"'/>
<fieldValue name='SouthWestLabel' value='"-100 0 100"'/>
<fieldValue name='WestLabel' value='"West" "-X"'/>
<fieldValue name='NorthWestLabel' value='"-100 0 -100"'/>
</ProtoInstance>