1 |
<?xml version="1.0" encoding="UTF-8"?>
|
2 |
<!DOCTYPE X3D PUBLIC "ISO//Web3D//DTD X3D 3.3//EN" "https://www.web3d.org/specifications/x3d-3.3.dtd">
|
3 | <X3D profile='Immersive' version='3.3' xmlns:xsd='http://www.w3.org/2001/XMLSchema-instance' xsd:noNamespaceSchemaLocation='https://www.web3d.org/specifications/x3d-3.3.xsd'> |
4 | <head> |
5 | <meta name='title' content='SuperCobraPrototype.x3d'/> |
6 | <meta name='description' content='Defines a prototype of Supercobra AH-1Z helicopter.'/> |
7 | <meta name='creator' content='Jane Wu'/> |
8 | <meta name='creator' content='Don Brutzman'/> |
9 | <meta name='created' content='16 January 2001'/> |
10 | <meta name='modified' content='1 December 2024'/> |
11 | <meta name=' TODO ' content=' fix model rotations '/> |
12 | <meta name='info' content='Avoided recursive loading of SuperCobraPrototype.x3d model by placing the prototype in a separate file, rather than cirular referencing. Problem detected using castle-model-viewer.'/> |
13 | <meta name='reference' content='https://savage.nps.edu/Savage/AircraftHelicopters/AH1SuperCobraUnitedStates/Hughes500HoverInteriorMedium-cd21-no59-10sec.wav'/> |
14 | <meta name='reference' content='https://savage.nps.edu/Savage/AircraftHelicopters/AH1SuperCobraUnitedStates/FourBladeMainRotorPrototype.x3d'/> |
15 | <meta name='reference' content='https://savage.nps.edu/Savage/AircraftHelicopters/AH1SuperCobraUnitedStates/RocketPod.x3d'/> |
16 | <meta name='reference' content='https://savage.nps.edu/Savage/AircraftHelicopters/AH1SuperCobraUnitedStates/SkidLeft.x3d'/> |
17 | <meta name='reference' content='https://savage.nps.edu/Savage/AircraftHelicopters/AH1SuperCobraUnitedStates/SkidRight.x3d'/> |
18 | <meta name='reference' content='https://savage.nps.edu/Savage/AircraftHelicopters/AH1SuperCobraUnitedStates/TwoBladeTailRotorPrototype.x3d'/> |
19 | <meta name='reference' content='https://www.fas.org/man/dod-101/sys/ac/ah-1.htm'/> |
20 | <meta name='identifier' content='https://savage.nps.edu/Savage/AircraftHelicopters/AH1SuperCobraUnitedStates/SuperCobraPrototype.x3d'/> |
21 | <meta name='generator' content='X3D-Edit 4.0, https://savage.nps.edu/X3D-Edit'/> |
22 | <meta name='license' content='../../license.html'/> |
23 | </head> |
24 | <Scene> |
25 | <ExternProtoDeclare name='FourBladeMainRotor' url=' "FourBladeMainRotorPrototype.x3d#FourBladeMainRotor" "https://savage.nps.edu/Savage/AircraftHelicopters/AH1SuperCobraUnitedStates/FourBladeMainRotorPrototype.x3d#FourBladeMainRotor" "FourBladeMainRotorPrototype.wrl#FourBladeMainRotor" "https://savage.nps.edu/Savage/AircraftHelicopters/AH1SuperCobraUnitedStates/FourBladeMainRotorPrototype.wrl#FourBladeMainRotor" '> |
26 |
<field name='rotationOn' type='SFBool' accessType='inputOnly'
appinfo='enable or disable rotor rotation'/> |
27 | </ExternProtoDeclare> |
28 | <ExternProtoDeclare name='TwoBladeTailRotor' url=' "TwoBladeTailRotorPrototype.x3d#TwoBladeTailRotor" "https://savage.nps.edu/Savage/AircraftHelicopters/AH1SuperCobraUnitedStates/TwoBladeTailRotorPrototype.x3d#TwoBladeTailRotor" "TwoBladeTailRotorPrototype.wrl#TwoBladeTailRotor" "https://savage.nps.edu/Savage/AircraftHelicopters/AH1SuperCobraUnitedStates/TwoBladeTailRotorPrototype.wrl#TwoBladeTailRotor" '> |
29 | <field name='rotationOn' type='SFBool' accessType='inputOnly'/> |
30 | </ExternProtoDeclare> |
31 | <ProtoDeclare name='SuperCobra' appinfo='Prototype declaration for SuperCobra helicopter'> |
32 | <ProtoInterface> |
33 |
<field name='tailBoomColor' type='SFNode' accessType='initializeOnly'
appinfo='color of tail boom'> |
34 | <!-- initialization node (if any) goes here --> |
35 | </field> |
36 |
<field name='tailRotorDriveShaftColor' type='SFNode' accessType='initializeOnly'
appinfo='color of tail boom drive shaft'> |
37 | <!-- initialization node (if any) goes here --> |
38 | </field> |
39 |
<field name='horizontalStabilizerColor' type='SFNode' accessType='initializeOnly'
appinfo='color of horizontal stabilizer'> |
40 | <!-- initialization node (if any) goes here --> |
41 | </field> |
42 |
<field name='fuselageColor' type='SFNode' accessType='initializeOnly'
appinfo='color of fuselage'> |
43 | <!-- initialization node (if any) goes here --> |
44 | </field> |
45 |
<field name='cockpitColor' type='SFNode' accessType='initializeOnly'
appinfo='color of cockpit'> |
46 | <!-- initialization node (if any) goes here --> |
47 | </field> |
48 |
<field name='cowlingColor' type='SFNode' accessType='initializeOnly'
appinfo='color of cowling'> |
49 | <!-- initialization node (if any) goes here --> |
50 | </field> |
51 |
<field name='helicopterName' type='SFString' value='Super Cobra' accessType='initializeOnly'
appinfo='name of specific helicopter'/> |
52 |
<field name='inFlight' type='SFBool' accessType='inputOnly'
appinfo='input event indicating that the aircraft is in flight'/> |
53 | </ProtoInterface> |
54 | <ProtoBody> |
55 | <Group> |
56 | <WorldInfo DEF='HeloWorldInfo'> |
57 | <IS> |
58 | <connect nodeField='title' protoField='helicopterName'/> |
59 | </IS> |
60 | </WorldInfo> |
61 | <Viewpoint DEF='HeloNameViewpoint' description='helicopter name overridden by protodeclare field' orientation='0 1 0 -1.57' position='-20 2 0'> |
62 | <IS> |
63 | <connect nodeField='description' protoField='helicopterName'/> |
64 | </IS> |
65 | </Viewpoint> |
66 | <LOD range='400'> |
67 | <Group DEF='DetailViewpoint'> |
68 | <Viewpoint description='SuperCobra Right' position='0 2 15'/> |
69 | <Viewpoint description='SuperCobra Front' orientation='0 1 0 1.57' position='15 2 0'/> |
70 | <Viewpoint description='SuperCobra Left' orientation='0 1 0 3.14' position='0 2 -15'/> |
71 | <Viewpoint description='SuperCobra Behind' orientation='0 1 0 4.71' position='-15 2 0'/> |
72 | <Viewpoint description='SuperCobra Top' orientation='-0.51 0.83 0.22 1.24' position='10 10 6'/> |
73 | <Viewpoint description='SuperCobra Bottom' orientation='0.82 0.22 -0.53 0.94' position='0 -12 10'/> |
74 | </Group> |
75 | <WorldInfo info='"null node"'/> |
76 | </LOD> |
77 |
<!-- ROUTE information for InFlightStatusScript node:
[from status to HeloFlyingAudioClip.set_loop
]
[from status to MainRotor.rotationOn
]
[from status to TailRotor.rotationOn
]
[from status to BottomACLightClock.set_enabled
]
[from status to TopACLightClock.set_enabled
]
-->
<Script DEF='InFlightStatusScript'> |
78 | <field name='inFlight' type='SFBool' accessType='inputOnly'/> |
79 | <field name='status' type='SFBool' accessType='outputOnly'/> |
80 | <IS> |
81 | <connect nodeField='inFlight' protoField='inFlight'/> |
82 | </IS> |
<![CDATA[
ecmascript: function inFlight(value, ts) { status = value; }
]]>
|
|
84 | </Script> |
85 | <Sound direction='1.0 1.0 1.0' maxBack='200.0' maxFront='200.0' minBack='20.0' minFront='20.0'> |
86 |
<!-- ROUTE information for HeloFlyingAudioClip node:
[from InFlightStatusScript.status to set_loop
]
-->
<AudioClip DEF='HeloFlyingAudioClip' description='helicopter flight sound' url=' "../../AircraftHelicopters/AH1SuperCobraUnitedStates/Hughes500HoverInteriorMedium-cd21-no59-10sec.wav" "https://savage.nps.edu/Savage/AircraftHelicopters/AH1SuperCobraUnitedStates/Hughes500HoverInteriorMedium-cd21-no59-10sec.wav" '/> |
87 | </Sound> |
88 | <!-- Tailboom --> |
89 | <Transform DEF='TailBoom' rotation='0 0 -1 1.66' scale='1.2 1.2 1.0' translation='-7.8 0.78 0.0'> |
90 | <!-- Tailboom shape --> |
91 | <Transform rotation='0 1 0 1.57'> |
92 | <Shape DEF='TailBoomShape'> |
93 | <IS> |
94 | <connect nodeField='appearance' protoField='tailBoomColor'/> |
95 | </IS> |
96 | <Extrusion convex='false' creaseAngle='0.8' crossSection='0.4 -0.5 -0.4 -0.5 -0.465 -0.465 -0.5 -0.4 -0.5 0.4 -0.465 0.465 -0.4 0.5 0.4 0.5 0.465 0.465 0.5 0.4 0.5 -0.4 0.465 -0.465 0.4 -0.5' endCap='false' orientation='0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0' scale='0.10 0.10 0.15 0.15 0.20 0.20 0.25 0.25 0.30 0.30 0.35 0.35 0.40 0.40 0.45 0.45 0.475 0.475 0.50 0.50 0.525 0.525 0.55 0.55 0.565 0.565 0.575 0.575 0.58 0.58 0.6 0.6' solid='false' spine='0.00 0.00 0.00 0.00 0.05 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 0.00 0.80 0.00 0.00 1.00 0.00 0.00 2.00 0.00 0.00 3.00 0.00 0.00 3.25 0.00 0.00 3.50 0.00 0.00 3.75 0.00 0.00 4.00 0.00 0.00 4.25 0.00 0.00 4.50 0.00'/> |
97 | </Shape> |
98 | </Transform> |
99 | <!-- AC Light --> |
100 | <Shape> |
101 | <Appearance> |
102 | <Material emissiveColor='1.0 1.0 1.0'/> |
103 | </Appearance> |
104 | <Sphere radius='.04'/> |
105 | </Shape> |
106 | <!-- Tail Rotor Drive Shaft --> |
107 | <Transform center='0.0 2.2 0.0' rotation='0.0 0.0 1.0 0.03' translation='-0.3 1.0 0.0'> |
108 | <Group> |
109 | <Shape DEF='TailRotorDriveShaftShape'> |
110 | <IS> |
111 | <connect nodeField='appearance' protoField='tailRotorDriveShaftColor'/> |
112 | </IS> |
113 | <Extrusion ccw='false' creaseAngle='1.5' crossSection='-0.03 0 -0.0276 -0.0114 -0.0213 -0.0213 -0.0114 -0.0276 0 -0.03 0.0114 -0.0276 0.0213 -0.0213 0.0276 -0.0114 0.03 0 0.0276 0.0114 0.0213 0.0213 0.0114 0.0276 0 0.03 -0.0114 0.0276 -0.0213 0.0213 -0.0276 0.0114 -0.03 0' scale='2 2 2.3 2.3 2 2' spine='-1.16 -1.0 0.0 0.0 0.0 0.0 0.0 3.6 0.0'/> |
114 | </Shape> |
115 | </Group> |
116 | </Transform> |
117 | <!-- Horizontal stabilizer --> |
118 | <Transform rotation='0.58 0.58 0.58 2.09' translation='0 0.1 0'> |
119 | <Transform rotation='0 0 1 3.14'> |
120 | <Shape DEF='HorizontalStabilizerShape'> |
121 | <IS> |
122 | <connect nodeField='appearance' protoField='horizontalStabilizerColor'/> |
123 | </IS> |
124 | <Extrusion convex='false' creaseAngle='0.8' crossSection='-2.7 0.0 -2.6 0.02 -2.5 0.04 -2.4 0.045 -2.32 0.04 -0.5 0.0 -2.32 -0.04 -2.4 -0.045 -2.5 -0.04 -2.6 -0.02 -2.7 0.0' scale='0.14 1.0 0.29 1.0 0.14 1.0' solid='false' spine='0.0 -0.85 0.0 0.0 0.0 0.0 0.0 0.85 0.0'/> |
125 | </Shape> |
126 | </Transform> |
127 | <Transform DEF='LeftVerticalStabilizer' rotation='1 0 0 -1.57' translation='-0.05 -0.85 0.325'> |
128 |
<!-- Shape
VerticalStabilizerShape is a DEF node that has 1 USE node: USE_1 -->
<Shape DEF='VerticalStabilizerShape'> |
129 | <IS> |
130 | <connect nodeField='appearance' protoField='tailBoomColor'/> |
131 | </IS> |
132 | <!-- right, left, bottom, lower front, upper front, top, lower back, upper back --> |
133 | <IndexedFaceSet convex='false' coordIndex='0 1 2 3 4 5 -1 6 11 10 9 8 7 -1 0 6 7 1 -1 1 7 8 2 -1 2 8 9 3 -1 3 9 10 4 -1 0 5 11 6 -1 5 4 10 11 -1'> |
134 | <Coordinate point='0.1 0.15 0.0 0.3 0.15 0.0 0.425 0.325 0.0 0.275 0.6 0.0 0.05 0.6 0.0 0.125 0.3 0.0 0.1 0.15 -0.04 0.3 0.15 -0.02 0.425 0.325 -0.02 0.275 0.6 -0.02 0.05 0.6 -0.04 0.125 0.3 -0.04'/> |
135 | </IndexedFaceSet> |
136 | </Shape> |
137 | </Transform> |
138 | <Transform DEF='RightVerticalStabilizer' rotation='1 0 0 -1.57' translation='-0.05 0.85 0.325'> |
139 | <Shape USE='VerticalStabilizerShape'/> |
140 | </Transform> |
141 | </Transform> |
142 | <!-- Vertical Fin --> |
143 | <Transform DEF='VerticalFin' rotation='0 0 1 1.57' scale='3.5 3.5 2.5' translation='1.45 0 0'> |
144 | <Shape DEF='VerticalFinShape'> |
145 | <IS> |
146 | <connect nodeField='appearance' protoField='tailBoomColor'/> |
147 | </IS> |
148 | <IndexedFaceSet convex='false' coordIndex='0 1 2 3 4 5 6 7 -1 8 15 14 13 12 11 10 9 -1 8 9 1 0 -1 9 10 2 1 -1 10 11 3 2 -1 11 12 4 3 -1 12 13 5 4 -1 5 13 14 6 -1 6 14 15 7 -1 0 7 15 8 -1'> |
149 | <Coordinate point='0.1 0.375 0.01 0.125 0.355 0.01 0.175 0.33 0.01 0.3 0.325 0.02 0.35 0.35 0.02 0.375 0.4 0.02 0.0 0.8 0.02 -0.1 0.7 0.01 0.1 0.375 -0.01 0.125 0.355 -0.01 0.175 0.33 -0.01 0.3 0.325 -0.02 0.35 0.35 -0.02 0.375 0.4 -0.02 0.0 0.8 -0.02 -0.1 0.7 -0.01'/> |
150 | </IndexedFaceSet> |
151 | </Shape> |
152 | <!-- Tail Stinger --> |
153 | <Transform rotation='0 0 -1 1.05' translation='0.07 0.29 0.0'> |
154 | <Shape> |
155 | |
156 | <Material diffuseColor='.25 .25 .25'/> |
157 | </Appearance> |
158 | <Cylinder height='0.2' radius='0.008'/> |
159 | </Shape> |
160 | <!-- Tip part --> |
161 | <Transform rotation='0 0 1 2.62' translation='-0.0075 -0.11 0'> |
162 | <Shape> |
163 | <Appearance USE='Gray'/> |
164 | <Cylinder height='0.04' radius='0.008'/> |
165 | </Shape> |
166 | </Transform> |
167 | </Transform> |
168 | </Transform> |
169 | <!-- Tail Rotor --> |
170 | <Transform translation='-1.25 0.0 0.25'> |
171 |
<!-- ROUTE information for TailRotor node:
[from InFlightStatusScript.status to rotationOn
]
-->
<ProtoInstance name='TwoBladeTailRotor' DEF='TailRotor'/> |
172 | </Transform> |
173 | </Transform> |
174 | <!-- Fuselage --> |
175 | <Transform DEF='FuselageBody' rotation='0 1 0 -1.57' translation='0.4 1.78 0.0'> |
176 | <Transform DEF='MainFuselageBody'> |
177 | <Shape DEF='MainFuselageShape'> |
178 | <IS> |
179 | <connect nodeField='appearance' protoField='fuselageColor'/> |
180 | </IS> |
181 | <IndexedFaceSet creaseAngle='1.57' coordIndex='7 6 5 4 3 2 1 0 -1 0 1 2 3 13 12 11 10 9 8 -1 10 11 12 13 23 22 21 20 -1 14 15 16 17 18 19 4 5 6 7 -1 24 25 26 27 19 18 17 16 -1 0 8 14 7 -1 20 21 22 23 31 30 29 28 -1 27 26 25 24 32 33 34 35 -1 28 29 30 31 39 38 37 36 -1 35 34 33 32 40 41 42 43 -1 9 10 20 24 16 15 -1 20 28 32 24 -1 28 36 40 32 -1 43 42 41 40 36 37 38 39 -1'> |
182 | <Coordinate point='-0.025 0.0 3.25 -0.3 0.0 2.0 -0.55 0.0 0.5 -0.6 0.0 -0.5 0.6 0.0 -0.5 0.55 0.0 0.5 0.3 0.0 2.0 0.025 0.0 3.25 -0.05 -1.0 3.5 -0.05 -1.0 3.0 -0.3 -1.0 3.0 -0.5 -1.0 2.0 -0.55 -1.0 0.0 -0.56 -1.0 -0.5 0.05 -1.0 3.5 0.05 -1.0 3.0 0.3 -1.0 3.0 0.5 -1.0 2.0 0.55 -1.0 0.0 0.56 -1.0 -0.5 -0.3 -1.7 3.0 -0.5 -1.9 2.0 -0.55 -1.9 0.0 -0.56 -1.9 -0.5 0.3 -1.7 3.0 0.5 -1.9 2.0 0.55 -1.9 0.0 0.56 -1.9 -0.5 -0.275 -1.76 3.0 -0.475 -1.96 2.0 -0.525 -1.96 0.0 -0.535 -1.96 -0.5 0.275 -1.76 3.0 0.475 -1.96 2.0 0.525 -1.96 0.0 0.535 -1.96 -0.5 -0.2 -1.8 3.0 -0.4 -2.0 2.0 -0.45 -2.0 0.0 -0.46 -2.0 -0.5 0.2 -1.8 3.0 0.4 -2.0 2.0 0.45 -2.0 0.0 0.46 -2.0 -0.5'/> |
183 | </IndexedFaceSet> |
184 | </Shape> |
185 | </Transform> |
186 | <!-- Left Engine --> |
187 | <Transform rotation='0 1 0 0.15' scale='0.6 0.9 1.0' translation='-0.65 -0.5 1.6'> |
188 | |
189 | <Shape DEF='EngineShape'> |
190 | <IS> |
191 | <connect nodeField='appearance' protoField='fuselageColor'/> |
192 | </IS> |
193 | <Extrusion creaseAngle='2.36' crossSection='-0.05 -5 -0.15 -4.95 -0.25 -4.8 -0.35 -4.45 -0.45 -4 -0.45 4 -0.35 4.45 -0.25 4.8 -0.15 4.95 -0.05 5 0.05 5 0.15 4.95 0.25 4.8 0.35 4.45 0.45 4 0.45 -4 0.35 -4.45 0.25 -4.8 0.15 -4.95 0.05 -5 -0.05 -5' spine='0.00 0.0 -2.00 0.77 0.0 -1.95 1.20 0.0 -1.80 1.41 0.0 -1.56 1.58 0.0 -1.15 1.58 0.0 0.00 1.58 0.0 1.15 1.41 0.0 1.56 1.20 0.0 1.80 0.77 0.0 1.95 0.00 0.0 2.00 -0.77 0.0 1.95 -1.20 0.0 1.80 -1.41 0.0 1.56 -1.58 0.0 1.15 -1.58 0.0 0.00 -1.58 0.0 -1.15 -1.41 0.0 -1.56 -1.20 0.0 -1.80 -0.77 0.0 -1.95 0.00 0.0 -2.00'/> |
194 | </Shape> |
195 | <Transform> |
196 | <Shape> |
197 |
<!-- Appearance
EngineInsideColor is a DEF node that has 1 USE node: USE_1 -->
<Appearance DEF='EngineInsideColor'> |
198 | <Material diffuseColor='0.25 0.25 0.25'/> |
199 | </Appearance> |
200 | <Extrusion ccw='false' crossSection='0.00 -2.00 0.77 -1.95 1.20 -1.80 1.41 -1.56 1.58 -1.15 1.58 0.00 1.58 1.15 1.41 1.56 1.20 1.80 0.77 1.95 0.00 2.00 -0.77 1.95 -1.20 1.80 -1.41 1.56 -1.58 1.15 -1.58 0.0 -1.58 -1.15 -1.41 -1.56 -1.20 -1.80 -0.77 -1.95 0.0 -2.0' spine='0.0 6.5 0.0 0.0 -3.0 0.0'/> |
201 | </Shape> |
202 | </Transform> |
203 | <Transform translation='0 6.6 0'> |
204 | <Shape> |
205 | <Appearance USE='EngineInsideColor'/> |
206 | <Extrusion crossSection='0.1 0.0 0.092 -0.038 0.071 -0.071 0.038 -0.092 0.0 -0.1 -0.038 -0.092 -0.071 -0.071 -0.092 -0.038 -0.1 0.0 -0.092 0.038 -0.071 0.071 -0.038 0.092 0.0 0.1 0.038 0.092 0.071 0.071 0.092 0.038 0.1 0.0' spine='0.0 0.0 -2.00 0.77 0.0 -1.95 1.20 0.0 -1.80 1.41 0.0 -1.56 1.58 0.0 -1.15 1.58 0.0 0.00 1.58 0.0 1.15 1.41 0.0 1.56 1.20 0.0 1.80 0.77 0.0 1.95 0.00 0.0 2.00 -0.77 0.0 1.95 -1.20 0.0 1.80 -1.41 0.0 1.56 -1.58 0.0 1.15 -1.58 0.0 0.0 -1.58 0.0 -1.15 -1.41 0.0 -1.56 -1.20 0.0 -1.80 -0.77 0.0 -1.95 0.0 0.0 -2.0'/> |
207 | </Shape> |
208 | </Transform> |
209 | <!-- Left Middle Strip --> |
210 | <Transform rotation='0.58 0.58 0.58 2.09' translation='-1.55 1.75 0'> |
211 | |
212 | <Appearance> |
213 | <Material diffuseColor='0.05 0.05 0.05'/> |
214 | </Appearance> |
215 | <Box size='9.5 0.3 0.1'/> |
216 | </Shape> |
217 | </Transform> |
218 | <!-- Right Middle Strip --> |
219 | <Transform rotation='0.58 0.58 0.58 2.09' translation='1.55 1.75 0'> |
220 | <Shape USE='EngineStripShape'/> |
221 | </Transform> |
222 | <!-- Left Upper Strip --> |
223 | <Transform rotation='0.58 0.58 0.58 2.09' translation='-1.55 1.75 -0.75'> |
224 | <Shape USE='EngineStripShape'/> |
225 | </Transform> |
226 | <!-- Right Upper Strip --> |
227 | <Transform rotation='0.58 0.58 0.58 2.09' translation='1.55 1.75 -0.75'> |
228 | <Shape USE='EngineStripShape'/> |
229 | </Transform> |
230 | <!-- Left Lower Strip --> |
231 | <Transform rotation='0.58 0.58 0.58 2.09' translation='-1.55 1.75 0.75'> |
232 | <Shape USE='EngineStripShape'/> |
233 | </Transform> |
234 | <!-- Right Lower Strip --> |
235 | <Transform rotation='0.58 0.58 0.58 2.09' translation='1.55 1.75 0.75'> |
236 | <Shape USE='EngineStripShape'/> |
237 | </Transform> |
238 | </Transform> |
239 | </Transform> |
240 | <!-- Right Engine --> |
241 | <Transform rotation='0 -1 0 0.15' scale='0.6 0.9 1.0' translation='0.65 -0.5 1.6'> |
242 | <Transform USE='Engine'/> |
243 | </Transform> |
244 | <!-- Cockpit --> |
245 | <Transform DEF='Cockpit' rotation='1 0 0 -1.57' translation='0.0 -0.4 1.51'> |
246 | <!-- Cockpit Bottom --> |
247 | <Transform DEF='CockpitBottom' rotation='0 1 0 3.14' translation='0 2 -1.6'> |
248 | <Shape DEF='CockpitBottomShape'> |
249 | <IS> |
250 | <connect nodeField='appearance' protoField='cockpitColor'/> |
251 | </IS> |
252 | <Extrusion beginCap='false' convex='false' creaseAngle='1.5' crossSection='-0.56 -0.65 -0.56 -0.3 -0.56 -0.05 -0.535 -0.02 -0.46 0.0 0.46 0.0 0.535 -0.02 0.56 -0.05 0.56 -0.3 0.56 -0.65' endCap='false' scale='1.0 2.5 1.0 2.0 1.0 1.61 0.9 1.25' solid='false' spine='0.0 0.0 0.0 0.0 0.375 0.0 0.0 1.25 0.0 0.0 2.15 0.0'/> |
253 | </Shape> |
254 | <!-- Front Cockpit Bottom --> |
255 | <Transform translation='0 0 -0.325'> |
256 | <Shape DEF='FrontCockpitBottomShape'> |
257 | <IS> |
258 | <connect nodeField='appearance' protoField='cockpitColor'/> |
259 | </IS> |
260 | <Extrusion beginCap='false' convex='false' creaseAngle='1.5' crossSection='-0.56 -0.65 -0.56 -0.3 -0.56 -0.05 -0.535 -0.02 -0.46 0.0 0.46 0.0 0.535 -0.02 0.56 -0.05 0.56 -0.3 0.56 -0.65' endCap='false' scale='0.9 0.75 0.85 0.56' solid='false' spine='0.0 2.15 0.0 0.0 2.56 0.0'/> |
261 | </Shape> |
262 | </Transform> |
263 | </Transform> |
264 | <!-- Cockpit Top --> |
265 | <Transform rotation='0 .71 .71 3.14' translation='0.0 2.0 0.4'> |
266 | <Shape DEF='CockpitTopShape'> |
267 | <IS> |
268 | <connect nodeField='appearance' protoField='cockpitColor'/> |
269 | </IS> |
270 | <IndexedFaceSet creaseAngle='1.57' coordIndex='0 1 17 -1 1 2 16 17 -1 2 3 15 16 -1 3 4 10 11 14 15 -1 4 5 9 10 -1 5 6 8 9 -1 6 7 8 -1 11 12 13 14 -1 14 13 12 11 -1 1 0 17 -1 2 1 17 16 -1 3 2 16 15 -1 4 3 15 14 11 10 -1 5 4 10 9 -1 6 5 9 8 -1 7 6 8 -1'> |
271 | <Coordinate point='0.56 -0.3 0.0 0.56 -0.1 0.0 0.56 -0.04 0.0 0.475 0.0 0.0 -0.475 0.0 0.0 -0.56 -0.04 0.0 -0.56 -0.1 0.0 -0.56 -0.3 0.0 -0.56 -0.1 0.06 -0.56 -0.04 0.08 -0.475 0.0 0.10 -0.300 0.0 0.12 -0.300 -0.03 0.5 0.300 -0.03 0.5 0.300 0.0 0.12 0.475 0.0 0.10 0.56 -0.04 0.08 0.56 -0.1 0.06'/> |
272 | </IndexedFaceSet> |
273 | </Shape> |
274 | <!-- Center Bars --> |
275 | <Shape DEF='CenterBarShape'> |
276 | <IS> |
277 | <connect nodeField='appearance' protoField='cockpitColor'/> |
278 | </IS> |
279 | <IndexedFaceSet coordIndex='3 2 1 0 -1 0 1 2 3 -1 4 5 6 7 -1 7 6 5 4 -1 17 16 9 8 -1 8 9 16 17 -1 16 15 10 9 -1 9 10 15 16 -1 15 14 11 10 -1 10 11 14 15 -1 14 13 12 11 -1 11 12 13 14 -1 23 18 17 8 -1 8 17 18 23 -1 22 19 18 23 -1 23 18 19 22 -1 22 21 20 19 -1 19 20 21 22 -1 31 30 29 28 27 26 25 24 -1 24 25 26 27 28 29 30 31 -1 39 38 37 36 35 34 33 32 -1 32 33 34 35 36 37 38 39 -1'> |
280 | <Coordinate DEF='CenterBarCoord' point='0.3 -0.03 0.5 0.3 -0.13 1.75 0.25 -0.13 1.75 0.25 -0.03 0.5 -0.3 -0.03 0.5 -0.3 -0.13 1.75 -0.25 -0.13 1.75 -0.25 -0.03 0.5 -0.3 -0.13 1.75 0.3 -0.13 1.75 0.4 -0.2 1.725 0.45 -0.3 1.7 0.56 -0.94 1.2 0.56 -0.95 1.25 0.45 -0.3 1.75 0.4 -0.2 1.775 0.3 -0.13 1.8 -0.3 -0.13 1.8 -0.4 -0.2 1.775 -0.45 -0.3 1.75 -0.56 -0.95 1.25 -0.56 -0.94 1.2 -0.45 -0.3 1.7 -0.4 -0.2 1.725 0.3 -0.13 1.75 0.3 -0.17 2.0 0.3 -0.25 2.1 0.3 -1.0 3.0 0.25 -1.0 3.0 0.25 -0.25 2.1 0.25 -0.17 2.0 0.25 -0.13 1.75 -0.3 -0.13 1.75 -0.3 -0.17 2.0 -0.3 -0.25 2.1 -0.3 -1.0 3.0 -0.25 -1.0 3.0 -0.25 -0.25 2.1 -0.25 -0.17 2.0 -0.25 -0.13 1.75'/> |
281 | </IndexedFaceSet> |
282 | </Shape> |
283 | <!-- Glass Panes --> |
284 | <Shape> |
285 | <Appearance> |
286 | <Material diffuseColor='0.75 0.75 0.75' transparency='0.5'/> |
287 | </Appearance> |
288 | <IndexedFaceSet creaseAngle='0.8' coordIndex='11 10 9 5 4 3 2 1 0 -1 0 1 2 3 4 5 9 10 11 -1 9 8 7 6 5 -1 5 6 7 8 9 -1 13 14 15 16 17 21 22 23 -1 23 22 21 17 16 15 14 13 -1 17 18 19 20 21 -1 21 20 19 18 17 -1 24 25 26 27 -1 27 26 25 24 -1 28 29 30 31 32 33 34 35 -1 35 34 33 32 31 30 29 28 -1 44 43 42 41 40 39 38 37 36 -1 36 37 38 39 40 41 42 43 44 -1 45 46 47 48 49 50 51 52 53 -1 53 52 51 50 49 48 47 46 45 -1'> |
289 | <Coordinate DEF='GlassPaneCoord' point='0.3 -0.03 0.5 0.3 0.0 0.12 0.475 0.0 0.10 0.56 -0.04 0.08 0.56 -0.1 0.06 0.56 -0.3 0.0 0.56 -0.38 0.0 0.56 -0.7 0.37 0.56 -0.94 1.2 0.45 -0.3 1.7 0.4 -0.2 1.725 0.3 -0.13 1.75 -0.3 -0.03 0.5 -0.3 0.0 0.12 -0.475 0.0 0.10 -0.56 -0.04 0.08 -0.56 -0.1 0.06 -0.56 -0.3 0.0 -0.56 -0.38 0.0 -0.56 -0.7 0.37 -0.56 -0.94 1.2 -0.45 -0.3 1.7 -0.4 -0.2 1.725 -0.3 -0.13 1.75 0.25 -0.03 0.5 0.25 -0.13 1.75 -0.25 -0.13 1.75 -0.25 -0.03 0.5 0.25 -0.13 1.8 0.25 -0.17 2.0 0.25 -0.25 2.1 0.25 -1.0 3.0 -0.25 -1.0 3.0 -0.25 -0.25 2.1 -0.25 -0.17 2.0 -0.25 -0.13 1.8 0.3 -0.13 1.8 0.4 -0.2 1.775 0.45 -0.3 1.75 0.56 -0.95 1.25 0.48 -1.31 2.55 0.3 -1.0 3.0 0.3 -0.25 2.1 0.3 -0.17 2.0 0.3 -0.13 1.8 -0.3 -0.13 1.8 -0.4 -0.2 1.775 -0.45 -0.3 1.75 -0.56 -0.95 1.25 -0.48 -1.31 2.55 -0.3 -1.0 3.0 -0.3 -0.25 2.1 -0.3 -0.17 2.0 -0.3 -0.13 1.8'/> |
290 | </IndexedFaceSet> |
291 | </Shape> |
292 | <!-- Nose --> |
293 | <Shape DEF='NoseShape1'> |
294 | <IS> |
295 | <connect nodeField='appearance' protoField='fuselageColor'/> |
296 | </IS> |
297 | <IndexedFaceSet creaseAngle='0.86' coordIndex='0 1 2 3 -1 0 3 4 -1 0 4 5 6 -1 9 8 7 1 -1 7 2 1 -1 3 2 10 11 -1 4 3 11 12 -1 5 4 12 13 -1 2 7 15 10 -1 7 8 14 15 -1 11 10 16 17 -1 11 17 18 19 -1 10 20 21 16 -1 21 18 17 16 -1 19 6 5 13 12 11 -1 20 10 15 14 8 9 -1 6 22 23 24 25 26 27 9 -1 27 26 25 24 23 22 6 -1 0 6 9 1 -1 6 5 28 22 -1 28 29 23 22 -1 29 30 24 23 -1 8 9 27 33 -1 32 33 27 26 -1 31 32 26 25 -1 30 31 25 24 -1 8 33 32 31 30 29 28 5 -1 41 40 39 38 37 36 35 34 -1'> |
298 | <Coordinate DEF='NoseCoord' point='0.3 -1.0 3.0 -0.3 -1.0 3.0 -0.1 -1.15 3.38 0.1 -1.15 3.38 0.20 -1.2 3.34 0.25 -1.31 3.2 0.48 -1.31 2.56 -0.20 -1.2 3.34 -0.25 -1.31 3.2 -0.48 -1.31 2.56 -0.025 -1.31 3.6 0.025 -1.31 3.6 0.115 -1.31 3.55 0.18 -1.31 3.45 -0.18 -1.31 3.45 -0.115 -1.31 3.55 -0.025 -1.5 3.55 0.025 -1.5 3.55 0.025 -1.555 3.2 0.025 -1.31 3.2 -0.025 -1.31 3.2 -0.025 -1.555 3.2 0.48 -1.635 2.56 0.455 -1.66 2.56 0.39 -1.675 2.56 -0.39 -1.675 2.56 -0.455 -1.66 2.56 -0.48 -1.635 2.56 0.25 -1.515 3.2 0.225 -1.54 3.25 0.16 -1.555 3.275 -0.16 -1.555 3.275 -0.225 -1.54 3.25 -0.25 -1.515 3.2 0.51 -1.635 2.15 0.51 -1.925 2.15 0.485 -1.975 2.15 0.42 -2.0 2.15 -0.42 -2.0 2.15 -0.485 -1.975 2.15 -0.51 -1.925 2.15 -0.51 -1.635 2.15'/> |
299 | </IndexedFaceSet> |
300 | </Shape> |
301 | <Transform translation='0.0 -2.865 0.0'> |
302 | <Shape DEF='NoseShape2'> |
303 | <IS> |
304 | <connect nodeField='appearance' protoField='fuselageColor'/> |
305 | </IS> |
306 | <Extrusion crossSection='0.11 -1.315 0.175 -1.34 0.2 -1.355 0.2 -1.515 0.175 -1.54 0.11 -1.555 -0.11 -1.555 -0.175 -1.54 -0.2 -1.515 -0.2 -1.355 -0.175 -1.34 -0.11 -1.315 0.11 -1.315' scale='0.7 1.0 0.7 1.0' spine='0.0 0.0 3.2 0.0 0.0 3.425'/> |
307 | </Shape> |
308 | </Transform> |
309 | </Transform> |
310 | <!-- Front Gun --> |
311 | <Transform translation='0 4.25 -1.35'> |
312 | <Shape DEF='FrontGunBaseShape'> |
313 | <IS> |
314 | <connect nodeField='appearance' protoField='fuselageColor'/> |
315 | </IS> |
316 | <Sphere radius='0.28'/> |
317 | </Shape> |
318 | <Transform translation='0.0 0.6 -0.05'> |
319 | <Shape> |
320 | <Appearance> |
321 | <Material diffuseColor='0.25 0.25 0.25'/> |
322 | </Appearance> |
323 | <Cylinder height='1.75' radius='0.05'/> |
324 | </Shape> |
325 | </Transform> |
326 | </Transform> |
327 | </Transform> |
328 | <!-- Cockpit Back Wall --> |
329 | <Transform translation='0 -0.575 -0.4'> |
330 | <Shape DEF='CockpitBackWallShape'> |
331 | <IS> |
332 | <connect nodeField='appearance' protoField='cockpitColor'/> |
333 | </IS> |
334 | <Box size='1.05 1.1 0.1'/> |
335 | </Shape> |
336 | </Transform> |
337 | <!-- Cockpit Floor --> |
338 | <Transform translation='0 -1.5 -1.8'> |
339 | <Shape DEF='CockpitFloorShape'> |
340 | <IS> |
341 | <connect nodeField='appearance' protoField='cockpitColor'/> |
342 | </IS> |
343 | <Box size='0.9 0.1 2.5'/> |
344 | </Shape> |
345 | </Transform> |
346 | <!-- Back Seat --> |
347 | <Transform translation='0 -1.2 -0.8'> |
348 | |
349 | <!-- Seat Bottom --> |
350 | <Shape> |
351 | |
352 | <Material diffuseColor='0.5 0.5 0.0'/> |
353 | </Appearance> |
354 | <Box size='1.0 0.4 0.8'/> |
355 | </Shape> |
356 | <!-- Seat Back --> |
357 | <Transform translation='0 0.45 0.35'> |
358 | <Shape> |
359 | <Appearance USE='SeatColor'/> |
360 | <Box size='0.75 0.5 0.1'/> |
361 | </Shape> |
362 | <!-- Side Wings & Head Rest --> |
363 | <Shape> |
364 | <Appearance> |
365 | <Material diffuseColor='0.6 0.6 0'/> |
366 | </Appearance> |
367 | <IndexedFaceSet coordIndex='0 1 2 3 4 -1 0 4 3 8 9 5 -1 9 8 7 6 5 -1 0 5 6 1 -1 8 3 2 7 -1 14 13 12 11 10 -1 15 19 18 13 14 10 -1 15 16 17 18 19 -1 15 10 11 16 -1 13 18 17 12 -1 23 22 0 10 -1 25 24 21 20 -1 22 25 20 0 -1 24 23 10 21 -1 22 23 24 25 -1'> |
368 | <Coordinate point='0.375 0.25 -0.05 0.375 -0.25 -0.15 0.375 -0.25 0.05 0.375 0.3 0.05 0.375 0.28 0.0 0.425 0.25 -0.05 0.5 -0.25 -0.15 0.5 -0.25 0.05 0.425 0.3 0.05 0.425 0.28 0.0 -0.375 0.25 -0.05 -0.375 -0.25 -0.15 -0.375 -0.25 0.05 -0.375 0.3 0.05 -0.375 0.28 0.0 -0.425 0.25 -0.05 -0.5 -0.25 -0.15 -0.5 -0.25 0.05 -0.425 0.3 0.05 -0.425 0.28 0.0 0.375 0.25 0.05 -0.375 0.25 0.05 0.3 0.5 -0.05 -0.3 0.5 -0.05 -0.3 0.5 0.05 0.3 0.5 0.05'/> |
369 | </IndexedFaceSet> |
370 | </Shape> |
371 | </Transform> |
372 | </Group> |
373 | </Transform> |
374 | <!-- Front Seat --> |
375 | <Transform translation='0 -1.4 -2.0'> |
376 | <Group USE='Seat'/> |
377 | </Transform> |
378 | </Transform> |
379 | <!-- Fuselage Bottom --> |
380 | <Group DEF='FuselageBottom'> |
381 | <Transform translation='-0.25 -0.25 0.0'> |
382 | <Shape> |
383 | <Appearance DEF='Black'> |
384 | <Material diffuseColor='0.0 0.0 0.0'/> |
385 | </Appearance> |
386 | <Box size='0.5 0.1 0.5'/> |
387 | </Shape> |
388 | </Transform> |
389 | <!-- Bottom A/C Light --> |
390 | <Transform translation='-1.0 -0.25 0.0'> |
391 | <Shape> |
392 | <Appearance> |
393 |
<!-- ROUTE information for BottomLightColor node:
[from BottomLightColorPath.value_changed to set_emissiveColor
]
-->
<Material DEF='BottomLightColor' diffuseColor='0.4 0.4 0.4'/> |
394 | </Appearance> |
395 | <Sphere radius='0.04'/> |
396 | </Shape> |
397 | <Shape> |
398 | <Appearance> |
399 | <Material diffuseColor='0.1 0.1 0.1'/> |
400 | </Appearance> |
401 | <Cylinder height='0.05' radius='0.06'/> |
402 | </Shape> |
403 | </Transform> |
404 | <!-- Animation Clock --> |
405 |
<!-- ROUTE information for BottomACLightClock node:
[from InFlightStatusScript.status to set_enabled
]
[from fraction_changed to BottomLightColorPath.set_fraction
]
-->
<TimeSensor DEF='BottomACLightClock' enabled='false' loop='true'/> |
406 | <!-- Animation Path --> |
407 |
<!-- ROUTE information for BottomLightColorPath node:
[from BottomACLightClock.fraction_changed to set_fraction
]
[from value_changed to BottomLightColor.set_emissiveColor
]
-->
<ColorInterpolator DEF='BottomLightColorPath' key='0.0 0.5 0.5 1.0' keyValue='1.0 0.0 0.0 1.0 0.0 0.0 1.0 1.0 1.0 1.0 1.0 1.0'/> |
408 | </Group> |
409 | <!-- Cowling --> |
410 | <Transform DEF='Cowling' scale='0.55 0.65 0.6' translation='0.48 1.8 0.0'> |
411 | <Transform rotation='0 1 0 -1.57'> |
412 | <Shape DEF='CowlingShape'> |
413 | <IS> |
414 | <connect nodeField='appearance' protoField='cowlingColor'/> |
415 | </IS> |
416 | <Extrusion creaseAngle='0.8' crossSection='0.05 -0.75 -0.05 -0.75 -0.2 -0.65 -0.35 -0.5 -0.65 0.0 -0.65 1.5 -0.6 2.5 -0.4 3.25 0.0 4.0 0.4 3.25 0.6 2.5 0.65 1.5 0.65 0.0 0.35 -0.5 0.2 -0.65 0.05 -0.75' scale='1.0 1.0 0.8 0.8 0.65 0.65' spine='0.0 0.0 0.0 0.0 0.6 0.0 0.0 1.0 0.0'/> |
417 | </Shape> |
418 | </Transform> |
419 | <!-- Top A/C Light --> |
420 | <Transform translation='-1.5 1.04 0.0'> |
421 | <Shape> |
422 | <Appearance> |
423 |
<!-- ROUTE information for TopLightColor node:
[from TopLightColorPath.value_changed to set_emissiveColor
]
-->
<Material DEF='TopLightColor' diffuseColor='0.4 0.4 0.4'/> |
424 | </Appearance> |
425 | <Sphere radius='0.04'/> |
426 | </Shape> |
427 | <Shape> |
428 | <Appearance> |
429 | <Material diffuseColor='0.1 0.1 0.1'/> |
430 | </Appearance> |
431 | <Cylinder height='0.05' radius='0.06'/> |
432 | </Shape> |
433 | </Transform> |
434 | <!-- Animation Clock --> |
435 |
<!-- ROUTE information for TopACLightClock node:
[from InFlightStatusScript.status to set_enabled
]
[from fraction_changed to TopLightColorPath.set_fraction
]
-->
<TimeSensor DEF='TopACLightClock' enabled='false' loop='true'/> |
436 | <!-- Animation Path --> |
437 |
<!-- ROUTE information for TopLightColorPath node:
[from TopACLightClock.fraction_changed to set_fraction
]
[from value_changed to TopLightColor.set_emissiveColor
]
-->
<ColorInterpolator DEF='TopLightColorPath' key='0.0 0.5 0.5 1.0' keyValue='1.0 0.0 0.0 1.0 0.0 0.0 1.0 1.0 1.0 1.0 1.0 1.0'/> |
438 | </Transform> |
439 | <!-- Right Skid --> |
440 | <Transform rotation='0 0 1 -1.57' translation='0.75 -1 1.15'> |
441 | <Inline url=' "../../AircraftHelicopters/AH1SuperCobraUnitedStates/SkidRight.x3d" "https://savage.nps.edu/Savage/AircraftHelicopters/AH1SuperCobraUnitedStates/SkidRight.x3d" "../../AircraftHelicopters/AH1SuperCobraUnitedStates/SkidRight.wrl" "https://savage.nps.edu/Savage/AircraftHelicopters/AH1SuperCobraUnitedStates/SkidRight.wrl" '/> |
442 | </Transform> |
443 | <!-- Left Skid --> |
444 | <Transform rotation='-0.71 0.71 0 -3.14' translation='0.75 -1 -1.15'> |
445 | <Inline url=' "../../AircraftHelicopters/AH1SuperCobraUnitedStates/SkidLeft.x3d" "https://savage.nps.edu/Savage/AircraftHelicopters/AH1SuperCobraUnitedStates/SkidLeft.x3d" "../../AircraftHelicopters/AH1SuperCobraUnitedStates/SkidLeft.wrl" "https://savage.nps.edu/Savage/AircraftHelicopters/AH1SuperCobraUnitedStates/SkidLeft.wrl" '/> |
446 | </Transform> |
447 | <!-- Right Wing --> |
448 | <Transform rotation='0 0.71 0.71 3.14' translation='-1.0 0.5 0.6'> |
449 | <Group DEF='RightWing'> |
450 | <Shape DEF='RightWingShape'> |
451 | <IS> |
452 | <connect nodeField='appearance' protoField='fuselageColor'/> |
453 | </IS> |
454 | <Extrusion crossSection='-4.2 0.0 -4.1 0.02 -4.0 0.04 -3.9 0.045 -3.82 0.04 -2.0 0.0 -3.82 -0.04 -3.9 -0.045 -4.0 -0.04 -4.1 -0.02 -4.2 0.0' scale='0.475 1.0 0.3 1.0' spine='0.1 0.0 0.0 0.0 1.8 0.0'/> |
455 | </Shape> |
456 | <!-- End Wing Attachment --> |
457 | <Transform rotation='1 0 0 3.14' translation='-1.4 1.75 -0.15'> |
458 |
<!-- Shape
WingAttachmentShape is a DEF node that has 3 USE nodes: USE_1, USE_2, USE_3 -->
<Shape DEF='WingAttachmentShape'> |
459 | <IS> |
460 | <connect nodeField='appearance' protoField='fuselageColor'/> |
461 | </IS> |
462 | <Extrusion crossSection='-0.1 0.0 0.1 0.0 0.1 -0.2 -0.1 -0.2 -0.1 0.0' scale='0.9 0.9 0.95 0.95 1.0 1.0 1.0 1.0 0.5 0.5 0.45 0.45 0.4 0.4' spine='0.0 0.0 0.0 0.05 0.0 0.0 0.1 0.0 0.0 0.6 0.0 0.0 1.0 0.0 0.0 1.05 0.0 0.0 1.1 0.0 0.0'/> |
463 | </Shape> |
464 | </Transform> |
465 | <!-- Middle Wing Attachment --> |
466 | <Transform rotation='1 0 0 3.14' translation='-1.7 0.75 -0.15'> |
467 | <Shape USE='WingAttachmentShape'/> |
468 | </Transform> |
469 | </Group> |
470 | <!-- Right Rocket Pod --> |
471 | <Transform rotation='0 0 1 1.57' translation='-1 1.6 -0.5'> |
472 |
<!-- Inline
RocketPod is a DEF node that has 1 USE node: USE_1 --> <Inline DEF='RocketPod' url=' "../../AircraftHelicopters/AH1SuperCobraUnitedStates/RocketPod.x3d" "https://savage.nps.edu/Savage/AircraftHelicopters/AH1SuperCobraUnitedStates/RocketPod.x3d" "../../AircraftHelicopters/AH1SuperCobraUnitedStates/RocketPod.wrl" "https://savage.nps.edu/Savage/AircraftHelicopters/AH1SuperCobraUnitedStates/RocketPod.wrl" '/> |
473 | </Transform> |
474 | </Transform> |
475 | <!-- Left Wing --> |
476 | <Transform rotation='0 0.71 0.71 3.14' translation='-1.0 0.5 -0.6'> |
477 | <Group DEF='LeftWing'> |
478 | <Shape DEF='LeftWingShape'> |
479 | <IS> |
480 | <connect nodeField='appearance' protoField='fuselageColor'/> |
481 | </IS> |
482 | <Extrusion convex='false' crossSection='4.2 0.0 4.1 -0.02 4.0 -0.04 3.9 -0.045 3.82 -0.04 2.0 0.0 3.82 0.04 3.9 0.045 4.0 0.04 4.1 0.02 4.2 0.0' scale='0.475 1.0 0.3 1.0' spine='0.1 -0.0 0.0 0.0 -1.8 0.0'/> |
483 | </Shape> |
484 | <!-- End Wing Attachment --> |
485 | <Transform rotation='1 0 0 3.14' translation='-1.4 -1.75 -0.15'> |
486 | <Shape USE='WingAttachmentShape'/> |
487 | </Transform> |
488 | <!-- Middle Wing Attachment --> |
489 | <Transform rotation='1 0 0 3.14' translation='-1.7 -0.75 -0.15'> |
490 | <Shape USE='WingAttachmentShape'/> |
491 | </Transform> |
492 | </Group> |
493 | <!-- Inline Left Rocket Pod --> |
494 | <Transform rotation='0 0 1 1.57' translation='-1 -1.6 -0.5'> |
495 | <Inline USE='RocketPod'/> |
496 | </Transform> |
497 | </Transform> |
498 | <!-- Main Rotor --> |
499 | <Transform translation='0 2.7 0'> |
500 |
<!-- ROUTE information for MainRotor node:
[from InFlightStatusScript.status to rotationOn
]
-->
<ProtoInstance name='FourBladeMainRotor' DEF='MainRotor'/> |
501 | </Transform> |
502 | </Group> |
503 | < ROUTE fromNode='InFlightStatusScript' fromField='status' toNode='HeloFlyingAudioClip' toField='set_loop'/> |
504 | < ROUTE fromNode='InFlightStatusScript' fromField='status' toNode='MainRotor' toField='rotationOn'/> |
505 | < ROUTE fromNode='InFlightStatusScript' fromField='status' toNode='TailRotor' toField='rotationOn'/> |
506 | < ROUTE fromNode='InFlightStatusScript' fromField='status' toNode='BottomACLightClock' toField='set_enabled'/> |
507 | < ROUTE fromNode='InFlightStatusScript' fromField='status' toNode='TopACLightClock' toField='set_enabled'/> |
508 | < ROUTE fromNode='BottomACLightClock' fromField='fraction_changed' toNode='BottomLightColorPath' toField='set_fraction'/> |
509 | < ROUTE fromNode='BottomLightColorPath' fromField='value_changed' toNode='BottomLightColor' toField='set_emissiveColor'/> |
510 | < ROUTE fromNode='TopACLightClock' fromField='fraction_changed' toNode='TopLightColorPath' toField='set_fraction'/> |
511 | < ROUTE fromNode='TopLightColorPath' fromField='value_changed' toNode='TopLightColor' toField='set_emissiveColor'/> |
512 | </ProtoBody> |
513 | </ProtoDeclare> |
514 | <!-- ================================================================================================================ --> |
515 | <!-- Example Helicopters --> |
516 | <Background skyColor='.4 .4 .6'/> |
517 | <Anchor description='Link to example' url=' "SuperCobraExample.x3d" "https://savage.nps.edu/Savage/AircraftHelicopters/AH1SuperCobraUnitedStates/SuperCobraExample.x3d" "SuperCobraExample.wrl" "https://savage.nps.edu/Savage/AircraftHelicopters/AH1SuperCobraUnitedStates/SuperCobraExample.wrl" '> |
518 | <!-- Selectable Text design pattern has transparent Box and TouchSensor description as a tooltip --> |
519 | <Group> |
520 | <Shape> |
521 | <!-- TODO adjust Text string and Box size, then set Material transparency='1' --> |
522 | <Text string='"Example ProtoInstance" "found at" "SuperCobraExample.x3d"'> |
523 | <FontStyle family='"SANS"' justify='"MIDDLE" "MIDDLE"' style='BOLD'/> |
524 | </Text> |
525 | <Appearance> |
526 | <Material diffuseColor='0.9 0.9 0.9'/> |
527 | </Appearance> |
528 | </Shape> |
529 | <Shape> |
530 | <!-- Author TODO: to adjust transparent Box as text-selection assist, set width and height to match size, then set transparency='1' to make invisible. --> |
531 | <Box size='10 3 .001'/> |
532 | <Appearance> |
533 | <Material transparency='1'/> |
534 | </Appearance> |
535 | </Shape> |
536 | </Group> |
537 | </Anchor> |
538 | </Scene> |
539 | </X3D> |
Event Graph ROUTE Table entries with 9 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.
InFlightStatusScript
Script status SFBool |
HeloFlyingAudioClip
AudioClip set_loop SFBool |
|||||||||
InFlightStatusScript
Script status SFBool |
MainRotor
ProtoInstance rotationOn SFBool |
|||||||||
InFlightStatusScript
Script status SFBool |
TailRotor
ProtoInstance rotationOn SFBool |
|||||||||
InFlightStatusScript
Script status SFBool |
BottomACLightClock
TimeSensor set_enabled SFBool |
then
|
BottomACLightClock
TimeSensor fraction_changed SFFloat |
BottomLightColorPath
ColorInterpolator set_fraction SFFloat |
then
|
BottomLightColorPath
ColorInterpolator value_changed SFColor |
BottomLightColor
Material set_emissiveColor SFColor |
|||
InFlightStatusScript
Script status SFBool |
TopACLightClock
TimeSensor set_enabled SFBool |
then
|
TopACLightClock
TimeSensor fraction_changed SFFloat |
TopLightColorPath
ColorInterpolator set_fraction SFFloat |
then
|
TopLightColorPath
ColorInterpolator value_changed SFColor |
TopLightColor
Material set_emissiveColor SFColor |
MainRotor
ProtoInstance FourBladeMainRotor |
No ROUTE connection found for output events from this node. This ProtoInstance contains SFNode/MFNode fieldValue declarations with direct access to other nodes, and thus has potential to produce run-time animation. |
TailRotor
ProtoInstance TwoBladeTailRotor |
No ROUTE connection found for output events from this node. This ProtoInstance contains SFNode/MFNode fieldValue declarations with direct access to other nodes, and thus has potential to produce run-time animation. |
line 517
Anchor |
description='Link to example' User-interaction hint for this node. |
<!--
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)
<ProtoInstance name='ProtoName'>
<field
name='fieldName'/> </ProtoInstance>
-->
<!--
For additional help information about X3D scenes, please see X3D Tooltips, X3D Resources, and X3D Scene Authoring Hints.
-->