X3D Model Documentation: TomahawkPrototype.x3d

  1  <?xml version="1.0" encoding="UTF-8"?>
  2 
<!DOCTYPE X3D PUBLIC "ISO//Web3D//DTD X3D 3.0//EN" "https://www.web3d.org/specifications/x3d-3.0.dtd">
  3  <X3D profile='Immersive' version='3.0'  xmlns:xsd='http://www.w3.org/2001/XMLSchema-instance' xsd:noNamespaceSchemaLocation='https://www.web3d.org/specifications/x3d-3.0.xsd'>
  4       <head>
  5            <meta name='title' content='TomahawkPrototype.x3d'/>
  6            <meta name='description' content='BGM-109, Tomahawk Land Attack Missile prototype'/>
  7            <meta name='creator' content='James Harney'/>
  8            <meta name='created' content='4 September 2001'/>
  9            <meta name='modified' content='28 November 2019'/>
 10            <meta name='reference' content='https://www.fas.org/man/dod-101/sys/smart/bgm-109.htm'/>
 11            <meta name='reference' content='http://www.specialoperations.com/multimedia/sounds.html'/>
 12            <meta name='reference' content='http://www.specialoperations.com/multimedia/sounds.html'/>
 13            <meta name='reference' content=' See url "soundpermissions.html" for copyright info and use on missile1.au and exp03.au that are converted to missile1.wav and exp03.wav for use in this file/model '/>
 14            <meta name='reference' content='soundpermissions.html'/>
 15            <meta name='identifier' content='https://savage.nps.edu/Savage/Weapons/Missiles/TomahawkPrototype.x3d'/>
 16            <meta name='generator' content='X3D-Edit 3.2, https://savage.nps.edu/X3D-Edit'/>
 17            <meta name='license' content='../../license.html'/>
 18       </head>
<!--

<!--
Event Graph ROUTE Table shows event connections.
-->
<!-- to top Index for DEF nodes: BFIN, BOOSTER, BOOSTERFIN, BOOSTSECT, CONE, EXHAUST, EXHAUSTCLOCK, EXHINT, FINANGLE, FINANGLEPORT, FINCLOCK, FINCOLOR, FINPOSIT, FINPOSITPORT, Flames, MIDFIN, MISSILEBODY, PORTFIN, STBDFIN, TCLOCK, TimeFilter2, TLAM, TLAMCLOCK, TLAMCOLOR, TLAMSOUND

Index for ProtoDeclare definition: BGM-109
-->
 19       <Scene>
 20            <WorldInfo title='TomahawkPrototype.x3d'/>
 21            <ProtoDeclare name='BGM-109'>
 22                 <ProtoInterface>
 23                      <field name='STARTLAUNCH' type='SFBool' accessType='inputOnly'/>
 24                      <field name='THETIME' type='SFTime' accessType='inputOnly'/>
 25                 </ProtoInterface>
 26                 <ProtoBody>
 27                      <Transform DEF='TLAM' rotation='0 1 0 -1.57'>
 28                           <Transform>
 29                                <!-- Used with permission. See soundpermissions.html for details. -->
 30                                <Sound maxBack='50000' maxFront='50000'>
 31 
                                   <!-- ROUTE information for TLAMSOUND node:  [from TCLOCK.startTime to startTime ] [from TCLOCK.stopTime to stopTime ] -->
                                   <AudioClip DEF='TLAMSOUND' description='Tomahawk missile'   url=' "MISSILE1.wav" "https://savage.nps.edu/Savage/Weapons/Missiles/MISSILE1.wav" '/>
 32                                </Sound>
 33                                <Transform translation='0 -2.775 0'>
 34                                     <Group DEF='MISSILEBODY'>
 35                                          <Transform>
 36                                               <Shape>
 37 
                                                  <!-- Appearance TLAMCOLOR is a DEF node that has 1 USE node: USE_1 -->
                                                  <Appearance DEF='TLAMCOLOR'>
 38                                                         <Material diffuseColor='1 1 1' shininess='.7' specularColor='1 1 1'/>
 39                                                    </Appearance>
 40                                                    <Cylinder height='5.56' radius='.25905'/>
 41                                               </Shape>
 42                                          </Transform>
 43                                     </Group>
 44                                     <Transform rotation='0 0 1 -1.56' translation='-.27 2.5 0'>
 45                                          <Transform rotation='1 0 0 1.56'>
 46                                               <Shape>
 47                                                    <Text string='"TOMAHAWK"'>
 48                                                         <FontStyle size='.225' style='BOLD'/>
 49                                                    </Text>
 50                                                    <Appearance>
 51                                                         <Material diffuseColor='0 0 0'/>
 52                                                    </Appearance>
 53                                               </Shape>
 54                                          </Transform>
 55                                     </Transform>
 56                                     <Transform rotation='0 0 1 1.56' translation='.27 .25 0'>
 57                                          <Transform rotation='1 0 0 1.56'>
 58                                               <Shape>
 59                                                    <Text string='"U.S. NAVY"'>
 60                                                         <FontStyle size='.225' style='BOLD'/>
 61                                                    </Text>
 62                                                    <Appearance>
 63                                                         <Material diffuseColor='0 0 0'/>
 64                                                    </Appearance>
 65                                               </Shape>
 66                                          </Transform>
 67                                     </Transform>
 68                                </Transform>
 69                                <Transform>
 70                                     <Group DEF='CONE'>
 71                                          <Shape>
 72                                               <Appearance>
 73                                                    <Material diffuseColor='1 1 1' shininess='.7' specularColor='1 1 1'/>
 74                                               </Appearance>
 75                                               <Extrusion creaseAngle='1.785' crossSection='0.267 0.000 0.231 -0.134 0.134 -0.231 0.0 -0.267 -0.134 -0.231 -0.231 -0.134 -0.267 0.000 -0.231 0.134 -0.134 0.231 0.0 0.267 0.134 0.231 0.231 0.134 0.267 0.0' scale='1.00 1.00 0.95 0.95 0.88 0.88 0.76 0.76 0.48 0.48' spine='0.00 0.00 0.00 0.00 0.10 0.00 0.00 0.20 0.00 0.00 0.30 0.00 0.00 0.40 0.00'/>
 76                                          </Shape>
 77                                     </Group>
 78                                </Transform>
 79                                <Transform>
 80                                     <Group DEF='MIDFIN'>
 81 
                                        <!-- ROUTE information for STBDFIN node:  [from FINANGLE.value_changed to set_rotation ] [from FINPOSIT.value_changed to set_translation ] -->
                                        <Transform DEF='STBDFIN' rotation='0 0 1 -1.57' translation='-.25905 -3.5 0'>
 82                                               <Transform>
 83                                                    <Shape>
 84 
                                                       <!-- Appearance FINCOLOR is a DEF node that has 1 USE node: USE_1 -->
                                                       <Appearance DEF='FINCOLOR'>
 85                                                              <Material diffuseColor='.9 .9 .9'/>
 86                                                         </Appearance>
 87                                                         <IndexedFaceSet solid='false' coordIndex='0 1 2 3 4 -1'>
 88                                                              <Coordinate point='0 0 0 0 .5 0 1.2 .4 0 1.2 .1 0 0 0 0'/>
 89                                                         </IndexedFaceSet>
 90                                                    </Shape>
 91                                               </Transform>
 92                                          </Transform>
 93 
                                        <!-- ROUTE information for PORTFIN node:  [from FINANGLEPORT.value_changed to set_rotation ] [from FINPOSITPORT.value_changed to set_translation ] -->
                                        <Transform DEF='PORTFIN' rotation='0 0 1 1.57' translation='.25905 -3.5 0'>
 94                                               <Transform>
 95                                                    <Shape>
 96                                                         <Appearance>
 97                                                              <Material diffuseColor='.9 .9 .9'/>
 98                                                         </Appearance>
 99                                                         <IndexedFaceSet solid='false' coordIndex='0 1 2 3 4 -1'>
100                                                              <Coordinate point='0 0 0 0 .5 0 -1.2 .4 0 -1.2 .1 0 0 0 0'/>
101                                                         </IndexedFaceSet>
102                                                    </Shape>
103                                                    <Transform/>
104                                               </Transform>
105                                          </Transform>
106                                     </Group>
107                                </Transform>
108                                <Transform DEF='BOOSTSECT'>
109                                     <Group DEF='BOOSTER'>
110                                          <Transform translation='0 -5.91 0'>
111                                               <Shape>
112                                                    <Appearance USE='TLAMCOLOR'/>
113                                                    <Cylinder height='.69' radius='.25905'/>
114                                               </Shape>
115                                          </Transform>
116                                          <Group DEF='BOOSTERFIN'>
117                                               <Transform translation='.25905 -6.27 0'>
118 
                                                  <!-- Shape BFIN is a DEF node that has 3 USE nodes: USE_1, USE_2, USE_3 -->
                                                  <Shape DEF='BFIN'>
119                                                         <Appearance USE='FINCOLOR'/>
120                                                         <IndexedFaceSet solid='false' coordIndex='0 1 2 3 4 -1'>
121                                                              <Coordinate point='0 0 0 0 .5 0 .5 .35 0 .5 0 0 0 0 0'/>
122                                                         </IndexedFaceSet>
123                                                    </Shape>
124                                               </Transform>
125                                               <Transform rotation='0 1 0 1.57' translation='0 -6.27 -.25905'>
126                                                    <Shape USE='BFIN'/>
127                                               </Transform>
128                                               <Transform rotation='0 1 0 3.14' translation='-.25905 -6.27 0'>
129                                                    <Shape USE='BFIN'/>
130                                               </Transform>
131                                               <Transform rotation='0 1 0 -1.57' translation='0 -6.27 .25905'>
132                                                    <Shape USE='BFIN'/>
133                                               </Transform>
134                                          </Group>
135                                     </Group>
136 
                                   <!-- ROUTE information for EXHAUST node:  [from EXHINT.value_changed to set_scale ] -->
                                   <Transform DEF='EXHAUST' rotation='0 1 0 3.14' scale='0.5 0.5 0.5' translation='0 -8 0'>
137                                          <!-- Exhaust flames are from the torch example in the source book. -->
138 
                                        <!-- Shape Flames is a DEF node that has 2 USE nodes: USE_1, USE_2 -->
                                        <Shape DEF='Flames'>
139                                               <!-- No appearance, use emissive shading -->
140                                               <IndexedFaceSet coordIndex='0 1 2 -1 3 4 5 -1 6 7 8 -1'>
141                                                    <Coordinate point='0.25 0.0 0.00 0.15 1.0 0.10 0.05 0.0 0.15 0.18 0.0 0.05 0.00 1.2 0.05 -0.10 0.0 0.05 -0.00 0.0 0.15 -0.13 0.8 0.10 -0.25 -0.25 0.00'/>
142                                                    <Color color='1.0 0.0 0.0 0.9 0.5 0 1.0 0.0 0.0 0.9 0.3 0 1.0 1.0 0.0 0.9 0.3 0 0.7 0.1 0.2 0.9 0.8 0 1.0 0.0 0.0'/>
143                                               </IndexedFaceSet>
144                                               <Appearance>
145                                                    <Material transparency='.15'/>
146                                               </Appearance>
147                                          </Shape>
148                                          <Transform rotation='0 1 0 1.57' scale='0.9 0.9 1'>
149                                               <Shape USE='Flames'/>
150                                          </Transform>
151                                          <Transform rotation='0 1 0 -1.57' scale='0.9 0.9 1'>
152                                               <Shape USE='Flames'/>
153                                          </Transform>
154                                     </Transform>
155                                </Transform>
156                           </Transform>
157                           <Transform rotation='1 0 0 -.35' translation='0 -4.5 -.1'>
158                                <Shape>
159                                     <Box size='.25 .5 .4'/>
160                                     <Appearance>
161                                          <Material diffuseColor='.91 .91 .91'/>
162                                     </Appearance>
163                                </Shape>
164                           </Transform>
165 
                         <!-- ROUTE information for EXHINT node:  [from EXHAUSTCLOCK.fraction_changed to set_fraction ] [from value_changed to EXHAUST.set_scale ] -->
                         <PositionInterpolator DEF='EXHINT' key='0 .25 .5 .75 1' keyValue='1.4 1.4 1.4 2 2 2 2.5 2.5 2.5 2 2 2 1.4 1.4 1.4'/>
166 
                         <!-- ROUTE information for EXHAUSTCLOCK node:  [from TimeFilter2.startEventTime to set_startTime ] [from fraction_changed to EXHINT.set_fraction ] -->
                         <TimeSensor DEF='EXHAUSTCLOCK' loop='true'/>
167                           <TimeSensor DEF='TLAMCLOCK' cycleInterval='16' enabled='false'/>
168 
                         <!-- ROUTE information for TimeFilter2 node:  [from startEventTime to TCLOCK.set_startTime ] [from startEventTime to EXHAUSTCLOCK.set_startTime ] [from startEventTime to FINCLOCK.set_startTime ] -->
                         <Script DEF='TimeFilter2'>
169                                <field name='setStart' type='SFBool' accessType='inputOnly'/>
170                                <field name='InputTime' type='SFTime' accessType='inputOnly'/>
171                                <field name='startEventTime' type='SFTime' accessType='outputOnly'/>
172                                <IS>
173                                     <connect nodeField='setStart' protoField='STARTLAUNCH'/>
174                                     <connect nodeField='InputTime' protoField='THETIME'/>
175                                </IS>
  <![CDATA[
            
ecmascript:


function setStart ( value, InputTime ) {
                         
	startEventTime = InputTime;
	
}

          
]]>
177                           </Script>
178 
                         <!-- ROUTE information for FINCLOCK node:  [from TimeFilter2.startEventTime to set_startTime ] [from fraction_changed to FINANGLE.set_fraction ] [from fraction_changed to FINPOSIT.set_fraction ] [from fraction_changed to FINANGLEPORT.set_fraction ] [from fraction_changed to FINPOSITPORT.set_fraction ] -->
                         <TimeSensor DEF='FINCLOCK' cycleInterval='6'/>
179 
                         <!-- ROUTE information for TCLOCK node:  [from TimeFilter2.startEventTime to set_startTime ] [from startTime to TLAMSOUND.startTime ] [from stopTime to TLAMSOUND.stopTime ] -->
                         <TimeSensor DEF='TCLOCK' cycleInterval='28'/>
180 
                         <!-- ROUTE information for FINANGLE node:  [from FINCLOCK.fraction_changed to set_fraction ] [from value_changed to STBDFIN.set_rotation ] -->
                         <OrientationInterpolator DEF='FINANGLE' key='.7 1' keyValue='0 0 1 -1.57 0 0 1 0'/>
181 
                         <!-- ROUTE information for FINPOSIT node:  [from FINCLOCK.fraction_changed to set_fraction ] [from value_changed to STBDFIN.set_translation ] -->
                         <PositionInterpolator DEF='FINPOSIT' key='.7 1' keyValue='-.25905 -3.5 0 .25905 -3.5 0'/>
182 
                         <!-- ROUTE information for FINPOSITPORT node:  [from FINCLOCK.fraction_changed to set_fraction ] [from value_changed to PORTFIN.set_translation ] -->
                         <PositionInterpolator DEF='FINPOSITPORT' key='.7 1' keyValue='.25905 -3.5 0 -.25905 -3.5 0'/>
183 
                         <!-- ROUTE information for FINANGLEPORT node:  [from FINCLOCK.fraction_changed to set_fraction ] [from value_changed to PORTFIN.set_rotation ] -->
                         <OrientationInterpolator DEF='FINANGLEPORT' key='.7 1' keyValue='0 0 1 1.57 0 0 1 0'/>
184                      </Transform>
185                      < ROUTE  fromNode='TimeFilter2' fromField='startEventTime' toNode='TCLOCK' toField='set_startTime'/>
186                      < ROUTE  fromNode='TCLOCK' fromField='startTime' toNode='TLAMSOUND' toField='startTime'/>
187                      < ROUTE  fromNode='TCLOCK' fromField='stopTime' toNode='TLAMSOUND' toField='stopTime'/>
188                      < ROUTE  fromNode='TimeFilter2' fromField='startEventTime' toNode='EXHAUSTCLOCK' toField='set_startTime'/>
189                      < ROUTE  fromNode='EXHAUSTCLOCK' fromField='fraction_changed' toNode='EXHINT' toField='set_fraction'/>
190                      < ROUTE  fromNode='EXHINT' fromField='value_changed' toNode='EXHAUST' toField='set_scale'/>
191                      < ROUTE  fromNode='TimeFilter2' fromField='startEventTime' toNode='FINCLOCK' toField='set_startTime'/>
192                      < ROUTE  fromNode='FINCLOCK' fromField='fraction_changed' toNode='FINANGLE' toField='set_fraction'/>
193                      < ROUTE  fromNode='FINCLOCK' fromField='fraction_changed' toNode='FINPOSIT' toField='set_fraction'/>
194                      < ROUTE  fromNode='FINCLOCK' fromField='fraction_changed' toNode='FINANGLEPORT' toField='set_fraction'/>
195                      < ROUTE  fromNode='FINCLOCK' fromField='fraction_changed' toNode='FINPOSITPORT' toField='set_fraction'/>
196                      < ROUTE  fromNode='FINANGLE' fromField='value_changed' toNode='STBDFIN' toField='set_rotation'/>
197                      < ROUTE  fromNode='FINPOSIT' fromField='value_changed' toNode='STBDFIN' toField='set_translation'/>
198                      < ROUTE  fromNode='FINANGLEPORT' fromField='value_changed' toNode='PORTFIN' toField='set_rotation'/>
199                      < ROUTE  fromNode='FINPOSITPORT' fromField='value_changed' toNode='PORTFIN' toField='set_translation'/>
200                 </ProtoBody>
201            </ProtoDeclare>
202            <!-- ==================== -->
203            <Background skyColor='0.604 0.753 0.804'/>
204            <Anchor description='Tomahawk Example' parameter='"target=_blank"'   url=' "TomahawkExample.wrl" "../../Weapons/Missiles/TomahawkExample.wrl" "https://savage.nps.edu/Savage/Weapons/Missiles/TomahawkExample.wrl" "TomahawkExample.x3d" "../../Weapons/Missiles/TomahawkExample.x3d" "https://savage.nps.edu/Savage/Weapons/Missiles/TomahawkExample.x3d" '>
205                 <Shape>
206                      <Text string='"TomahawkPrototype" "is a prototype declaration file" "" "To see an example scene" "click on this text and view" "TomahawkExample"'>
207                           <FontStyle justify='"MIDDLE" "MIDDLE"'/>
208                      </Text>
209                      <Appearance/>
210                 </Shape>
211            </Anchor>
212       </Scene>
213  </X3D>
<!--

<!--
Event Graph ROUTE Table shows event connections.
-->
<!-- to top Index for DEF nodes: BFIN, BOOSTER, BOOSTERFIN, BOOSTSECT, CONE, EXHAUST, EXHAUSTCLOCK, EXHINT, FINANGLE, FINANGLEPORT, FINCLOCK, FINCOLOR, FINPOSIT, FINPOSITPORT, Flames, MIDFIN, MISSILEBODY, PORTFIN, STBDFIN, TCLOCK, TimeFilter2, TLAM, TLAMCLOCK, TLAMCOLOR, TLAMSOUND

Index for ProtoDeclare definition: BGM-109
-->
X3D Tooltips element index: Anchor, Appearance, AudioClip, Background, Box, Color, connect, Coordinate, Cylinder, Extrusion, field, FontStyle, Group, head, IndexedFaceSet, IS, Material, meta, OrientationInterpolator, PositionInterpolator, ProtoBody, ProtoDeclare, ProtoInterface, ROUTE, Scene, Script, Shape, Sound, Text, TimeSensor, Transform, WorldInfo, X3D, plus documentation for accessType definitions, type definitions, XML data types, and field types

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

TLAMCLOCK
TimeSensor
No ROUTE connection found for output events from this node. 

TimeFilter2
Script
startEventTime
SFTime
→
ROUTE
event to
(1)
TCLOCK
TimeSensor
set_startTime
SFTime
then
 
 
 
TCLOCK
TimeSensor
startTime
SFTime
→
ROUTE
event to
(2)
TLAMSOUND
AudioClip
startTime
SFTime
  then
 
 
 
TCLOCK
TimeSensor
stopTime
SFTime
→
ROUTE
event to
(2)
TLAMSOUND
AudioClip
stopTime
SFTime
TimeFilter2
Script
startEventTime
SFTime
→
ROUTE
event to
(1)
EXHAUSTCLOCK
TimeSensor
set_startTime
SFTime
then
 
 
 
EXHAUSTCLOCK
TimeSensor
fraction_changed
SFFloat
→
ROUTE
event to
(2)
EXHINT
PositionInterpolator
set_fraction
SFFloat
then
 
 
 
EXHINT
PositionInterpolator
value_changed
SFVec3f
→
ROUTE
event to
(3)
EXHAUST
Transform
set_scale
SFVec3f
TimeFilter2
Script
startEventTime
SFTime
→
ROUTE
event to
(1)
FINCLOCK
TimeSensor
set_startTime
SFTime
then
 
 
 
FINCLOCK
TimeSensor
fraction_changed
SFFloat
→
ROUTE
event to
(2)
FINANGLE
OrientationInterpolator
set_fraction
SFFloat
then
 
 
 
FINANGLE
OrientationInterpolator
value_changed
SFRotation
→
ROUTE
event to
(3)
STBDFIN
Transform
set_rotation
SFRotation
  then
 
 
 
FINCLOCK
TimeSensor
fraction_changed
SFFloat
→
ROUTE
event to
(2)
FINPOSIT
PositionInterpolator
set_fraction
SFFloat
then
 
 
 
FINPOSIT
PositionInterpolator
value_changed
SFVec3f
→
ROUTE
event to
(3)
STBDFIN
Transform
set_translation
SFVec3f
  then
 
 
 
FINCLOCK
TimeSensor
fraction_changed
SFFloat
→
ROUTE
event to
(2)
FINANGLEPORT
OrientationInterpolator
set_fraction
SFFloat
then
 
 
 
FINANGLEPORT
OrientationInterpolator
value_changed
SFRotation
→
ROUTE
event to
(3)
PORTFIN
Transform
set_rotation
SFRotation
  then
 
 
 
FINCLOCK
TimeSensor
fraction_changed
SFFloat
→
ROUTE
event to
(2)
FINPOSITPORT
PositionInterpolator
set_fraction
SFFloat
then
 
 
 
FINPOSITPORT
PositionInterpolator
value_changed
SFVec3f
→
ROUTE
event to
(3)
PORTFIN
Transform
set_translation
SFVec3f

line 204
Anchor
description='Tomahawk Example' 
User-interaction hint for this node. 

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/Weapons/Missiles/TomahawkPrototypeIndex.html -->
<!-- Version control at
https://gitlab.nps.edu/Savage/Savage/Weapons/Missiles/TomahawkPrototype.x3d -->

<!-- Color-coding legend: X3D terminology <X3dNode  DEF='idName' field='value'/> matches XML terminology <XmlElement  DEF='idName' attribute='value'/>
(Light-blue background: event-based behavior node or statement) (Grey background inside box: inserted documentation) (Magenta background: X3D Extensibility)
    <ProtoDeclare name='ProtoName'> <field name='fieldName'/> </ProtoDeclare> -->

to top <!-- For additional help information about X3D scenes, please see X3D Tooltips, X3D Resources, and X3D Scene Authoring Hints. -->