1 |
<?xml version="1.0" encoding="UTF-8"?>
|
2 |
<!DOCTYPE X3D PUBLIC "ISO//Web3D//DTD X3D 3.0//EN" "https://www.web3d.org/specifications/x3d-3.0.dtd">
|
3 | <X3D profile='Immersive' version='3.0' xmlns:xsd='http://www.w3.org/2001/XMLSchema-instance' xsd:noNamespaceSchemaLocation='https://www.web3d.org/specifications/x3d-3.0.xsd'> |
4 | <head> |
5 | <meta name='title' content='PlayGround.x3d'/> |
6 | <meta name='description' content='Display the playground, with swing, slides and few benches.'/> |
7 | <meta name='creator' content='Ms Ng, Hwee Ping'/> |
8 | <meta name='created' content='26 August 2004'/> |
9 | <meta name='modified' content='20 October 2019'/> |
10 | <meta name='identifier' content='https://savage.nps.edu/Savage/Buildings/ZenCondominium/PlayGround.x3d'/> |
11 | <meta name='generator' content='X3D-Edit 3.2, https://savage.nps.edu/X3D-Edit'/> |
12 | <meta name='license' content='../../license.html'/> |
13 | </head> |
14 | <Scene> |
15 | <NavigationInfo avatarSize='2 1.6 0.75'/> |
16 | <Transform DEF='Elevated_Ground' rotation='1 0 0 1.57' translation='2.5 -1.2 0'> |
17 | <Shape> |
18 | <Box size='12 10 0.3'/> |
19 | <Appearance> |
20 | <Material diffuseColor='0.65 0.588 0.373'/> |
21 | <TextureTransform scale='3 24'/> |
22 | </Appearance> |
23 | </Shape> |
24 | </Transform> |
25 | <Transform DEF='Bench_1' rotation='0 1 0 1.57' scale='0.5 0.5 0.5' translation='-2.5 -1.05 -1'> |
26 |
<!-- LOD
Wooden_Bench is a DEF node that has 3 USE nodes: USE_1, USE_2, USE_3 -->
<LOD DEF='Wooden_Bench' range='50 250'> |
27 | <Group DEF='LODHigh2'> |
28 | <Transform DEF='YCoordinateAdjust2' translation='0 0.725 0'> |
29 | |
30 | <Transform rotation='1 0 0 1.57'> |
31 | <Shape> |
32 | <Box size='2 0.20 0.05'/> |
33 | |
34 | <Material diffuseColor='0.545 0.227 0.227'/> |
35 | </Appearance> |
36 | </Shape> |
37 | </Transform> |
38 | <Transform rotation='1 0 0 1.57' translation='0 0 0.25'> |
39 | <Shape> |
40 | <Box size='2 0.20 0.05'/> |
41 | <Appearance USE='WoodColor'/> |
42 | </Shape> |
43 | </Transform> |
44 | <Transform rotation='1 0 0 1.57' translation='0 0 0.5'> |
45 | <Shape> |
46 | <Box size='2 0.20 0.05'/> |
47 | <Appearance USE='WoodColor'/> |
48 | </Shape> |
49 | </Transform> |
50 | </Group> |
51 | <Group DEF='UnderBenchBars1'> |
52 | <Transform rotation='0 1 0 1.57' translation='0 0 1.2'> |
53 | <Transform translation='0.95 -0.045 0.75'> |
54 | <Shape> |
55 | <Box size='0.7 0.15 0.05'/> |
56 | <Appearance USE='WoodColor'/> |
57 | </Shape> |
58 | </Transform> |
59 | </Transform> |
60 | <Transform rotation='0 1 0 1.57' translation='0 0 1.2'> |
61 | <Transform translation='0.95 -0.045 -0.75'> |
62 | <Shape> |
63 | <Box size='0.7 0.15 0.05'/> |
64 | <Appearance USE='WoodColor'/> |
65 | </Shape> |
66 | </Transform> |
67 | </Transform> |
68 | </Group> |
69 | <Group DEF='UnderBenchBars2'> |
70 | <Transform rotation='0 1 0 1.57' translation='0 0 1.2'> |
71 | <Transform translation='0.95 -0.045 0.6'> |
72 | <Shape> |
73 | <Box size='0.7 0.15 0.05'/> |
74 | <Appearance USE='WoodColor'/> |
75 | </Shape> |
76 | </Transform> |
77 | </Transform> |
78 | <Transform rotation='0 1 0 1.57' translation='0 0 1.2'> |
79 | <Transform translation='0.95 -0.045 -0.6'> |
80 | <Shape> |
81 | <Box size='0.7 0.15 0.05'/> |
82 | <Appearance USE='WoodColor'/> |
83 | </Shape> |
84 | </Transform> |
85 | </Transform> |
86 | </Group> |
87 | |
88 | <Transform rotation='0 1 0 1.57' translation='0 0 1.2'> |
89 | <Transform rotation='0 0 1 1.57' translation='1.2 -0.35 0.67'> |
90 | <Shape> |
91 | <Box size='0.7 0.1 0.1'/> |
92 | <Appearance USE='WoodColor'/> |
93 | </Shape> |
94 | </Transform> |
95 | </Transform> |
96 | <Transform rotation='0 1 0 1.57' translation='0 0 1.2'> |
97 | <Transform rotation='0 0 1 1.57' translation='0.7 -0.35 0.67'> |
98 | <Shape> |
99 | <Box size='0.7 0.1 0.1'/> |
100 | <Appearance USE='WoodColor'/> |
101 | </Shape> |
102 | </Transform> |
103 | </Transform> |
104 | <Transform rotation='0 1 0 1.57' translation='0 0 1.2'> |
105 | <Transform rotation='0 0 1 1.57' translation='1.2 -0.35 -0.67'> |
106 | <Shape> |
107 | <Box size='0.7 0.1 0.1'/> |
108 | <Appearance USE='WoodColor'/> |
109 | </Shape> |
110 | </Transform> |
111 | </Transform> |
112 | <Transform rotation='0 1 0 1.57' translation='0 0 1.2'> |
113 | <Transform rotation='0 0 1 1.57' translation='0.7 -0.35 -0.67'> |
114 | <Shape> |
115 | <Box size='0.7 0.1 0.1'/> |
116 | <Appearance USE='WoodColor'/> |
117 | </Shape> |
118 | </Transform> |
119 | </Transform> |
120 | </Group> |
121 | </Transform> |
122 | </Group> |
123 | <Group DEF='LODMed2'> |
124 | <Transform DEF='YCoordinateAdjustLODMed2' translation='0 0.725 0'> |
125 | <Group USE='Bench'/> |
126 | <Group USE='ChairLegs'/> |
127 | </Transform> |
128 | </Group> |
129 | <WorldInfo info='"null node"'/> |
130 | </LOD> |
131 | </Transform> |
132 | <Transform DEF='Bench_2' rotation='0 1 0 1.57' scale='0.5 0.5 0.5' translation='-2.5 -1.05 0'> |
133 | <LOD USE='Wooden_Bench'/> |
134 | </Transform> |
135 | <Transform DEF='Bench_3' rotation='0 1 0 1.57' scale='0.5 0.5 0.5' translation='-2.5 -1.05 2'> |
136 | <LOD USE='Wooden_Bench'/> |
137 | </Transform> |
138 | <Transform DEF='Bench_4' rotation='0 1 0 1.57' scale='0.5 0.5 0.5' translation='-2.5 -1.05 3'> |
139 | <LOD USE='Wooden_Bench'/> |
140 | </Transform> |
141 | <Transform DEF='Swing' translation='0.5 -0.3 -3'> |
142 | <Group> |
143 | <Transform> |
144 | <Group> |
145 | <Transform center='0 1 0' rotation='1 0 0 0.5' translation='-2 0 0'> |
146 |
<!-- Shape
SWINGVBarGP is a DEF node that has 3 USE nodes: USE_1, USE_2, USE_3 -->
<Shape DEF='SWINGVBarGP'> |
147 | <Cylinder radius='0.1'/> |
148 | <Appearance> |
149 | <Material diffuseColor='0 0 0' shininess='0.7'/> |
150 |
<!-- ImageTexture
WOODTexture1 is a DEF node that has 1 USE node: USE_1 --> <ImageTexture DEF='WOODTexture1' url=' "Wood.jpg ![]() ![]() |
151 | </Appearance> |
152 | </Shape> |
153 | </Transform> |
154 | <Transform center='0 1 0' rotation='1 0 0 -0.5' translation='-2 0 0'> |
155 | <Shape USE='SWINGVBarGP'/> |
156 | </Transform> |
157 | <Transform center='0 1 0' rotation='1 0 0 0.5' translation='2 0 0'> |
158 | <Shape USE='SWINGVBarGP'/> |
159 | </Transform> |
160 | <Transform center='0 1 0' rotation='1 0 0 -0.5' translation='2 0 0'> |
161 | <Shape USE='SWINGVBarGP'/> |
162 | </Transform> |
163 | <Transform rotation='0 0 1 1.57' translation='0 1 0'> |
164 | <Shape DEF='SWINGCBarSH'> |
165 | <Cylinder height='4.2' radius='0.1'/> |
166 | <Appearance> |
167 | <Material/> |
168 | <ImageTexture USE='WOODTexture1'/> |
169 | </Appearance> |
170 | </Shape> |
171 | </Transform> |
172 | <Transform translation='-1 0.85 0'> |
173 | |
174 | <Transform rotation='0 0 1 1.57' scale='0.03 0.03 0.03'> |
175 | <Shape> |
176 | <Appearance> |
177 | <Material diffuseColor='1 1 1'/> |
178 | </Appearance> |
179 | <Extrusion beginCap='false' convex='false' creaseAngle='1.57' crossSection='1.00 0.00 0.92 -0.38 0.71 -0.71 0.38 -0.92 0.00 -1.00 -0.38 -0.92 -0.71 -0.71 -0.92 -0.38 -1.00 -0.00 -0.92 0.38 -0.71 0.71 -0.38 0.92 0.00 1.00 0.38 0.92 0.71 0.71 0.92 0.38 1.00 0.00' endCap='false' spine='2.00 0.0 0.00 1.85 0.0 0.77 1.41 0.0 1.41 0.77 0.0 1.85 0.00 0.0 2.00 -0.77 0.0 1.85 -1.41 0.0 1.41 -1.85 0.0 0.77 -2.00 0.0 0.00 -1.85 0.0 -0.77 -1.41 0.0 -1.41 -0.77 0.0 -1.85 0.00 0.0 -2.00 0.77 0.0 -1.85 1.41 0.0 -1.41 1.85 0.0 -0.77 2.00 0.0 0.00'/> |
180 | </Shape> |
181 | </Transform> |
182 | </Group> |
183 | </Transform> |
184 | <Transform translation='-0.5 0.85 0'> |
185 | <Group USE='LOOPGP'/> |
186 | </Transform> |
187 | <Transform translation='0.5 0.85 0'> |
188 | <Group USE='LOOPGP'/> |
189 | </Transform> |
190 | <Transform translation='1 0.85 0'> |
191 | <Group USE='LOOPGP'/> |
192 | </Transform> |
193 |
<!-- ROUTE information for SWINGSensor node:
[from touchTime to SWINGSEAT1Timer.set_startTime
]
[from touchTime to SWINGSEAT2Timer.set_startTime
]
-->
<TouchSensor DEF='SWINGSensor' description='Swing Sensor'/> |
194 | <Transform/> |
195 | </Group> |
196 | <Transform> |
197 | <Group> |
198 | <Transform> |
199 |
<!-- ROUTE information for SWINGSEAT1TX node:
[from SWINGSEAT1Inter.value_changed to set_rotation
]
-->
<Transform DEF='SWINGSEAT1TX' center='0 0.85 0' rotation='1 0 0 0.0001'> |
200 | <Group DEF='SWINGSEAT1GP'> |
201 | <Group> |
202 | <Transform scale='0.5 0.5 0.5' translation='-1 0.8 0'> |
203 | |
204 | <Transform rotation='1 0 0 1.57' scale='0.05 0.05 0.05'> |
205 | |
206 | |
207 | <Material diffuseColor='1 1 1'/> |
208 | </Appearance> |
209 | <Extrusion beginCap='false' convex='false' creaseAngle='1.57' crossSection='1.00 0.00 0.92 -0.38 0.71 -0.71 0.38 -0.92 0.00 -1.00 -0.38 -0.92 -0.71 -0.71 -0.92 -0.38 -1.00 -0.00 -0.92 0.38 -0.71 0.71 -0.38 0.92 0.00 1.00 0.38 0.92 0.71 0.71 0.92 0.38 1.00 0.00' endCap='false' spine='2.00 0.0 0.00 1.85 0.0 0.77 1.41 0.0 1.41 0.77 0.0 1.85 0.00 0.0 2.00 -0.77 0.0 1.85 -1.41 0.0 1.41 -1.85 0.0 0.77 -2.00 0.0 0.00 -1.85 0.0 -0.77 -1.41 0.0 -1.41 -0.77 0.0 -1.85 0.00 0.0 -2.00 0.77 0.0 -1.85 1.41 0.0 -1.41 1.85 0.0 -0.77 2.00 0.0 0.00'/> |
210 | </Shape> |
211 | </Transform> |
212 | <Transform scale='0.05 0.05 0.05' translation='0 -1.475 0'> |
213 | <Shape> |
214 | <Appearance USE='ROPEApp'/> |
215 | <Cylinder height='55'/> |
216 | </Shape> |
217 | </Transform> |
218 | </Group> |
219 | <Transform translation='1 0 0'> |
220 | <Group USE='ROPELeft'/> |
221 | </Transform> |
222 | <Transform translation='0.5 -2.85 0'> |
223 | <Shape> |
224 | <Box size='1.15 0.08 0.3'/> |
225 | <Appearance> |
226 | <Material diffuseColor='0.95 0.1 0.1' emissiveColor='0.05 0.05 0.05'/> |
227 | </Appearance> |
228 | </Shape> |
229 | </Transform> |
230 |
<!-- ROUTE information for SWINGSEAT1Sensor node:
[from touchTime to SWINGSEAT1Timer.set_startTime
]
-->
<TouchSensor DEF='SWINGSEAT1Sensor' description='Swing Seat Sensor'/> |
231 |
<!-- ROUTE information for SWINGSEAT1Timer node:
[from SWINGSensor.touchTime to set_startTime
]
[from SWINGSEAT1Sensor.touchTime to set_startTime
]
[from fraction_changed to SWINGSEAT1Inter.set_fraction
]
-->
<TimeSensor DEF='SWINGSEAT1Timer' cycleInterval='40'/> |
232 |
<!-- ROUTE information for SWINGSEAT1Inter node:
[from SWINGSEAT1Timer.fraction_changed to set_fraction
]
[from value_changed to SWINGSEAT1TX.set_rotation
]
-->
<OrientationInterpolator DEF='SWINGSEAT1Inter' key='0 0.025 0.075 0.125 0.175 0.225 0.275 0.325 0.375 0.425 0.475 0.525 0.575 0.625 0.675 0.725 0.775 0.825 0.875 0.925 0.975 1.0' keyValue='1 0 0 0 1 0 0 0.785 1 0 0 -1.2 1 0 0 1.2 1 0 0 -1.3 1 0 0 1.3 1 0 0 -1.35 1 0 0 1.35 1 0 0 -1.2 1 0 0 1.2 1 0 0 -1.25 1 0 0 0.785 1 0 0 -1.2 1 0 0 1.2 1 0 0 -1.3 1 0 0 1.3 1 0 0 -1.35 1 0 0 1.35 1 0 0 -1.2 1 0 0 1.2 1 0 0 -1.25 1 0 0 0'/> |
233 | </Transform> |
234 | </Group> |
235 | </Group> |
236 | </Transform> |
237 | </Transform> |
238 |
<!-- ROUTE information for SWINGSEAT2TX node:
[from SWINGSEAT2Inter.value_changed to set_rotation
]
-->
<Transform DEF='SWINGSEAT2TX' center='0 0.85 0'> |
239 | <Group DEF='SWINGSEAT2GP'> |
240 | <Group> |
241 | <Transform scale='0.5 0.5 0.5' translation='-1 0.8 0'> |
242 | <Transform translation='3 0 0'> |
243 | |
244 | <Transform rotation='1 0 0 1.57' scale='0.05 0.05 0.05'> |
245 | <Shape USE='SWINRING'/> |
246 | </Transform> |
247 | <Transform scale='0.05 0.05 0.05' translation='0 -1.37 0'> |
248 | <Shape> |
249 | <Appearance USE='ROPEApp'/> |
250 | <Cylinder height='50'/> |
251 | </Shape> |
252 | </Transform> |
253 | </Group> |
254 | <Transform translation='1 0 0'> |
255 | <Group USE='ROPELeft2'/> |
256 | </Transform> |
257 | <Transform translation='0.5 -2.6 0'> |
258 | <Shape> |
259 | <Box size='1.15 0.08 0.3'/> |
260 | <Appearance> |
261 | <Material diffuseColor='0.1 0.1 0.95' emissiveColor='0.05 0.05 0.1'/> |
262 | </Appearance> |
263 | </Shape> |
264 | </Transform> |
265 |
<!-- ROUTE information for SWINGSEAT2Sensor node:
[from touchTime to SWINGSEAT2Timer.set_startTime
]
-->
<TouchSensor DEF='SWINGSEAT2Sensor' description='Swing Seat 2 Sensor'/> |
266 |
<!-- ROUTE information for SWINGSEAT2Timer node:
[from SWINGSensor.touchTime to set_startTime
]
[from SWINGSEAT2Sensor.touchTime to set_startTime
]
[from fraction_changed to SWINGSEAT2Inter.set_fraction
]
-->
<TimeSensor DEF='SWINGSEAT2Timer' cycleInterval='35'/> |
267 |
<!-- ROUTE information for SWINGSEAT2Inter node:
[from SWINGSEAT2Timer.fraction_changed to set_fraction
]
[from value_changed to SWINGSEAT2TX.set_rotation
]
-->
<OrientationInterpolator DEF='SWINGSEAT2Inter' key='0 0.025 0.075 0.125 0.175 0.225 0.275 0.325 0.375 0.425 0.475 0.525 0.575 0.625 0.675 0.725 0.775 0.825 0.875 0.925 0.975 1.0' keyValue='1 0 0 0 1 0 0 0.785 1 0 0 -1.25 1 0 0 1.3 1 0 0 -1.3 1 0 0 1.35 1 0 0 -1.35 1 0 0 1.25 1 0 0 -1.25 1 0 0 1.2 1 0 0 -1.2 1 0 0 0.785 1 0 0 -1.25 1 0 0 1.3 1 0 0 -1.3 1 0 0 1.35 1 0 0 -1.35 1 0 0 1.25 1 0 0 -1.25 1 0 0 1.2 1 0 0 -1.2 1 0 0 0'/> |
268 | </Transform> |
269 | </Transform> |
270 | </Group> |
271 | </Group> |
272 | </Transform> |
273 | </Group> |
274 | </Transform> |
275 | <Transform/> |
276 | < ROUTE fromNode='SWINGSensor' fromField='touchTime' toNode='SWINGSEAT1Timer' toField='set_startTime'/> |
277 | < ROUTE fromNode='SWINGSensor' fromField='touchTime' toNode='SWINGSEAT2Timer' toField='set_startTime'/> |
278 | < ROUTE fromNode='SWINGSEAT1Sensor' fromField='touchTime' toNode='SWINGSEAT1Timer' toField='set_startTime'/> |
279 | < ROUTE fromNode='SWINGSEAT1Timer' fromField='fraction_changed' toNode='SWINGSEAT1Inter' toField='set_fraction'/> |
280 | < ROUTE fromNode='SWINGSEAT1Inter' fromField='value_changed' toNode='SWINGSEAT1TX' toField='set_rotation'/> |
281 | < ROUTE fromNode='SWINGSEAT2Sensor' fromField='touchTime' toNode='SWINGSEAT2Timer' toField='set_startTime'/> |
282 | < ROUTE fromNode='SWINGSEAT2Timer' fromField='fraction_changed' toNode='SWINGSEAT2Inter' toField='set_fraction'/> |
283 | < ROUTE fromNode='SWINGSEAT2Inter' fromField='value_changed' toNode='SWINGSEAT2TX' toField='set_rotation'/> |
284 | </Transform> |
285 | </Group> |
286 | </Transform> |
287 | <Transform translation='1.6 -0.6 2'> |
288 | <Group DEF='SeeSaw'> |
289 |
<!-- ROUTE information for SEESAWTx node:
[from SEESAWInt.value_changed to set_rotation
]
-->
<Transform DEF='SEESAWTx' rotation='0 0 1 -0.22'> |
290 | <Group DEF='SEESAW'> |
291 | <Transform> |
292 | <Shape DEF='Plank1'> |
293 | <Box size='4 0.05 0.3'/> |
294 | <Appearance> |
295 | <Material diffuseColor='0.9 0.3 0.1'/> |
296 | </Appearance> |
297 | </Shape> |
298 | </Transform> |
299 | <Transform translation='1.6 0.1 -0.1'> |
300 | |
301 | <Cylinder height='0.15' radius='0.03'/> |
302 | <Appearance> |
303 | <Material diffuseColor='0.7 0.7 0.7'/> |
304 | </Appearance> |
305 | </Shape> |
306 | </Transform> |
307 | <Transform translation='-1.6 0.1 0.1'> |
308 | <Shape USE='Rod1'/> |
309 | </Transform> |
310 | <Transform translation='-1.6 0.1 -0.1'> |
311 | <Shape USE='Rod1'/> |
312 | </Transform> |
313 | <Transform translation='1.6 0.1 0.1'> |
314 | <Shape USE='Rod1'/> |
315 | </Transform> |
316 | <Transform rotation='1 0 0 1.575' scale='1.2 2.5 1' translation='1.6 0.18 0'> |
317 | <Shape USE='Rod1'/> |
318 | </Transform> |
319 | <Transform rotation='1 0 0 1.575' scale='1.2 2.5 1' translation='-1.6 0.18 0'> |
320 | <Shape USE='Rod1'/> |
321 | </Transform> |
322 |
<!-- ROUTE information for SEESAWSensor node:
[from touchTime to SEESAWTimer.set_startTime
]
-->
<TouchSensor DEF='SEESAWSensor' description='See Saw Sensor'/> |
323 |
<!-- ROUTE information for SEESAWTimer node:
[from SEESAWSensor.touchTime to set_startTime
]
[from fraction_changed to SEESAWInt.set_fraction
]
-->
<TimeSensor DEF='SEESAWTimer' cycleInterval='10'/> |
324 |
<!-- ROUTE information for SEESAWInt node:
[from SEESAWTimer.fraction_changed to set_fraction
]
[from value_changed to SEESAWTx.set_rotation
]
-->
<OrientationInterpolator DEF='SEESAWInt' key='0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0' keyValue='0 0 1 -0.22 0 0 1 0.22 0 0 1 -0.22 0 0 1 0.22 0 0 1 -0.22 0 0 1 0.22 0 0 1 -0.22 0 0 1 0.22 0 0 1 -0.22 0 0 1 0.22 0 0 1 -0.22'/> |
325 | </Group> |
326 | </Transform> |
327 | <Transform> |
328 | <Group DEF='SEESAWBody'> |
329 | <Transform translation='0 0 0.2'> |
330 | |
331 | <Transform rotation='1 0 0 1.575'> |
332 | <Shape> |
333 | <Cylinder height='0.05' radius='0.2'/> |
334 | |
335 | <Material diffuseColor='0.1 0.1 0.9'/> |
336 | </Appearance> |
337 | </Shape> |
338 | </Transform> |
339 | <Transform translation='0 -0.2 0'> |
340 | <Shape> |
341 | <Box size='0.4 0.6 0.05'/> |
342 | <Appearance USE='PanelApp'/> |
343 | </Shape> |
344 | </Transform> |
345 | <Transform translation='1.6 0 0.1'> |
346 | <Shape/> |
347 | </Transform> |
348 | </Group> |
349 | </Transform> |
350 | <Transform translation='0 0 -0.2'> |
351 | <Group USE='SidePanel'/> |
352 | </Transform> |
353 | <Transform DEF='Pivot' rotation='1 0 0 1.575'> |
354 | <Shape> |
355 | <Cylinder height='0.5' radius='0.024'/> |
356 | <Appearance USE='PanelApp'/> |
357 | </Shape> |
358 | </Transform> |
359 | </Group> |
360 | < ROUTE fromNode='SEESAWSensor' fromField='touchTime' toNode='SEESAWTimer' toField='set_startTime'/> |
361 | < ROUTE fromNode='SEESAWTimer' fromField='fraction_changed' toNode='SEESAWInt' toField='set_fraction'/> |
362 | < ROUTE fromNode='SEESAWInt' fromField='value_changed' toNode='SEESAWTx' toField='set_rotation'/> |
363 | </Transform> |
364 | </Group> |
365 | </Transform> |
366 | <Transform translation='1.6 -0.6 0.5'> |
367 | <Group DEF='SeeSaw1'> |
368 |
<!-- ROUTE information for SEESAWTx1 node:
[from SEESAWInt1.value_changed to set_rotation
]
-->
<Transform DEF='SEESAWTx1' rotation='0 0 1 -0.22'> |
369 | <Group DEF='SEESAW1'> |
370 | <Transform> |
371 | <Shape DEF='Plank'> |
372 | <Box size='4 0.05 0.3'/> |
373 | <Appearance> |
374 | <Material diffuseColor='0.9 0.3 0.1'/> |
375 | </Appearance> |
376 | </Shape> |
377 | </Transform> |
378 | <Transform translation='1.6 0.1 -0.1'> |
379 | |
380 | <Cylinder height='0.15' radius='0.03'/> |
381 | <Appearance> |
382 | <Material diffuseColor='0.7 0.7 0.7'/> |
383 | </Appearance> |
384 | </Shape> |
385 | </Transform> |
386 | <Transform translation='-1.6 0.1 0.1'> |
387 | <Shape USE='ROD'/> |
388 | </Transform> |
389 | <Transform translation='-1.6 0.1 -0.1'> |
390 | <Shape USE='ROD'/> |
391 | </Transform> |
392 | <Transform translation='1.6 0.1 0.1'> |
393 | <Shape USE='ROD'/> |
394 | </Transform> |
395 | <Transform rotation='1 0 0 1.575' scale='1.2 2.5 1' translation='1.6 0.18 0'> |
396 | <Shape USE='ROD'/> |
397 | </Transform> |
398 | <Transform rotation='1 0 0 1.575' scale='1.2 2.5 1' translation='-1.6 0.18 0'> |
399 | <Shape USE='ROD'/> |
400 | </Transform> |
401 |
<!-- ROUTE information for SEESAWSensor1 node:
[from touchTime to SEESAWTimer1.set_startTime
]
-->
<TouchSensor DEF='SEESAWSensor1' description='See Saw Sensor'/> |
402 |
<!-- ROUTE information for SEESAWTimer1 node:
[from SEESAWSensor1.touchTime to set_startTime
]
[from fraction_changed to SEESAWInt1.set_fraction
]
-->
<TimeSensor DEF='SEESAWTimer1' cycleInterval='10'/> |
403 |
<!-- ROUTE information for SEESAWInt1 node:
[from SEESAWTimer1.fraction_changed to set_fraction
]
[from value_changed to SEESAWTx1.set_rotation
]
-->
<OrientationInterpolator DEF='SEESAWInt1' key='0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0' keyValue='0 0 1 -0.22 0 0 1 0.22 0 0 1 -0.22 0 0 1 0.22 0 0 1 -0.22 0 0 1 0.22 0 0 1 -0.22 0 0 1 0.22 0 0 1 -0.22 0 0 1 0.22 0 0 1 -0.22'/> |
404 | </Group> |
405 | </Transform> |
406 | <Transform> |
407 | <Group DEF='SEESAWBody1'> |
408 | <Transform translation='0 0 0.2'> |
409 | |
410 | <Transform rotation='1 0 0 1.575'> |
411 | <Shape> |
412 | <Cylinder height='0.05' radius='0.2'/> |
413 | |
414 | <Material diffuseColor='0.1 0.1 0.9'/> |
415 | </Appearance> |
416 | </Shape> |
417 | </Transform> |
418 | <Transform translation='0 -0.2 0'> |
419 | <Shape> |
420 | <Box size='0.4 0.6 0.05'/> |
421 | <Appearance USE='PANELApp'/> |
422 | </Shape> |
423 | </Transform> |
424 | <Transform translation='1.6 0 0.1'> |
425 | <Shape/> |
426 | </Transform> |
427 | </Group> |
428 | </Transform> |
429 | <Transform translation='0 0 -0.2'> |
430 | <Group USE='SIDEPanel'/> |
431 | </Transform> |
432 | <Transform DEF='PIVOT' rotation='1 0 0 1.575'> |
433 | <Shape> |
434 | <Cylinder height='0.5' radius='0.024'/> |
435 | <Appearance USE='PANELApp'/> |
436 | </Shape> |
437 | </Transform> |
438 | </Group> |
439 | < ROUTE fromNode='SEESAWSensor1' fromField='touchTime' toNode='SEESAWTimer1' toField='set_startTime'/> |
440 | < ROUTE fromNode='SEESAWTimer1' fromField='fraction_changed' toNode='SEESAWInt1' toField='set_fraction'/> |
441 | < ROUTE fromNode='SEESAWInt1' fromField='value_changed' toNode='SEESAWTx1' toField='set_rotation'/> |
442 | </Transform> |
443 | </Group> |
444 | </Transform> |
445 | <Transform translation='6 -0.5 0'> |
446 | <Group DEF='Train1'> |
447 |
<!-- ROUTE information for TrainTx1 node:
[from TrainInt1.value_changed to set_rotation
]
-->
<Transform DEF='TrainTx1'> |
448 | <Group DEF='TRAIN1'> |
449 | <Transform rotation='1 0 0 3.14' scale='1.2 1.2 1.2' translation='-0.8 -0.08 -0.22'> |
450 | |
451 | <Appearance> |
452 | <Material diffuseColor='1 0 0'/> |
453 | </Appearance> |
454 | <Extrusion creaseAngle='0.785' crossSection='0 0.4 0 0 0.2 0 0.21 -0.05 0.22 -0.06 0.23 -0.07 0.24 -0.08 0.25 -0.1 0.26 -0.11 0.27 -0.111 0.28 -0.113 0.29 -0.115 0.3 -0.113 0.31 -0.111 0.32 -0.11 0.35 -0.1 0.37 -0.08 0.4 0 0.9 0 0.91 -0.05 0.92 -0.06 0.93 -0.07 0.94 -0.08 0.95 -0.1 0.96 -0.11 0.97 -0.111 0.98 -0.113 0.99 -0.115 1 -0.113 1.01 -0.111 1.02 -0.11 1.05 -0.1 1.07 -0.08 1.09 0 1.4 0 1.4 0.4 1.1 0.4 1.1 0.5 0.7 0.5 0.7 0.4 0 0.4' solid='false' spine='0 0 0 0 0 0.02'/> |
455 | </Shape> |
456 | </Transform> |
457 | <Transform rotation='1 0 0 3.14' scale='1.2 1.2 1.2' translation='-0.8 -0.08 0.26'> |
458 | <Shape USE='Panel1'/> |
459 | </Transform> |
460 | <Transform> |
461 | <Shape DEF='Seat1'> |
462 | <Box size='0.6 0.1 0.48'/> |
463 | <Appearance> |
464 | <Material diffuseColor='1 1 0'/> |
465 | </Appearance> |
466 | </Shape> |
467 | </Transform> |
468 |
<!-- ROUTE information for TrainSensor1 node:
[from touchTime to TrainTimer1.set_startTime
]
-->
<TouchSensor DEF='TrainSensor1' description='Train Sensor'/> |
469 |
<!-- ROUTE information for TrainTimer1 node:
[from TrainSensor1.touchTime to set_startTime
]
[from fraction_changed to TrainInt1.set_fraction
]
-->
<TimeSensor DEF='TrainTimer1' cycleInterval='10'/> |
470 |
<!-- ROUTE information for TrainInt1 node:
[from TrainTimer1.fraction_changed to set_fraction
]
[from value_changed to TrainTx1.set_rotation
]
-->
<OrientationInterpolator DEF='TrainInt1' key='0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0' keyValue='0 0 1 -0.22 0 0 1 0.22 0 0 1 -0.22 0 0 1 0.22 0 0 1 -0.22 0 0 1 0.22 0 0 1 -0.22 0 0 1 0.22 0 0 1 -0.22 0 0 1 0.22 0 0 1 0'/> |
471 | </Group> |
472 | </Transform> |
473 | <Transform> |
474 | <Group DEF='TrainP1'> |
475 | <Transform translation='0 0 0.3'> |
476 |
<!-- Group
SIDEPanel1 is a DEF node that has 1 USE node: USE_1 -->
<Group DEF='SIDEPanel1'> |
477 | <Transform rotation='1 0 0 1.575'> |
478 | <Shape> |
479 | <Cylinder height='0.05' radius='0.2'/> |
480 | <Appearance DEF='PANELApp1'> |
481 | <Material diffuseColor='0.1 0.1 0.9'/> |
482 | </Appearance> |
483 | </Shape> |
484 | </Transform> |
485 | <Transform translation='0 -0.2 0'> |
486 | <Shape> |
487 | <Box size='0.4 0.6 0.05'/> |
488 | <Appearance USE='PANELApp'/> |
489 | </Shape> |
490 | </Transform> |
491 | <Transform translation='1.6 0 0.1'> |
492 | <Shape/> |
493 | </Transform> |
494 | </Group> |
495 | </Transform> |
496 | <Transform translation='0 0 -0.3'> |
497 | <Group USE='SIDEPanel1'/> |
498 | </Transform> |
499 | <Transform DEF='PIVOT1' rotation='1 0 0 1.575'> |
500 | <Shape> |
501 | <Cylinder height='0.7' radius='0.024'/> |
502 | <Appearance USE='PANELApp'/> |
503 | </Shape> |
504 | </Transform> |
505 | </Group> |
506 | < ROUTE fromNode='TrainSensor1' fromField='touchTime' toNode='TrainTimer1' toField='set_startTime'/> |
507 | < ROUTE fromNode='TrainTimer1' fromField='fraction_changed' toNode='TrainInt1' toField='set_fraction'/> |
508 | < ROUTE fromNode='TrainInt1' fromField='value_changed' toNode='TrainTx1' toField='set_rotation'/> |
509 | </Transform> |
510 | </Group> |
511 | </Transform> |
512 | <Transform translation='6 -0.5 2.3'> |
513 | <Group DEF='Train2'> |
514 |
<!-- ROUTE information for TrainTx2 node:
[from TrainInt2.value_changed to set_rotation
]
-->
<Transform DEF='TrainTx2'> |
515 | <Group DEF='TRAIN2'> |
516 | <Transform rotation='1 0 0 3.14' scale='1.2 1.2 1.2' translation='-0.8 -0.08 -0.22'> |
517 | |
518 | <Appearance> |
519 | <Material diffuseColor='1 0 0'/> |
520 | </Appearance> |
521 | <Extrusion creaseAngle='0.785' crossSection='0 0.4 0 0 0.2 0 0.21 -0.05 0.22 -0.06 0.23 -0.07 0.24 -0.08 0.25 -0.1 0.26 -0.11 0.27 -0.111 0.28 -0.113 0.29 -0.115 0.3 -0.113 0.31 -0.111 0.32 -0.11 0.35 -0.1 0.37 -0.08 0.4 0 0.9 0 0.91 -0.05 0.92 -0.06 0.93 -0.07 0.94 -0.08 0.95 -0.1 0.96 -0.11 0.97 -0.111 0.98 -0.113 0.99 -0.115 1 -0.113 1.01 -0.111 1.02 -0.11 1.05 -0.1 1.07 -0.08 1.09 0 1.4 0 1.4 0.4 1.1 0.4 1.1 0.5 0.7 0.5 0.7 0.4 0 0.4' solid='false' spine='0 0 0 0 0 0.02'/> |
522 | </Shape> |
523 | </Transform> |
524 | <Transform rotation='1 0 0 3.14' scale='1.2 1.2 1.2' translation='-0.8 -0.08 0.26'> |
525 | <Shape USE='Panel2'/> |
526 | </Transform> |
527 | <Transform> |
528 | <Shape DEF='Seat2'> |
529 | <Box size='0.6 0.1 0.48'/> |
530 | <Appearance> |
531 | <Material diffuseColor='1 1 0'/> |
532 | </Appearance> |
533 | </Shape> |
534 | </Transform> |
535 |
<!-- ROUTE information for TrainSensor2 node:
[from touchTime to TrainTimer2.set_startTime
]
-->
<TouchSensor DEF='TrainSensor2' description='Train Sensor'/> |
536 |
<!-- ROUTE information for TrainTimer2 node:
[from TrainSensor2.touchTime to set_startTime
]
[from fraction_changed to TrainInt2.set_fraction
]
-->
<TimeSensor DEF='TrainTimer2' cycleInterval='10'/> |
537 |
<!-- ROUTE information for TrainInt2 node:
[from TrainTimer2.fraction_changed to set_fraction
]
[from value_changed to TrainTx2.set_rotation
]
-->
<OrientationInterpolator DEF='TrainInt2' key='0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0' keyValue='0 0 1 -0.22 0 0 1 0.22 0 0 1 -0.22 0 0 1 0.22 0 0 1 -0.22 0 0 1 0.22 0 0 1 -0.22 0 0 1 0.22 0 0 1 -0.22 0 0 1 0.22 0 0 1 0'/> |
538 | </Group> |
539 | </Transform> |
540 | <Transform> |
541 | <Group DEF='TrainP2'> |
542 | <Transform translation='0 0 0.3'> |
543 |
<!-- Group
SIDEPanel2 is a DEF node that has 1 USE node: USE_1 -->
<Group DEF='SIDEPanel2'> |
544 | <Transform rotation='1 0 0 1.575'> |
545 | <Shape> |
546 | <Cylinder height='0.05' radius='0.2'/> |
547 | <Appearance DEF='PANELApp2'> |
548 | <Material diffuseColor='0.1 0.1 0.9'/> |
549 | </Appearance> |
550 | </Shape> |
551 | </Transform> |
552 | <Transform translation='0 -0.2 0'> |
553 | <Shape> |
554 | <Box size='0.4 0.6 0.05'/> |
555 | <Appearance USE='PANELApp'/> |
556 | </Shape> |
557 | </Transform> |
558 | <Transform translation='1.6 0 0.1'> |
559 | <Shape/> |
560 | </Transform> |
561 | </Group> |
562 | </Transform> |
563 | <Transform translation='0 0 -0.3'> |
564 | <Group USE='SIDEPanel2'/> |
565 | </Transform> |
566 | <Transform DEF='PIVOT2' rotation='1 0 0 1.575'> |
567 | <Shape> |
568 | <Cylinder height='0.7' radius='0.024'/> |
569 | <Appearance USE='PANELApp'/> |
570 | </Shape> |
571 | </Transform> |
572 | </Group> |
573 | < ROUTE fromNode='TrainSensor2' fromField='touchTime' toNode='TrainTimer2' toField='set_startTime'/> |
574 | < ROUTE fromNode='TrainTimer2' fromField='fraction_changed' toNode='TrainInt2' toField='set_fraction'/> |
575 | < ROUTE fromNode='TrainInt2' fromField='value_changed' toNode='TrainTx2' toField='set_rotation'/> |
576 | </Transform> |
577 | </Group> |
578 | </Transform> |
579 | <Transform translation='6 -0.5 -2.3'> |
580 | <Group DEF='Train3'> |
581 |
<!-- ROUTE information for TrainTx3 node:
[from TrainInt3.value_changed to set_rotation
]
-->
<Transform DEF='TrainTx3'> |
582 | <Group DEF='TRAIN3'> |
583 | <Transform rotation='1 0 0 3.14' scale='1.2 1.2 1.2' translation='-0.8 -0.08 -0.22'> |
584 | |
585 | <Appearance> |
586 | <Material diffuseColor='1 0 0'/> |
587 | </Appearance> |
588 | <Extrusion creaseAngle='0.785' crossSection='0 0.4 0 0 0.2 0 0.21 -0.05 0.22 -0.06 0.23 -0.07 0.24 -0.08 0.25 -0.1 0.26 -0.11 0.27 -0.111 0.28 -0.113 0.29 -0.115 0.3 -0.113 0.31 -0.111 0.32 -0.11 0.35 -0.1 0.37 -0.08 0.4 0 0.9 0 0.91 -0.05 0.92 -0.06 0.93 -0.07 0.94 -0.08 0.95 -0.1 0.96 -0.11 0.97 -0.111 0.98 -0.113 0.99 -0.115 1 -0.113 1.01 -0.111 1.02 -0.11 1.05 -0.1 1.07 -0.08 1.09 0 1.4 0 1.4 0.4 1.1 0.4 1.1 0.5 0.7 0.5 0.7 0.4 0 0.4' solid='false' spine='0 0 0 0 0 0.02'/> |
589 | </Shape> |
590 | </Transform> |
591 | <Transform rotation='1 0 0 3.14' scale='1.2 1.2 1.2' translation='-0.8 -0.08 0.26'> |
592 | <Shape USE='Panel3'/> |
593 | </Transform> |
594 | <Transform> |
595 | <Shape DEF='Seat3'> |
596 | <Box size='0.6 0.1 0.48'/> |
597 | <Appearance> |
598 | <Material diffuseColor='1 1 0'/> |
599 | </Appearance> |
600 | </Shape> |
601 | </Transform> |
602 |
<!-- ROUTE information for TrainSensor3 node:
[from touchTime to TrainTimer3.set_startTime
]
-->
<TouchSensor DEF='TrainSensor3' description='Train Sensor'/> |
603 |
<!-- ROUTE information for TrainTimer3 node:
[from TrainSensor3.touchTime to set_startTime
]
[from fraction_changed to TrainInt3.set_fraction
]
-->
<TimeSensor DEF='TrainTimer3' cycleInterval='10'/> |
604 |
<!-- ROUTE information for TrainInt3 node:
[from TrainTimer3.fraction_changed to set_fraction
]
[from value_changed to TrainTx3.set_rotation
]
-->
<OrientationInterpolator DEF='TrainInt3' key='0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0' keyValue='0 0 1 -0.22 0 0 1 0.22 0 0 1 -0.22 0 0 1 0.22 0 0 1 -0.22 0 0 1 0.22 0 0 1 -0.22 0 0 1 0.22 0 0 1 -0.22 0 0 1 0.22 0 0 1 0'/> |
605 | </Group> |
606 | </Transform> |
607 | <Transform> |
608 | <Group DEF='TrainP3'> |
609 | <Transform translation='0 0 0.3'> |
610 |
<!-- Group
SIDEPanel3 is a DEF node that has 1 USE node: USE_1 -->
<Group DEF='SIDEPanel3'> |
611 | <Transform rotation='1 0 0 1.575'> |
612 | <Shape> |
613 | <Cylinder height='0.05' radius='0.2'/> |
614 | <Appearance DEF='PANELApp3'> |
615 | <Material diffuseColor='0.1 0.1 0.9'/> |
616 | </Appearance> |
617 | </Shape> |
618 | </Transform> |
619 | <Transform translation='0 -0.2 0'> |
620 | <Shape> |
621 | <Box size='0.4 0.6 0.05'/> |
622 | <Appearance USE='PANELApp'/> |
623 | </Shape> |
624 | </Transform> |
625 | <Transform translation='1.6 0 0.1'> |
626 | <Shape/> |
627 | </Transform> |
628 | </Group> |
629 | </Transform> |
630 | <Transform translation='0 0 -0.3'> |
631 | <Group USE='SIDEPanel3'/> |
632 | </Transform> |
633 | <Transform DEF='PIVOT3' rotation='1 0 0 1.575'> |
634 | <Shape> |
635 | <Cylinder height='0.7' radius='0.024'/> |
636 | <Appearance USE='PANELApp'/> |
637 | </Shape> |
638 | </Transform> |
639 | </Group> |
640 | < ROUTE fromNode='TrainSensor3' fromField='touchTime' toNode='TrainTimer3' toField='set_startTime'/> |
641 | < ROUTE fromNode='TrainTimer3' fromField='fraction_changed' toNode='TrainInt3' toField='set_fraction'/> |
642 | < ROUTE fromNode='TrainInt3' fromField='value_changed' toNode='TrainTx3' toField='set_rotation'/> |
643 | </Transform> |
644 | </Group> |
645 | </Transform> |
646 | <Viewpoint description='Playground' orientation='-0.811 -0.585 -0.002 0.6085' position='-1.7 4.5 10.3'/> |
647 | </Scene> |
648 | </X3D> |
Event Graph ROUTE Table entries with 23 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.
SEESAWSensor
TouchSensor touchTime SFTime |
SEESAWTimer
TimeSensor set_startTime SFTime |
then
|
SEESAWTimer
TimeSensor fraction_changed SFFloat |
SEESAWInt
OrientationInterpolator set_fraction SFFloat |
then
|
SEESAWInt
OrientationInterpolator value_changed SFRotation |
SEESAWTx
Transform set_rotation SFRotation |
SEESAWSensor1
TouchSensor touchTime SFTime |
SEESAWTimer1
TimeSensor set_startTime SFTime |
then
|
SEESAWTimer1
TimeSensor fraction_changed SFFloat |
SEESAWInt1
OrientationInterpolator set_fraction SFFloat |
then
|
SEESAWInt1
OrientationInterpolator value_changed SFRotation |
SEESAWTx1
Transform set_rotation SFRotation |
SWINGSEAT1Sensor
TouchSensor touchTime SFTime |
SWINGSEAT1Timer
TimeSensor set_startTime SFTime |
then
|
SWINGSEAT1Timer
TimeSensor fraction_changed SFFloat |
SWINGSEAT1Inter
OrientationInterpolator set_fraction SFFloat |
then
|
SWINGSEAT1Inter
OrientationInterpolator value_changed SFRotation |
SWINGSEAT1TX
Transform set_rotation SFRotation |
SWINGSEAT2Sensor
TouchSensor touchTime SFTime |
SWINGSEAT2Timer
TimeSensor set_startTime SFTime |
then
|
SWINGSEAT2Timer
TimeSensor fraction_changed SFFloat |
SWINGSEAT2Inter
OrientationInterpolator set_fraction SFFloat |
then
|
SWINGSEAT2Inter
OrientationInterpolator value_changed SFRotation |
SWINGSEAT2TX
Transform set_rotation SFRotation |
SWINGSensor
TouchSensor touchTime SFTime |
SWINGSEAT1Timer
TimeSensor set_startTime SFTime |
then
|
SWINGSEAT1Timer
TimeSensor fraction_changed SFFloat |
SWINGSEAT1Inter
OrientationInterpolator set_fraction SFFloat |
then
|
SWINGSEAT1Inter
OrientationInterpolator value_changed SFRotation |
SWINGSEAT1TX
Transform set_rotation SFRotation |
|||
SWINGSensor
TouchSensor touchTime SFTime |
SWINGSEAT2Timer
TimeSensor set_startTime SFTime |
then
|
SWINGSEAT2Timer
TimeSensor fraction_changed SFFloat |
SWINGSEAT2Inter
OrientationInterpolator set_fraction SFFloat |
then
|
SWINGSEAT2Inter
OrientationInterpolator value_changed SFRotation |
SWINGSEAT2TX
Transform set_rotation SFRotation |
TrainSensor1
TouchSensor touchTime SFTime |
TrainTimer1
TimeSensor set_startTime SFTime |
then
|
TrainTimer1
TimeSensor fraction_changed SFFloat |
TrainInt1
OrientationInterpolator set_fraction SFFloat |
then
|
TrainInt1
OrientationInterpolator value_changed SFRotation |
TrainTx1
Transform set_rotation SFRotation |
TrainSensor2
TouchSensor touchTime SFTime |
TrainTimer2
TimeSensor set_startTime SFTime |
then
|
TrainTimer2
TimeSensor fraction_changed SFFloat |
TrainInt2
OrientationInterpolator set_fraction SFFloat |
then
|
TrainInt2
OrientationInterpolator value_changed SFRotation |
TrainTx2
Transform set_rotation SFRotation |
TrainSensor3
TouchSensor touchTime SFTime |
TrainTimer3
TimeSensor set_startTime SFTime |
then
|
TrainTimer3
TimeSensor fraction_changed SFFloat |
TrainInt3
OrientationInterpolator set_fraction SFFloat |
then
|
TrainInt3
OrientationInterpolator value_changed SFRotation |
TrainTx3
Transform set_rotation SFRotation |
<!--
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)
-->
<!--
For additional help information about X3D scenes, please see X3D Tooltips, X3D Resources, and X3D Scene Authoring Hints.
-->