@prefix :        <https://www.web3d.org/x3d/content/examples/Savage/AircraftFixedWing/F18BlueAngelUnitedStates/CanopyPrototype.ttl#> .
@prefix owl:     <http://www.w3.org/2002/07/owl#> .
@prefix rdf:     <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs:    <http://www.w3.org/2000/01/rdf-schema#> .
@prefix schema:  <http://schema.org/> .
@prefix dcterms: <http://purl.org/dc/terms/> .
@prefix xsd:     <http://www.w3.org/2001/XMLSchema#> .
@prefix x3d:     <https://www.web3d.org/specifications/x3d-4.1.xsd#> .
@prefix x3do:    <https://www.web3d.org/specifications/X3dOntology4.1#> .

:X3D a owl:NamedIndividual, x3do:X3D ;
  x3do:hasHead :head ;
  x3do:hasScene :Scene ;
  x3do:profile 'Immersive' ;
  x3do:version '3.0' ;
  x3do:noNamespaceSchemaLocation 'https://www.web3d.org/specifications/x3d-3.0.xsd' .
:head a owl:NamedIndividual, x3do:head ;
  x3do:hasParent :X3D ;
  x3do:hasMeta :meta_1_1, :meta_1_2, :meta_1_3, :meta_1_4, :meta_1_5, :meta_1_6, :meta_1_7, :meta_1_8, :meta_1_9, :meta_1_10, :meta_1_11 .
:meta_1_1 a owl:NamedIndividual, x3do:meta ;
  x3do:hasParent :head ;
  x3do:content 'CanopyPrototype.x3d' ;
  x3do:name 'title' .
:meta_1_2 a owl:NamedIndividual, x3do:meta ;
  x3do:hasParent :head ;
  x3do:content 'This prototype performs canopy opening and closing.' ;
  x3do:name 'description' .
:meta_1_3 a owl:NamedIndividual, x3do:meta ;
  x3do:hasParent :head ;
  x3do:content 'Etsuko Lippi' ;
  x3do:name 'creator' .
:meta_1_4 a owl:NamedIndividual, x3do:meta ;
  x3do:hasParent :head ;
  x3do:content '18 October 2001' ;
  x3do:name 'created' .
:meta_1_5 a owl:NamedIndividual, x3do:meta ;
  x3do:hasParent :head ;
  x3do:content '16 April 2026' ;
  x3do:name 'modified' .
:meta_1_6 a owl:NamedIndividual, x3do:meta ;
  x3do:hasParent :head ;
  x3do:content 'https://www.web3d.org/x3d/content/examples/Savage/AircraftFixedWing/F18BlueAngelUnitedStates/BlueAngelCanopy.jpg' ;
  x3do:name 'reference' .
:meta_1_7 a owl:NamedIndividual, x3do:meta ;
  x3do:hasParent :head ;
  x3do:content 'http://www.military.com/Content/MoreContent1?file=aboutba' ;
  x3do:name 'reference' .
:meta_1_8 a owl:NamedIndividual, x3do:meta ;
  x3do:hasParent :head ;
  x3do:content 'https://www.web3d.org/x3d/content/examples/Savage/AircraftFixedWing/F18BlueAngelUnitedStates/CanopyPrototype.x3d' ;
  x3do:name 'identifier' .
:meta_1_9 a owl:NamedIndividual, x3do:meta ;
  x3do:hasParent :head ;
  x3do:content 'X3D-Edit 3.2, https://www.web3d.org/x3d/tools/X3D-Edit' ;
  x3do:name 'generator' .
:meta_1_10 a owl:NamedIndividual, x3do:meta ;
  x3do:hasParent :head ;
  x3do:content 'canopy opening and closing, Prototype' ;
  x3do:name 'subject' .
:meta_1_11 a owl:NamedIndividual, x3do:meta ;
  x3do:hasParent :head ;
  x3do:content '../../license.html' ;
  x3do:name 'license' .
:meta dcterms:title "CanopyPrototype.x3d" .
:meta dcterms:description "This prototype performs canopy opening and closing." .
:meta dcterms:creator "Etsuko Lippi" .
:meta dcterms:created "18 October 2001" .
:meta dcterms:modified "16 April 2026" .
:meta dcterms:reference "https://www.web3d.org/x3d/content/examples/Savage/AircraftFixedWing/F18BlueAngelUnitedStates/BlueAngelCanopy.jpg" .
:meta dcterms:reference "http://www.military.com/Content/MoreContent1?file=aboutba" .
:meta dcterms:identifier "https://www.web3d.org/x3d/content/examples/Savage/AircraftFixedWing/F18BlueAngelUnitedStates/CanopyPrototype.x3d" .
:meta dcterms:generator "X3D-Edit 3.2, https://www.web3d.org/x3d/tools/X3D-Edit" .
:meta dcterms:subject "canopy opening and closing, Prototype" .
:meta dcterms:license "../../license.html" .
:Scene a owl:NamedIndividual, x3do:Scene ;
  x3do:hasParent :X3D ;
  x3do:hasChildren :WorldInfo_2_1, :Background_2_3, :Anchor_2_4 ;
  x3do:hasProtoDeclare :ProtoDeclare_2_2 .
:WorldInfo_2_1 a owl:NamedIndividual, x3do:WorldInfo ;
  x3do:hasParent :Scene ;
  x3do:title 'CanopyPrototype.x3d' .
:ProtoDeclare_2_2 a owl:NamedIndividual, x3do:ProtoDeclare ;
  x3do:hasParent :Scene ;
  x3do:hasProtoInterface :ProtoInterface_2_2_1 ;
  x3do:hasProtoBody :ProtoBody_2_2_2 ;
  x3do:name 'Canopy' .
:ProtoInterface_2_2_1 a owl:NamedIndividual, x3do:ProtoInterface ;
  x3do:hasParent :ProtoDeclare_2_2 ;
  x3do:hasField :field_2_2_1_1, :field_2_2_1_2, :field_2_2_1_3, :field_2_2_1_4 .
:field_2_2_1_1 a owl:NamedIndividual, x3do:field ;
  x3do:hasParent :ProtoInterface_2_2_1 ;
  x3do:accessType 'inputOnly' ;
  x3do:appinfo 'boolean eventIn: true = canopy open false = canopy close.' ;
  x3do:name 'canopyOpen' ;
  x3do:type 'SFBool' .
:field_2_2_1_2 a owl:NamedIndividual, x3do:field ;
  x3do:hasParent :ProtoInterface_2_2_1 ;
  x3do:accessType 'inputOnly' ;
  x3do:name 'animationStartTime' ;
  x3do:type 'SFTime' .
:field_2_2_1_3 a owl:NamedIndividual, x3do:field ;
  x3do:hasParent :ProtoInterface_2_2_1 ;
  x3do:accessType 'outputOnly' ;
  x3do:name 'canopyOut' ;
  x3do:type 'SFBool' .
:field_2_2_1_4 a owl:NamedIndividual, x3do:field ;
  x3do:hasParent :ProtoInterface_2_2_1 ;
  x3do:accessType 'initializeOnly' ;
  x3do:name 'traceEnabled' ;
  x3do:type 'SFBool' ;
  x3do:value false .
:ProtoBody_2_2_2 a owl:NamedIndividual, x3do:ProtoBody ;
  x3do:hasParent :ProtoDeclare_2_2 ;
  x3do:hasChildren :Transform_2_2_2_1 .
:Transform_2_2_2_1 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :ProtoBody_2_2_2 ;
  x3do:hasChildren :Viewpoint_2_2_2_1_1, :CockpitFront, :Group_2_2_2_1_3 ;
  x3do:scale ( 1.4 1 1 ) .
:Viewpoint_2_2_2_1_1 a owl:NamedIndividual, x3do:Viewpoint ;
  x3do:hasParent :Transform_2_2_2_1 ;
  x3do:description 'Canopy (click back to open, click front to close)' ;
  x3do:orientation ( 0 1 0 -1.57 ) ;
  x3do:position ( 0 0 -4 ) .
:CockpitFront a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :Transform_2_2_2_1 ;
  x3do:hasChildren :Shape_2_2_2_1_2_1 ;
  x3do:DEF 'CockpitFront' ;
  x3do:translation ( 3 0 0 ) .
:Shape_2_2_2_1_2_1 a owl:NamedIndividual, x3do:Shape ;
  x3do:hasParent :CockpitFront ;
  x3do:hasAppearance :CanopyColor ;
  x3do:hasGeometry :IndexedFaceSet_2_2_2_1_2_1_2 .
:CanopyColor a owl:NamedIndividual, x3do:Appearance ;
  x3do:hasParent :Shape_2_2_2_1_2_1 ;
  x3do:hasMaterial :Material_2_2_2_1_2_1_1_1 ;
  x3do:DEF 'CanopyColor' .
:Material_2_2_2_1_2_1_1_1 a owl:NamedIndividual, x3do:Material ;
  x3do:hasParent :CanopyColor ;
  x3do:diffuseColor ( 0.3 0.4 0.8 ) ;
  x3do:transparency 0.85 .
:IndexedFaceSet_2_2_2_1_2_1_2 a owl:NamedIndividual, x3do:IndexedFaceSet ;
  x3do:hasParent :Shape_2_2_2_1_2_1 ;
  x3do:hasCoord :Coordinate_2_2_2_1_2_1_2_1 ;
  x3do:coordIndex ( 9 300 10 -1 10 300 301 -1 301 306 10 -1 2 308 309 -1 ) ;
  x3do:creaseAngle 1.8 ;
  x3do:solid false .
:Coordinate_2_2_2_1_2_1_2_1 a owl:NamedIndividual, x3do:Coordinate ;
  x3do:hasParent :IndexedFaceSet_2_2_2_1_2_1_2 ;
  x3do: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 ) .
:Group_2_2_2_1_3 a owl:NamedIndividual, x3do:Group ;
  x3do:hasParent :Transform_2_2_2_1 ;
  x3do:hasChildren :CanopyTransform, :CanopyScript, :CanopyInterpolator, :Clock ;
  x3do:hasROUTE :ROUTE_2_2_2_1_3_5, :ROUTE_2_2_2_1_3_6, :ROUTE_2_2_2_1_3_7, :ROUTE_2_2_2_1_3_8, :ROUTE_2_2_2_1_3_9, :ROUTE_2_2_2_1_3_10 .
:CanopyTransform a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :Group_2_2_2_1_3 ;
  x3do:hasChildren :Transform_2_2_2_1_3_1_1 ;
  x3do:DEF 'CanopyTransform' ;
  x3do:center ( 0 0 -3.5 ) .
:Transform_2_2_2_1_3_1_1 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :CanopyTransform ;
  x3do:hasChildren :Shape_2_2_2_1_3_1_1_1 ;
  x3do:translation ( 3 0 0 ) .
:Shape_2_2_2_1_3_1_1_1 a owl:NamedIndividual, x3do:Shape ;
  x3do:hasParent :Transform_2_2_2_1_3_1_1 ;
  x3do:hasAppearance :CanopyColor-USE-1 ;
  x3do:hasGeometry :IndexedFaceSet_2_2_2_1_3_1_1_1_2 .
:CanopyColor-USE-1 a owl:NamedIndividual, x3do:Appearance ;
  x3do:hasParent :Shape_2_2_2_1_3_1_1_1 ;
  owl:sameAs :CanopyColor . # DEF matching this USE
:IndexedFaceSet_2_2_2_1_3_1_1_1_2 a owl:NamedIndividual, x3do:IndexedFaceSet ;
  x3do:hasParent :Shape_2_2_2_1_3_1_1_1 ;
  x3do:hasCoord :Coordinate_2_2_2_1_3_1_1_1_2_1 ;
  x3do: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 ) ;
  x3do:creaseAngle 1.8 ;
  x3do:solid false .
:Coordinate_2_2_2_1_3_1_1_1_2_1 a owl:NamedIndividual, x3do:Coordinate ;
  x3do:hasParent :IndexedFaceSet_2_2_2_1_3_1_1_1_2 ;
  x3do: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 ) .
:CanopyScript a owl:NamedIndividual, x3do:Script ;
  x3do:hasParent :Group_2_2_2_1_3 ;
  x3do:hasField :field_2_2_2_1_3_2_1, :field_2_2_2_1_3_2_2, :field_2_2_2_1_3_2_3, :field_2_2_2_1_3_2_4, :field_2_2_2_1_3_2_5, :field_2_2_2_1_3_2_6, :field_2_2_2_1_3_2_7, :field_2_2_2_1_3_2_8, :field_2_2_2_1_3_2_9, :field_2_2_2_1_3_2_10 ;
  x3do:hasIS :IS_2_2_2_1_3_2_11 ;
  x3do:DEF 'CanopyScript' ;
  x3do:sourceCode """
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);
}
""" .
:field_2_2_2_1_3_2_1 a owl:NamedIndividual, x3do:field ;
  x3do:hasParent :CanopyScript ;
  x3do:accessType 'inputOnly' ;
  x3do:appinfo 'eventIn: boolean true: canopy open false: canopy close' ;
  x3do:name 'canopyOpen' ;
  x3do:type 'SFBool' .
:field_2_2_2_1_3_2_2 a owl:NamedIndividual, x3do:field ;
  x3do:hasParent :CanopyScript ;
  x3do:accessType 'outputOnly' ;
  x3do:name 'canopyOut' ;
  x3do:type 'SFBool' .
:field_2_2_2_1_3_2_3 a owl:NamedIndividual, x3do:field ;
  x3do:hasParent :CanopyScript ;
  x3do:accessType 'outputOnly' ;
  x3do:name 'keyValue' ;
  x3do:type 'MFRotation' .
:field_2_2_2_1_3_2_4 a owl:NamedIndividual, x3do:field ;
  x3do:hasParent :CanopyScript ;
  x3do:accessType 'initializeOnly' ;
  x3do:name 'kV1' ;
  x3do:type 'SFRotation' ;
  x3do:value ( 0 1 0 0 ) .
:field_2_2_2_1_3_2_5 a owl:NamedIndividual, x3do:field ;
  x3do:hasParent :CanopyScript ;
  x3do:accessType 'initializeOnly' ;
  x3do:name 'kV2' ;
  x3do:type 'SFRotation' ;
  x3do:value ( 0 1 0 0 ) .
:field_2_2_2_1_3_2_6 a owl:NamedIndividual, x3do:field ;
  x3do:hasParent :CanopyScript ;
  x3do:accessType 'initializeOnly' ;
  x3do:name 'kV3' ;
  x3do:type 'SFRotation' ;
  x3do:value ( 0 1 0 0 ) .
:field_2_2_2_1_3_2_7 a owl:NamedIndividual, x3do:field ;
  x3do:hasParent :CanopyScript ;
  x3do:accessType 'inputOnly' ;
  x3do:name 'set_fraction' ;
  x3do:type 'SFFloat' .
:field_2_2_2_1_3_2_8 a owl:NamedIndividual, x3do:field ;
  x3do:hasParent :CanopyScript ;
  x3do:accessType 'inputOnly' ;
  x3do:name 'animationStartTime' ;
  x3do:type 'SFTime' .
:field_2_2_2_1_3_2_9 a owl:NamedIndividual, x3do:field ;
  x3do:hasParent :CanopyScript ;
  x3do:accessType 'outputOnly' ;
  x3do:name 'clockStartTime' ;
  x3do:type 'SFTime' .
:field_2_2_2_1_3_2_10 a owl:NamedIndividual, x3do:field ;
  x3do:hasParent :CanopyScript ;
  x3do:accessType 'initializeOnly' ;
  x3do:name 'traceEnabled' ;
  x3do:type 'SFBool' .
:IS_2_2_2_1_3_2_11 a owl:NamedIndividual, x3do:IS ;
  x3do:hasParent :CanopyScript ;
  x3do:hasConnect :connect_2_2_2_1_3_2_11_1, :connect_2_2_2_1_3_2_11_2, :connect_2_2_2_1_3_2_11_3, :connect_2_2_2_1_3_2_11_4 .
:connect_2_2_2_1_3_2_11_1 a owl:NamedIndividual, x3do:connect ;
  x3do:hasParent :IS_2_2_2_1_3_2_11 ;
  x3do:nodeField 'canopyOpen' ;
  x3do:protoField 'canopyOpen' .
:connect_2_2_2_1_3_2_11_2 a owl:NamedIndividual, x3do:connect ;
  x3do:hasParent :IS_2_2_2_1_3_2_11 ;
  x3do:nodeField 'animationStartTime' ;
  x3do:protoField 'animationStartTime' .
:connect_2_2_2_1_3_2_11_3 a owl:NamedIndividual, x3do:connect ;
  x3do:hasParent :IS_2_2_2_1_3_2_11 ;
  x3do:nodeField 'canopyOut' ;
  x3do:protoField 'canopyOut' .
:connect_2_2_2_1_3_2_11_4 a owl:NamedIndividual, x3do:connect ;
  x3do:hasParent :IS_2_2_2_1_3_2_11 ;
  x3do:nodeField 'traceEnabled' ;
  x3do:protoField 'traceEnabled' .
:CanopyInterpolator a owl:NamedIndividual, x3do:OrientationInterpolator ;
  x3do:hasParent :Group_2_2_2_1_3 ;
  x3do:DEF 'CanopyInterpolator' ;
  x3do:key ( 0 0.5 1.0 ) ;
  x3do:keyValue ( 1 0 0 0.0 1 0 0 0.52 1 0 0 0.79 ) .
:Clock a owl:NamedIndividual, x3do:TimeSensor ;
  x3do:hasParent :Group_2_2_2_1_3 ;
  x3do:DEF 'Clock' ;
  x3do:cycleInterval '4' .
:ROUTE_2_2_2_1_3_5 a owl:NamedIndividual, x3do:ROUTE ;
  x3do:hasParent :Group_2_2_2_1_3 ;
  x3do:fromField 'clockStartTime' ;
  x3do:fromNode 'CanopyScript' ;
  x3do:toField 'set_startTime' ;
  x3do:toNode 'Clock' .
:ROUTE_2_2_2_1_3_6 a owl:NamedIndividual, x3do:ROUTE ;
  x3do:hasParent :Group_2_2_2_1_3 ;
  x3do:fromField 'canopyOut' ;
  x3do:fromNode 'CanopyScript' ;
  x3do:toField 'set_enabled' ;
  x3do:toNode 'Clock' .
:ROUTE_2_2_2_1_3_7 a owl:NamedIndividual, x3do:ROUTE ;
  x3do:hasParent :Group_2_2_2_1_3 ;
  x3do:fromField 'keyValue' ;
  x3do:fromNode 'CanopyScript' ;
  x3do:toField 'set_keyValue' ;
  x3do:toNode 'CanopyInterpolator' .
:ROUTE_2_2_2_1_3_8 a owl:NamedIndividual, x3do:ROUTE ;
  x3do:hasParent :Group_2_2_2_1_3 ;
  x3do:fromField 'fraction_changed' ;
  x3do:fromNode 'Clock' ;
  x3do:toField 'set_fraction' ;
  x3do:toNode 'CanopyInterpolator' .
:ROUTE_2_2_2_1_3_9 a owl:NamedIndividual, x3do:ROUTE ;
  x3do:hasParent :Group_2_2_2_1_3 ;
  x3do:fromField 'fraction_changed' ;
  x3do:fromNode 'Clock' ;
  x3do:toField 'set_fraction' ;
  x3do:toNode 'CanopyScript' .
:ROUTE_2_2_2_1_3_10 a owl:NamedIndividual, x3do:ROUTE ;
  x3do:hasParent :Group_2_2_2_1_3 ;
  x3do:fromField 'value_changed' ;
  x3do:fromNode 'CanopyInterpolator' ;
  x3do:toField 'set_rotation' ;
  x3do:toNode 'CanopyTransform' .
:Background_2_3 a owl:NamedIndividual, x3do:Background ;
  x3do:hasParent :Scene ;
  x3do:skyColor ( 0.6 0.6 0.6 ) .
:Anchor_2_4 a owl:NamedIndividual, x3do:Anchor ;
  x3do:hasParent :Scene ;
  x3do:hasChildren :Group_2_4_1 ;
  x3do:description 'View CanopyExample model' ;
  x3do:parameter '"target=_blank"' ;
  x3do: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"' .
:Group_2_4_1 a owl:NamedIndividual, x3do:Group ;
  x3do:hasParent :Anchor_2_4 ;
  x3do:hasChildren :Shape_2_4_1_1, :Shape_2_4_1_2 .
:Shape_2_4_1_1 a owl:NamedIndividual, x3do:Shape ;
  x3do:hasParent :Group_2_4_1 ;
  x3do:hasGeometry :Text_2_4_1_1_1 ;
  x3do:hasAppearance :Appearance_2_4_1_1_2 .
:Text_2_4_1_1_1 a owl:NamedIndividual, x3do:Text ;
  x3do:hasParent :Shape_2_4_1_1 ;
  x3do:hasFontStyle :FontStyle_2_4_1_1_1_1 ;
  x3do:string '"CanopyPrototype" "is a prototype definition file" "" "To see an example scene" "click on this text and view" "CanopyExample"' .
:FontStyle_2_4_1_1_1_1 a owl:NamedIndividual, x3do:FontStyle ;
  x3do:hasParent :Text_2_4_1_1_1 ;
  x3do:justify '"MIDDLE" "MIDDLE"' .
:Appearance_2_4_1_1_2 a owl:NamedIndividual, x3do:Appearance ;
  x3do:hasParent :Shape_2_4_1_1 ;
  x3do:hasMaterial :Material_2_4_1_1_2_1 .
:Material_2_4_1_1_2_1 a owl:NamedIndividual, x3do:Material ;
  x3do:hasParent :Appearance_2_4_1_1_2 ;
  x3do:diffuseColor ( 0.9 0.9 0.9 ) .
:Shape_2_4_1_2 a owl:NamedIndividual, x3do:Shape ;
  x3do:hasParent :Group_2_4_1 ;
  x3do:hasGeometry :Box_2_4_1_2_1 ;
  x3do:hasAppearance :Appearance_2_4_1_2_2 .
:Box_2_4_1_2_1 a owl:NamedIndividual, x3do:Box ;
  x3do:hasParent :Shape_2_4_1_2 ;
  x3do:size ( 16 6 .001 ) .
:Appearance_2_4_1_2_2 a owl:NamedIndividual, x3do:Appearance ;
  x3do:hasParent :Shape_2_4_1_2 ;
  x3do:hasMaterial :Material_2_4_1_2_2_1 .
:Material_2_4_1_2_2_1 a owl:NamedIndividual, x3do:Material ;
  x3do:hasParent :Appearance_2_4_1_2_2 ;
  x3do:transparency 1 .
