<
Viewpoint description='
Sound spheroid approximating ellipsoid volume'
orientation='
1 0 0 -0.2'
position='
0 40 200'/>
<
Viewpoint description='
center'
orientation='
0 1 0 -1.57'
position='
0 0 0'/>
<
NavigationInfo speed='
10'
type='
"WALK" "ANY"'
transitionType='
"ANIMATE"'
transitionTime='
1.0'/>
<
Sound DEF='
Audible'
direction='
1 0 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>
<
Material DEF='
MinFootprintMaterial'
diffuseColor='
0.8 0 0'/>
</
Appearance>
</
Shape>
<
Collision enabled='
false'>
<
Shape>
<
Sphere/>
<
Appearance>
<
Material DEF='
MinSpheroidMaterial'
diffuseColor='
0.8 0 0'
transparency='
0.5'/>
</
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 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>
<
Material DEF='
MaxFootprintMaterial'
diffuseColor='
1 0.894118 0.341176'/>
</
Appearance>
</
Shape>
<
Collision enabled='
false'>
<
Shape>
<
Sphere/>
<
Appearance>
<
Material DEF='
MaxSpheroidMaterial'
diffuseColor='
1 0.894118 0.341176'
transparency='
0.75'/>
</
Appearance>
</
Shape>
</
Collision>
</
Transform>
<!-- Author-assist prototype from Savage X3D model archive -->
<
ExternProtoDeclare name='
GridXZ'
url='
"
../../Savage/Tools/Authoring/GridXZPrototype.x3d#GridXZ"
"
../../../Savage/Tools/Authoring/GridXZPrototype.x3d#GridXZ"
"
https://savage.nps.edu/Savage/Tools/Authoring/GridXZPrototype.x3d#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'
containerField='
children'>
<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>