X3D Model Documentation: CanopyPrototype.x3d go to online X3D Example Archives model page

  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='https://www.w3.org/2001/XMLSchema-instance' xsd:noNamespaceSchemaLocation='https://www.web3d.org/specifications/x3d-3.0.xsd'>
  4       <head>
  5            <meta name='title' content=' CanopyPrototype.x3d '/>
  6            <meta name='description' content='This prototype performs canopy opening and closing.'/>
  7            <meta name='creator' content='Etsuko Lippi'/>
  8            <meta name='created' content='18 October 2001'/>
  9            <meta name='modified' content='16 April 2026'/>
 10            <meta name='reference' content='https://www.web3d.org/x3d/content/examples/Savage/AircraftFixedWing/F18BlueAngelUnitedStates/BlueAngelCanopy.jpg image preview 'image preview/>
 11            <meta name='reference' content='http://www.military.com/Content/MoreContent1?file=aboutba'/>
 12            <meta name='identifier' content=' https://www.web3d.org/x3d/content/examples/Savage/AircraftFixedWing/F18BlueAngelUnitedStates/CanopyPrototype.x3d '/>
 13            <meta name='generator' content='X3D-Edit 3.2, https://www.web3d.org/x3d/tools/X3D-Edit'/>
 14            <meta name='subject' content='canopy opening and closing, Prototype'/>
 15            <meta name='license' content='../../license.html'/>
 16       </head>
<!--

Event Graph ROUTE Table shows event connections.

--> <!-- to top DEF nodes index: CanopyColor, CanopyInterpolator, CanopyScript, CanopyTransform, Clock, CockpitFront

Index for Viewpoint node: Viewpoint_1

Index for ProtoDeclare definition: Canopy

-->
 17       <Scene>
 18            <WorldInfo title='CanopyPrototype.x3d'/>
 19            <ProtoDeclare name='Canopy'>
 20                 <ProtoInterface>
 21                      <field name='canopyOpen' type='SFBool' accessType='inputOnly' appinfo='boolean eventIn: true = canopy open false = canopy close.'/>
 22                      <field name='animationStartTime' type='SFTime' accessType='inputOnly'/>
 23                      <field name='canopyOut' type='SFBool' accessType='outputOnly'/>
 24                      <field name='traceEnabled' type='SFBool' value='false' accessType='initializeOnly'/>
 25                 </ProtoInterface>
 26                 <ProtoBody>
 27                      <Transform scale='1.4 1 1'>
 28                           <Viewpoint description='Canopy (click back to open, click front to close)' orientation='0 1 0 -1.57' position='0 0 -4'/>
 29                           <Transform DEF='CockpitFront' translation='3 0 0'>
 30                                <Shape>
 31 
                                   <!-- Appearance CanopyColor is a DEF node that has 1 USE node: USE_1 -->
                                   <Appearance DEF='CanopyColor'>
 32                                          <Material diffuseColor='0.3 0.4 0.8' transparency='0.85'/>
 33                                     </Appearance>
 34                                     <IndexedFaceSet creaseAngle='1.8' solid='false' coordIndex='9 300 10 -1 10 300 301 -1 301 306 10 -1 2 308 309 -1'>
 35                                          <Coordinate point='-0.35 -0.32 -6.71 -0.44 -0.17 -5.91 0 0.25 -5.9 0 0 -6.7 -0.35 -0.5 -6.7 -0.45 -0.5 -5.9 -0.44 -0.17 -5.91 -0.35 -0.32 -6.71 -0.44 0.11 -5.01 -0.32 0.23 -5 0 0.25 -5.9 -0.45 -0.5 -5 -0.45 -0.5 -4.55 -0.44 0.25 -4.56 -0.45 -0.5 -3.93 -0.44 0.31 -4.05 -0.34 0.36 -4.55 -0.26 0.57 -3.55 0.6 0.54 0.65 0.62 0.53 1.09 0.7 0.5 2.05 4.62 0.05 2.42 4.62 0.08 1.58 3.79 0.18 0.71 0.69 0.59 -0.95 0.64 0.57 -0.27 0.64 0.57 0 2.78 0.32 0 1.45 0.49 -0.92 0.19 0.79 4.91 0 0.85 6.5 0.11 0.79 6.5 -0.33 -0.54 -6.7 -0.34 -0.68 -5.9 0 -0.7 -6.7 0 -0.85 -5.9 -0.3 -0.8 -5 0 -0.95 -5 -0.3 -0.8 -4.55 0 -0.95 -4.55 -0.3 -0.8 -3.9 0 -0.95 -3.55 -0.3 -0.8 -3.55 0 -0.43 -7.22 0 -0.43 -7.22 0 -0.7 -6.7 -0.33 -0.54 -6.7 -0.69 0.28 -4.03 -0.83 0.5 -3.58 -0.89 -0.64 -3.91 -0.93 -0.63 -3.54 -1.1 0 -3.55 -1 -0.25 -3.95 0.75 0.6 -1.6 -0.65 -0.7 -2.6 0 -0.95 -1.8 -1.13 -0.35 -2.63 -1.13 0.25 -2.62 -1.13 -0.35 -2.63 -1.15 -0.35 -1.6 -1.15 0.25 -1.6 -1.13 0.25 -2.62 -0.96 0.25 -3.57 -0.8 0.6 -2.6 -0.8 0.25 -1.6 -0.8 0.6 -2.6 -0.85 0.25 -0.95 -0.85 -0.35 -0.95 -0.9 -0.35 0.65 -0.9 0.25 0.65 -0.87 0.25 0 0.03 0.45 7.14 0.22 0.57 7.14 0.22 0.68 7.14 0.03 0.8 7.14 -0.65 -0.35 0.65 -0.65 -0.35 1.1 -0.46 -0.85 -1.8 -0.5 -0.85 -1.6 -0.8 -0.35 -1.6 -0.75 -0.35 -1.8 0 -0.95 -1.6 -0.55 -0.84 -0.95 -0.85 -0.35 -0.95 0 -0.95 -0.95 -0.33 -0.88 0.65 -0.65 -0.35 0.65 0 -0.95 0.65 -0.33 -0.88 1.1 -0.65 -0.35 1.1 0 -0.95 1.1 -0.69 0.68 -2.61 -0.41 0.84 -1.6 0 0.95 -1.6 0 0.85 -2.65 -0.75 0.6 -1.6 -0.41 0.84 -1.6 -0.69 0.68 -2.61 -0.36 0.86 -0.95 0 0.95 -0.95 -0.75 0.6 -1.6 -0.67 0.64 -0.95 -0.34 0.85 0 0 0.92 0 -0.55 0.7 0 -0.31 0.78 2.05 0 0.85 2.05 0 0.85 -3.55 -0.26 0.74 -3.55 0 0.85 -2.65 0 0.4 6.87 0.25 0.55 6.87 -0.26 0.74 -3.55 -0.69 0.59 -0.95 -0.67 0.64 -0.95 -0.64 0.57 -0.27 -0.55 0.7 0 -0.65 0.35 3.45 -0.55 0.35 4 -0.4 0.74 4.01 -0.49 0.72 3.51 -0.2 0.8 4 -0.2 0.8 4.55 -0.19 0.79 4.91 0 0.85 4.9 0 0.85 4 -0.35 0.35 4.9 -0.19 0.79 4.91 -0.53 -0.23 3.52 -0.45 -0.18 4.02 0 -0.6 3.55 0 -0.5 4 -0.45 -0.18 4.02 -0.53 -0.23 3.52 -0.26 -0.16 4.92 0 -0.35 4.9 -0.26 -0.16 4.92 0 0.4 6.5 -0.35 0.35 4.9 0 0 6.4 -0.25 0.7 6.5 -0.25 0.55 6.5 0 0.4 6.5 -0.11 0.79 6.5 -0.65 0.25 1.1 -0.65 0.25 0.65 -0.66 0.54 0.48 -0.6 0.54 0.65 -0.59 0.64 0.65 0 -0.6 3.55 -0.65 0.25 1.1 0 0.85 3.55 -0.49 0.72 3.51 0 0.85 3.55 -0.31 0.78 2.05 -0.7 0.5 2.05 -0.7 0.5 2.05 -0.62 0.6 1.09 -0.62 0.53 1.09 0 0.85 6.5 -0.25 0.7 6.87 0 0.85 6.87 -0.25 0.55 6.87 -0.22 0.68 7.14 -0.03 0.8 7.14 -0.22 0.57 7.14 -0.03 0.45 7.14 -1.45 0.49 -0.92 -0.11 0.79 6.5 -0.64 0.57 0 -2.78 0.32 0 -4.62 0.05 2.42 -4.62 0.08 1.58 -3.79 0.18 0.71 0 0 -6.7 0.44 -0.17 -5.91 0.35 -0.32 -6.71 0.45 -0.5 -5.9 0.35 -0.5 -6.7 0.32 0.23 -5 0.44 0.11 -5.01 0.45 -0.5 -5 0.44 0.25 -4.56 0.45 -0.5 -4.55 0.44 0.31 -4.05 0.45 -0.5 -3.93 0.34 0.36 -4.55 0.26 0.57 -3.55 0.22 0.68 7.14 0.22 0.57 7.14 0.25 0.55 6.87 0.25 0.7 6.87 0.25 0.7 6.87 0 0.4 6.87 0.25 0.55 6.5 0.25 0.55 6.5 0.25 0.7 6.5 0.11 0.79 6.5 0.65 0.35 3.45 0.65 0.25 1.1 0.7 0.5 2.05 0.34 -0.68 -5.9 0.33 -0.54 -6.7 0.3 -0.8 -5 0.3 -0.8 -4.55 0.3 -0.8 -3.9 0.3 -0.8 -3.55 0.35 -0.32 -6.71 0.35 -0.5 -6.7 0.33 -0.54 -6.7 0.83 0.5 -3.58 0.69 0.28 -4.03 1 -0.25 -3.95 1.1 0 -3.55 0.93 -0.63 -3.54 0.89 -0.64 -3.91 0.65 0.25 1.1 0.62 0.6 1.09 0.65 -0.7 -2.6 1.13 -0.35 -2.63 1.15 0.25 -1.6 1.15 -0.35 -1.6 1.13 -0.35 -2.63 1.13 0.25 -2.62 1.13 0.25 -2.62 0.96 0.25 -3.57 0.8 0.25 -1.6 0.8 0.6 -2.6 0.8 0.6 -2.6 0.49 0.72 3.51 0.85 0.25 -0.95 0.87 0.25 0 0.9 0.25 0.65 0.9 -0.35 0.65 0.85 -0.35 -0.95 0.31 0.78 2.05 0.9 -0.35 0.65 0.65 -0.35 1.1 0.65 -0.35 0.65 0.85 -0.35 -0.95 0.75 -0.35 -1.8 0.8 -0.35 -1.6 0.5 -0.85 -1.6 0.46 -0.85 -1.8 0.55 -0.84 -0.95 0.33 -0.88 0.65 0.33 -0.88 1.1 0.41 0.84 -1.6 0.69 0.68 -2.61 0.69 0.68 -2.61 0.41 0.84 -1.6 0.36 0.86 -0.95 0.67 0.64 -0.95 0.75 0.6 -1.6 0.34 0.85 0 0.55 0.7 0 0.26 0.74 -3.55 0.26 0.74 -3.55 0.67 0.64 -0.95 0.55 0.7 0 0.59 0.64 0.65 0.66 0.54 0.48 0.4 0.74 4.01 0.55 0.35 4 0.2 0.8 4.55 0.2 0.8 4 0.19 0.79 4.91 0.35 0.35 4.9 0.45 -0.18 4.02 0.53 -0.23 3.52 0 -0.5 4 0.55 0.35 4 0.35 0.35 4.9 0.26 -0.16 4.92 0.45 -0.18 4.02 0.65 0.25 0.65 0.33 -0.88 1.1 0.65 -0.35 1.1 0 -0.6 5.95 0 -0.45 6.2 0.2 0.8 4 0.34 0.85 0 0.31 0.78 2.05 0.8 -0.35 -1.6 0.75 -0.35 -1.8 2.2 0.15 6.7 2.2 0.15 6.35 0.2 0.8 4.55 0 1.7 4.9 0 2.4 5.65 0 2.75 6.15 0 2.85 6.7 0 0.95 4 0 0.95 3.55 -0.8 -0.35 -1.6 -0.75 -0.35 -1.8 -0.34 0.85 0 -0.4 0.74 4.01 -2.2 0.15 6.7 -2.2 0.15 6.35 -0.33 0.52 -5 0 0.85 -4.85 -0.34 0.68 -4.55 0 0.91 -3.44 0 0.98 -4.4 0.34 0.68 -4.55 0.33 0.52 -5 0 0.91 -3.44 0.33 0.52 -5 0.32 0.23 -5 0 0.25 5.9'/>
 36                                     </IndexedFaceSet>
 37                                </Shape>
 38                           </Transform>
 39                           <Group>
 40 
                              <!-- ROUTE information for CanopyTransform node:  [from CanopyInterpolator.value_changed to set_rotation ] -->
                              <Transform DEF='CanopyTransform' center='0 0 -3.5'>
 41                                     <Transform translation='3 0 0'>
 42                                          <Shape>
 43                                               <Appearance USE='CanopyColor'/>
 44                                               <IndexedFaceSet creaseAngle='1.8' solid='false' coordIndex='16 17 112 302 -1 301 304 305 306 -1 306 305 186 179 -1 304 307 257 305 -1 305 257 187 186 -1 302 112 307 304 -1 9 16 302 300 -1 300 302 304 301 -1 17 112 310 -1 112 307 310 -1 307 257 310 -1 257 187 310 -1'>
 45                                                    <Coordinate point='-0.35 -0.32 -6.71 -0.44 -0.17 -5.91 0 0.25 -5.9 0 0 -6.7 -0.35 -0.5 -6.7 -0.45 -0.5 -5.9 -0.44 -0.17 -5.91 -0.35 -0.32 -6.71 -0.44 0.11 -5.01 -0.32 0.23 -5 0 0.25 -5.9 -0.45 -0.5 -5 -0.45 -0.5 -4.55 -0.44 0.25 -4.56 -0.45 -0.5 -3.93 -0.44 0.31 -4.05 -0.34 0.36 -4.55 -0.26 0.57 -3.55 0.6 0.54 0.65 0.62 0.53 1.09 0.7 0.5 2.05 4.62 0.05 2.42 4.62 0.08 1.58 3.79 0.18 0.71 0.69 0.59 -0.95 0.64 0.57 -0.27 0.64 0.57 0 2.78 0.32 0 1.45 0.49 -0.92 0.19 0.79 4.91 0 0.85 6.5 0.11 0.79 6.5 -0.33 -0.54 -6.7 -0.34 -0.68 -5.9 0 -0.7 -6.7 0 -0.85 -5.9 -0.3 -0.8 -5 0 -0.95 -5 -0.3 -0.8 -4.55 0 -0.95 -4.55 -0.3 -0.8 -3.9 0 -0.95 -3.55 -0.3 -0.8 -3.55 0 -0.43 -7.22 0 -0.43 -7.22 0 -0.7 -6.7 -0.33 -0.54 -6.7 -0.69 0.28 -4.03 -0.83 0.5 -3.58 -0.89 -0.64 -3.91 -0.93 -0.63 -3.54 -1.1 0 -3.55 -1 -0.25 -3.95 0.75 0.6 -1.6 -0.65 -0.7 -2.6 0 -0.95 -1.8 -1.13 -0.35 -2.63 -1.13 0.25 -2.62 -1.13 -0.35 -2.63 -1.15 -0.35 -1.6 -1.15 0.25 -1.6 -1.13 0.25 -2.62 -0.96 0.25 -3.57 -0.8 0.6 -2.6 -0.8 0.25 -1.6 -0.8 0.6 -2.6 -0.85 0.25 -0.95 -0.85 -0.35 -0.95 -0.9 -0.35 0.65 -0.9 0.25 0.65 -0.87 0.25 0 0.03 0.45 7.14 0.22 0.57 7.14 0.22 0.68 7.14 0.03 0.8 7.14 -0.65 -0.35 0.65 -0.65 -0.35 1.1 -0.46 -0.85 -1.8 -0.5 -0.85 -1.6 -0.8 -0.35 -1.6 -0.75 -0.35 -1.8 0 -0.95 -1.6 -0.55 -0.84 -0.95 -0.85 -0.35 -0.95 0 -0.95 -0.95 -0.33 -0.88 0.65 -0.65 -0.35 0.65 0 -0.95 0.65 -0.33 -0.88 1.1 -0.65 -0.35 1.1 0 -0.95 1.1 -0.69 0.68 -2.61 -0.41 0.84 -1.6 0 0.95 -1.6 0 0.85 -2.65 -0.75 0.6 -1.6 -0.41 0.84 -1.6 -0.69 0.68 -2.61 -0.36 0.86 -0.95 0 0.95 -0.95 -0.75 0.6 -1.6 -0.67 0.64 -0.95 -0.34 0.85 0 0 0.92 0 -0.55 0.7 0 -0.31 0.78 2.05 0 0.85 2.05 0 0.85 -3.55 -0.26 0.74 -3.55 0 0.85 -2.65 0 0.4 6.87 0.25 0.55 6.87 -0.26 0.74 -3.55 -0.69 0.59 -0.95 -0.67 0.64 -0.95 -0.64 0.57 -0.27 -0.55 0.7 0 -0.65 0.35 3.45 -0.55 0.35 4 -0.4 0.74 4.01 -0.49 0.72 3.51 -0.2 0.8 4 -0.2 0.8 4.55 -0.19 0.79 4.91 0 0.85 4.9 0 0.85 4 -0.35 0.35 4.9 -0.19 0.79 4.91 -0.53 -0.23 3.52 -0.45 -0.18 4.02 0 -0.6 3.55 0 -0.5 4 -0.45 -0.18 4.02 -0.53 -0.23 3.52 -0.26 -0.16 4.92 0 -0.35 4.9 -0.26 -0.16 4.92 0 0.4 6.5 -0.35 0.35 4.9 0 0 6.4 -0.25 0.7 6.5 -0.25 0.55 6.5 0 0.4 6.5 -0.11 0.79 6.5 -0.65 0.25 1.1 -0.65 0.25 0.65 -0.66 0.54 0.48 -0.6 0.54 0.65 -0.59 0.64 0.65 0 -0.6 3.55 -0.65 0.25 1.1 0 0.85 3.55 -0.49 0.72 3.51 0 0.85 3.55 -0.31 0.78 2.05 -0.7 0.5 2.05 -0.7 0.5 2.05 -0.62 0.6 1.09 -0.62 0.53 1.09 0 0.85 6.5 -0.25 0.7 6.87 0 0.85 6.87 -0.25 0.55 6.87 -0.22 0.68 7.14 -0.03 0.8 7.14 -0.22 0.57 7.14 -0.03 0.45 7.14 -1.45 0.49 -0.92 -0.11 0.79 6.5 -0.64 0.57 0 -2.78 0.32 0 -4.62 0.05 2.42 -4.62 0.08 1.58 -3.79 0.18 0.71 0 0 -6.7 0.44 -0.17 -5.91 0.35 -0.32 -6.71 0.45 -0.5 -5.9 0.35 -0.5 -6.7 0.32 0.23 -5 0.44 0.11 -5.01 0.45 -0.5 -5 0.44 0.25 -4.56 0.45 -0.5 -4.55 0.44 0.31 -4.05 0.45 -0.5 -3.93 0.34 0.36 -4.55 0.26 0.57 -3.55 0.22 0.68 7.14 0.22 0.57 7.14 0.25 0.55 6.87 0.25 0.7 6.87 0.25 0.7 6.87 0 0.4 6.87 0.25 0.55 6.5 0.25 0.55 6.5 0.25 0.7 6.5 0.11 0.79 6.5 0.65 0.35 3.45 0.65 0.25 1.1 0.7 0.5 2.05 0.34 -0.68 -5.9 0.33 -0.54 -6.7 0.3 -0.8 -5 0.3 -0.8 -4.55 0.3 -0.8 -3.9 0.3 -0.8 -3.55 0.35 -0.32 -6.71 0.35 -0.5 -6.7 0.33 -0.54 -6.7 0.83 0.5 -3.58 0.69 0.28 -4.03 1 -0.25 -3.95 1.1 0 -3.55 0.93 -0.63 -3.54 0.89 -0.64 -3.91 0.65 0.25 1.1 0.62 0.6 1.09 0.65 -0.7 -2.6 1.13 -0.35 -2.63 1.15 0.25 -1.6 1.15 -0.35 -1.6 1.13 -0.35 -2.63 1.13 0.25 -2.62 1.13 0.25 -2.62 0.96 0.25 -3.57 0.8 0.25 -1.6 0.8 0.6 -2.6 0.8 0.6 -2.6 0.49 0.72 3.51 0.85 0.25 -0.95 0.87 0.25 0 0.9 0.25 0.65 0.9 -0.35 0.65 0.85 -0.35 -0.95 0.31 0.78 2.05 0.9 -0.35 0.65 0.65 -0.35 1.1 0.65 -0.35 0.65 0.85 -0.35 -0.95 0.75 -0.35 -1.8 0.8 -0.35 -1.6 0.5 -0.85 -1.6 0.46 -0.85 -1.8 0.55 -0.84 -0.95 0.33 -0.88 0.65 0.33 -0.88 1.1 0.41 0.84 -1.6 0.69 0.68 -2.61 0.69 0.68 -2.61 0.41 0.84 -1.6 0.36 0.86 -0.95 0.67 0.64 -0.95 0.75 0.6 -1.6 0.34 0.85 0 0.55 0.7 0 0.26 0.74 -3.55 0.26 0.74 -3.55 0.67 0.64 -0.95 0.55 0.7 0 0.59 0.64 0.65 0.66 0.54 0.48 0.4 0.74 4.01 0.55 0.35 4 0.2 0.8 4.55 0.2 0.8 4 0.19 0.79 4.91 0.35 0.35 4.9 0.45 -0.18 4.02 0.53 -0.23 3.52 0 -0.5 4 0.55 0.35 4 0.35 0.35 4.9 0.26 -0.16 4.92 0.45 -0.18 4.02 0.65 0.25 0.65 0.33 -0.88 1.1 0.65 -0.35 1.1 0 -0.6 5.95 0 -0.45 6.2 0.2 0.8 4 0.34 0.85 0 0.31 0.78 2.05 0.8 -0.35 -1.6 0.75 -0.35 -1.8 2.2 0.15 6.7 2.2 0.15 6.35 0.2 0.8 4.55 0 1.7 4.9 0 2.4 5.65 0 2.75 6.15 0 2.85 6.7 0 0.95 4 0 0.95 3.55 -0.8 -0.35 -1.6 -0.75 -0.35 -1.8 -0.34 0.85 0 -0.4 0.74 4.01 -2.2 0.15 6.7 -2.2 0.15 6.35 -0.33 0.52 -5 0 0.85 -4.85 -0.34 0.68 -4.55 0 0.91 -3.44 0 0.98 -4.4 0.34 0.68 -4.55 0.33 0.52 -5 0 0.91 -3.44 0.33 0.52 -5 0.32 0.23 -5 0 0.57 -2.5'/>
 46                                               </IndexedFaceSet>
 47                                          </Shape>
 48                                     </Transform>
 49                                </Transform>
 50 
                              <!-- ROUTE information for CanopyScript node:  [from Clock.fraction_changed to set_fraction ] [from clockStartTime to Clock.set_startTime ] [from canopyOut to Clock.set_enabled ] [from keyValue to CanopyInterpolator.set_keyValue ] -->
                              <Script DEF='CanopyScript'>
 51                                     <field name='canopyOpen' type='SFBool' accessType='inputOnly' appinfo='eventIn: boolean true: canopy open false: canopy close'/>
 52                                     <field name='canopyOut' type='SFBool' accessType='outputOnly'/>
 53                                     <field name='keyValue' type='MFRotation' accessType='outputOnly'/>
 54                                     <field name='kV1' type='SFRotation' value='0 1 0 0' accessType='initializeOnly'/>
 55                                     <field name='kV2' type='SFRotation' value='0 1 0 0' accessType='initializeOnly'/>
 56                                     <field name='kV3' type='SFRotation' value='0 1 0 0' accessType='initializeOnly'/>
 57                                     <field name='set_fraction' type='SFFloat' accessType='inputOnly'/>
 58                                     <field name='animationStartTime' type='SFTime' accessType='inputOnly'/>
 59                                     <field name='clockStartTime' type='SFTime' accessType='outputOnly'/>
 60                                     <field name='traceEnabled' type='SFBool' accessType='initializeOnly'/>
 61                                     <IS>
 62                                          <connect nodeField='canopyOpen' protoField='canopyOpen'/>
 63                                          <connect nodeField='animationStartTime' protoField='animationStartTime'/>
 64                                          <connect nodeField='canopyOut' protoField='canopyOut'/>
 65                                          <connect nodeField='traceEnabled' protoField='traceEnabled'/>
 66                                     </IS>
  <![CDATA[
              
ecmascript:

function canopyOpen(value, timeStamp) {
  
 if (value == true)       //Canopy Open
 {
      	tracePrint ('[Canopy Open] ' );
      	tracePrint ('value = ' + value);
      	canapyOut = true;    	
      
      	kV1 = new SFRotation (new SFVec3f (1, 0, 0), 0.0);  
     	kV2 = new SFRotation (new SFVec3f (1, 0, 0), 0.52);
      	kV3 = new SFRotation(new SFVec3f (1, 0, 0), 0.79);
      	keyValue = new MFRotation(kV1, kV2, kV3);  
      	//tracePrint ('[keyValue = ]' + keyValue);      
  
 }
 else        //Canopy Close
 {
      	tracePrint ('[Canopy Close] ' );
      	tracePrint ('value = ' + value);
      	canopyOut = true;
     	
      	keyValue = new MFRotation(kV3, kV2, kV1);  
      	//tracePrint ('[keyValue = ]' + keyValue);             
 }
 
}

function set_fraction (value, timeStamp)
{
	//tracePrint('time fraction = ' + value);
}

function animationStartTime(value, timeStamp)
{	
	tracePrint('The Start Time is: ' + value);
	clockStartTime = value;
}

function tracePrint (outputString)
{
	if (traceEnabled) Browser.println ('[CanopyPrototype] ' + outputString);
}

            
]]>
 68                                </Script>
 69 
                              <!-- ROUTE information for CanopyInterpolator node:  [from CanopyScript.keyValue to set_keyValue ] [from Clock.fraction_changed to set_fraction ] [from value_changed to CanopyTransform.set_rotation ] -->
                              <OrientationInterpolator DEF='CanopyInterpolator' key='0 0.5 1.0' keyValue='1 0 0 0.0 1 0 0 0.52 1 0 0 0.79'/>
 70 
                              <!-- ROUTE information for Clock node:  [from CanopyScript.clockStartTime to set_startTime ] [from CanopyScript.canopyOut to set_enabled ] [from fraction_changed to CanopyInterpolator.set_fraction ] [from fraction_changed to CanopyScript.set_fraction ] -->
                              <TimeSensor DEF='Clock' cycleInterval='4' enabled='true' loop='false'/>
 71                                < ROUTE  fromNode='CanopyScript' fromField='clockStartTime' toNode='Clock' toField='set_startTime'/>
 72                                < ROUTE  fromNode='CanopyScript' fromField='canopyOut' toNode='Clock' toField='set_enabled'/>
 73                                < ROUTE  fromNode='CanopyScript' fromField='keyValue' toNode='CanopyInterpolator' toField='set_keyValue'/>
 74                                < ROUTE  fromNode='Clock' fromField='fraction_changed' toNode='CanopyInterpolator' toField='set_fraction'/>
 75                                < ROUTE  fromNode='Clock' fromField='fraction_changed' toNode='CanopyScript' toField='set_fraction'/>
 76                                < ROUTE  fromNode='CanopyInterpolator' fromField='value_changed' toNode='CanopyTransform' toField='set_rotation'/>
 77                           </Group>
 78                      </Transform>
 79                 </ProtoBody>
 80            </ProtoDeclare>
 81            <Background skyColor='0.6 0.6 0.6'/>
 82  go to online X3D Example Archives model page           <Anchor description='View CanopyExample model' parameter='"target=_blank"'   url=' "CanopyExample.x3d" "../../AircraftFixedWing/F18BlueAngelUnitedStates/CanopyExample.x3d" "https://www.web3d.org/x3d/content/examples/Savage/AircraftFixedWing/F18BlueAngelUnitedStates/CanopyExample.x3d" "CanopyExample.wrl" "../../AircraftFixedWing/F18BlueAngelUnitedStates/CanopyExample.wrl" "https://www.web3d.org/x3d/content/examples/Savage/AircraftFixedWing/F18BlueAngelUnitedStates/CanopyExample.wrl"'>
 83                 <!-- X3D-Edit offers Selectable Text design pattern adds transparent Box and TouchSensor description as a user hint -->
 84                 <Group>
 85                      <Shape>
 86                           <Text string='"CanopyPrototype" "is a prototype definition file" "" "To see an example scene" "click on this text and view" "CanopyExample"'>
 87                                <FontStyle justify='"MIDDLE" "MIDDLE"'/>
 88                           </Text>
 89                           <Appearance>
 90                                <Material diffuseColor='0.9 0.9 0.9'/>
 91                           </Appearance>
 92                      </Shape>
 93                      <Shape>
 94                           <Box size='16 6 .001'/>
 95                           <Appearance>
 96                                <Material transparency='1'/>
 97                           </Appearance>
 98                      </Shape>
 99                 </Group>
100            </Anchor>
101       </Scene>
102  </X3D>
<!--

Event Graph ROUTE Table shows event connections.

--> <!-- to top DEF nodes index: CanopyColor, CanopyInterpolator, CanopyScript, CanopyTransform, Clock, CockpitFront

Index for Viewpoint node: Viewpoint_1

Index for ProtoDeclare definition: Canopy

-->

X3D Tooltips element index: to top Anchor, Appearance, Background, Box, connect, Coordinate, field, FontStyle, Group, head, IndexedFaceSet, IS, Material, meta, OrientationInterpolator, ProtoBody, ProtoDeclare, ProtoInterface, ROUTE, Scene, Script, Shape, Text, TimeSensor, Transform, Viewpoint, WorldInfo, X3D,
plus documentation for accessType definitions, type definitions, XML data types, and field types

🔖   Event Graph ROUTE Table entries with 4 ROUTE connections and 1 Anchor hover hint, showing X3D event-model relationships for this scene.

Each row with a ROUTE statement shows an event cascade that may occur during a single timestamp interval between frame renderings, performed as part of the X3D execution model.

The following ROUTE chain begins an event-routing loop! Loop occurs at nodeDepth=2.
 
ROUTE Clock.fraction_changed TO CanopyScript.set_fraction
Clock
TimeSensor
fraction_changed
SFFloat
→
ROUTE
event to
(1)
CanopyInterpolator
OrientationInterpolator
set_fraction
SFFloat
then
from
same
node
CanopyInterpolator
OrientationInterpolator
value_changed
SFRotation
→
ROUTE
event to
(2)
CanopyTransform
Transform
set_rotation
SFRotation
Clock
TimeSensor
fraction_changed
SFFloat
→
ROUTE
event to
(1)
CanopyScript
Script
set_fraction
SFFloat
then
from
same
node
CanopyScript
Script
canopyOut
SFBool
→
ROUTE
event to
(2)
Clock
TimeSensor
set_enabled
SFBool
then
from
same
node
Clock
TimeSensor
fraction_changed
SFFloat
→
ROUTE
event to
(3)
CanopyInterpolator
OrientationInterpolator
set_fraction
SFFloat
then
from
same
node
CanopyInterpolator
OrientationInterpolator
value_changed
SFRotation
→
ROUTE
event to
(4)
CanopyTransform
Transform
set_rotation
SFRotation
  then
from
same
node
Clock
TimeSensor
fraction_changed
SFFloat
→
ROUTE
event to
(3)
CanopyScript
Script
set_fraction
SFFloat
then
from
same
node
CanopyScript
Script
canopyOut
SFBool
→
ROUTE
event to
(4)
Clock
TimeSensor
set_enabled
SFBool
then
from
same
node
Clock
TimeSensor
fraction_changed
SFFloat
→
ROUTE
event to
(5)
CanopyInterpolator
OrientationInterpolator
set_fraction
SFFloat
then
from
same
node
CanopyInterpolator
OrientationInterpolator
value_changed
SFRotation
→
ROUTE
event to
(6)
CanopyTransform
Transform
set_rotation
SFRotation
  then
from
same
node
Clock
TimeSensor
fraction_changed
SFFloat
→
ROUTE
event to
(5)
CanopyScript
Script
set_fraction
SFFloat
then
from
same
node
CanopyScript
Script
canopyOut
SFBool
→
ROUTE
event to
(6)
Clock
TimeSensor
set_enabled
SFBool
  then
from
same
node
CanopyScript
Script
clockStartTime
SFTime
→
ROUTE
event to
(6)
Clock
TimeSensor
set_startTime
SFTime
  then
from
same
node
CanopyScript
Script
keyValue
MFRotation
→
ROUTE
event to
(6)
CanopyInterpolator
OrientationInterpolator
set_keyValue
MFRotation
  then
from
same
node
CanopyScript
Script
clockStartTime
SFTime
→
ROUTE
event to
(4)
Clock
TimeSensor
set_startTime
SFTime
then
from
same
node
Clock
TimeSensor
fraction_changed
SFFloat
→
ROUTE
event to
(5)
CanopyInterpolator
OrientationInterpolator
set_fraction
SFFloat
then
from
same
node
CanopyInterpolator
OrientationInterpolator
value_changed
SFRotation
→
ROUTE
event to
(6)
CanopyTransform
Transform
set_rotation
SFRotation
  then
from
same
node
Clock
TimeSensor
fraction_changed
SFFloat
→
ROUTE
event to
(5)
CanopyScript
Script
set_fraction
SFFloat
then
from
same
node
CanopyScript
Script
canopyOut
SFBool
→
ROUTE
event to
(6)
Clock
TimeSensor
set_enabled
SFBool
  then
from
same
node
CanopyScript
Script
clockStartTime
SFTime
→
ROUTE
event to
(6)
Clock
TimeSensor
set_startTime
SFTime
  then
from
same
node
CanopyScript
Script
keyValue
MFRotation
→
ROUTE
event to
(6)
CanopyInterpolator
OrientationInterpolator
set_keyValue
MFRotation
  then
from
same
node
CanopyScript
Script
keyValue
MFRotation
→
ROUTE
event to
(4)
CanopyInterpolator
OrientationInterpolator
set_keyValue
MFRotation
then
from
same
node
CanopyInterpolator
OrientationInterpolator
value_changed
SFRotation
→
ROUTE
event to
(5)
CanopyTransform
Transform
set_rotation
SFRotation
  then
from
same
node
CanopyScript
Script
clockStartTime
SFTime
→
ROUTE
event to
(2)
Clock
TimeSensor
set_startTime
SFTime
then
from
same
node
Clock
TimeSensor
fraction_changed
SFFloat
→
ROUTE
event to
(3)
CanopyInterpolator
OrientationInterpolator
set_fraction
SFFloat
then
from
same
node
CanopyInterpolator
OrientationInterpolator
value_changed
SFRotation
→
ROUTE
event to
(4)
CanopyTransform
Transform
set_rotation
SFRotation
  then
from
same
node
Clock
TimeSensor
fraction_changed
SFFloat
→
ROUTE
event to
(3)
CanopyScript
Script
set_fraction
SFFloat
then
from
same
node
CanopyScript
Script
canopyOut
SFBool
→
ROUTE
event to
(4)
Clock
TimeSensor
set_enabled
SFBool
then
from
same
node
Clock
TimeSensor
fraction_changed
SFFloat
→
ROUTE
event to
(5)
CanopyInterpolator
OrientationInterpolator
set_fraction
SFFloat
then
from
same
node
CanopyInterpolator
OrientationInterpolator
value_changed
SFRotation
→
ROUTE
event to
(6)
CanopyTransform
Transform
set_rotation
SFRotation
  then
from
same
node
Clock
TimeSensor
fraction_changed
SFFloat
→
ROUTE
event to
(5)
CanopyScript
Script
set_fraction
SFFloat
then
from
same
node
CanopyScript
Script
canopyOut
SFBool
→
ROUTE
event to
(6)
Clock
TimeSensor
set_enabled
SFBool
  then
from
same
node
CanopyScript
Script
clockStartTime
SFTime
→
ROUTE
event to
(6)
Clock
TimeSensor
set_startTime
SFTime
  then
from
same
node
CanopyScript
Script
keyValue
MFRotation
→
ROUTE
event to
(6)
CanopyInterpolator
OrientationInterpolator
set_keyValue
MFRotation
  then
from
same
node
CanopyScript
Script
clockStartTime
SFTime
→
ROUTE
event to
(4)
Clock
TimeSensor
set_startTime
SFTime
then
from
same
node
Clock
TimeSensor
fraction_changed
SFFloat
→
ROUTE
event to
(5)
CanopyInterpolator
OrientationInterpolator
set_fraction
SFFloat
then
from
same
node
CanopyInterpolator
OrientationInterpolator
value_changed
SFRotation
→
ROUTE
event to
(6)
CanopyTransform
Transform
set_rotation
SFRotation
  then
from
same
node
Clock
TimeSensor
fraction_changed
SFFloat
→
ROUTE
event to
(5)
CanopyScript
Script
set_fraction
SFFloat
then
from
same
node
CanopyScript
Script
canopyOut
SFBool
→
ROUTE
event to
(6)
Clock
TimeSensor
set_enabled
SFBool
  then
from
same
node
CanopyScript
Script
clockStartTime
SFTime
→
ROUTE
event to
(6)
Clock
TimeSensor
set_startTime
SFTime
  then
from
same
node
CanopyScript
Script
keyValue
MFRotation
→
ROUTE
event to
(6)
CanopyInterpolator
OrientationInterpolator
set_keyValue
MFRotation
  then
from
same
node
CanopyScript
Script
keyValue
MFRotation
→
ROUTE
event to
(4)
CanopyInterpolator
OrientationInterpolator
set_keyValue
MFRotation
then
from
same
node
CanopyInterpolator
OrientationInterpolator
value_changed
SFRotation
→
ROUTE
event to
(5)
CanopyTransform
Transform
set_rotation
SFRotation
  then
from
same
node
CanopyScript
Script
keyValue
MFRotation
→
ROUTE
event to
(2)
CanopyInterpolator
OrientationInterpolator
set_keyValue
MFRotation
then
from
same
node
CanopyInterpolator
OrientationInterpolator
value_changed
SFRotation
→
ROUTE
event to
(3)
CanopyTransform
Transform
set_rotation
SFRotation

line 82
Anchor
description='View CanopyExample model' 
No direct ROUTE connection found for events to/from 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! 😀

-->
go to online X3D Example Archives model page <!-- Online at
https://www.web3d.org/x3d/content/examples/Savage/AircraftFixedWing/F18BlueAngelUnitedStates/CanopyPrototypeIndex.html -->
<!-- SourceForge version control Version control at    
https://sourceforge.net/p/x3d/code/HEAD/tree/www.web3d.org/x3d/content/examples/Savage/AircraftFixedWing/F18BlueAngelUnitedStates/CanopyPrototype.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. -->