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='WallClock.x3d'/> |
6 | <meta name='description' content='A file describing a wall clock'/> |
7 | <meta name='creator' content='Frederic Roussille'/> |
8 | <meta name='created' content='1 April 2001'/> |
9 | <meta name='modified' content='20 October 2019'/> |
10 | <meta name='identifier' content='https://www.web3d.org/x3d/content/examples/Basic/StudentProjects/WallClock.x3d'/> |
11 | <meta name='generator' content='X3D-Edit 3.3, https://savage.nps.edu/X3D-Edit'/> |
12 | <meta name='license' content='../license.html'/> |
13 | </head> |
14 | <Scene> |
15 | <WorldInfo title='WallClock.x3d'/> |
16 | <Group> |
17 | <Shape> |
18 | <Appearance> |
19 | |
20 | </Appearance> |
21 | <Extrusion beginCap='false' creaseAngle='1' crossSection='0 0 4 0 4 0.7 3.6 0.7 3.6 0.2 0 0.2' endCap='false' spine='1 0 0 0.92 -0.38 0 0.71 -0.71 0 0.38 -0.92 0 0 -1 0 -0.38 -0.92 0 -0.71 -0.71 0 -0.92 -0.38 0 -1 0 0 -0.92 0.38 0 -0.71 0.71 0 -0.38 0.92 0 0 1 0 0.38 0.92 0 0.71 0.71 0 0.92 0.38 0 1 0 0'/> |
22 | </Shape> |
23 | <Transform rotation='1 0 0 1.57' translation='0 0 0.2'> |
24 | <Shape> |
25 | <Cylinder height='0.2' radius='2.8'/> |
26 | </Shape> |
27 | </Transform> |
28 | <Group> |
29 | <Transform center='0 0 0.4' rotation='0 0 1 -0.5233'> |
30 | <Transform DEF='mark1' translation='0 2.2 0.4'> |
31 | <Shape> |
32 | <Appearance> |
33 |
<!-- ROUTE information for m1 node:
[from cm1p.value_changed to set_diffuseColor
]
-->
<Material DEF='m1' diffuseColor='0.3 0.2 0.8'/> |
34 | </Appearance> |
35 | <Box size='0.25 0.5 0.15'/> |
36 | </Shape> |
37 | </Transform> |
38 | </Transform> |
39 | <Transform center='0 0 0.4' rotation='0 0 1 -1.0466'> |
40 | <Transform DEF='mark2' translation='0 2.2 0.4'> |
41 | <Shape> |
42 | <Appearance> |
43 |
<!-- ROUTE information for m2 node:
[from cm2p.value_changed to set_diffuseColor
]
-->
<Material DEF='m2' diffuseColor='0.3 0.2 0.8'/> |
44 | </Appearance> |
45 | <Box size='0.25 0.5 0.15'/> |
46 | </Shape> |
47 | </Transform> |
48 | </Transform> |
49 | <Transform center='0 0 0.4' rotation='0 0 1 -1.57'> |
50 | <Transform DEF='mark3' translation='0 2.2 0.4'> |
51 | <Shape> |
52 | <Appearance> |
53 |
<!-- ROUTE information for m3 node:
[from cm3p.value_changed to set_diffuseColor
]
-->
<Material DEF='m3' diffuseColor='0.3 0.2 0.8'/> |
54 | </Appearance> |
55 | <Box size='0.25 0.5 0.15'/> |
56 | </Shape> |
57 | </Transform> |
58 | </Transform> |
59 | <Transform center='0 0 0.4' rotation='0 0 1 -2.0933'> |
60 | <Transform DEF='mark4' translation='0 2.2 0.4'> |
61 | <Shape> |
62 | <Appearance> |
63 |
<!-- ROUTE information for m4 node:
[from cm4p.value_changed to set_diffuseColor
]
-->
<Material DEF='m4' diffuseColor='0.3 0.2 0.8'/> |
64 | </Appearance> |
65 | <Box size='0.25 0.5 0.15'/> |
66 | </Shape> |
67 | </Transform> |
68 | </Transform> |
69 | <Transform center='0 0 0.4' rotation='0 0 1 -2.6166'> |
70 | <Transform DEF='mark5' translation='0 2.2 0.4'> |
71 | <Shape> |
72 | <Appearance> |
73 |
<!-- ROUTE information for m5 node:
[from cm5p.value_changed to set_diffuseColor
]
-->
<Material DEF='m5' diffuseColor='0.3 0.2 0.8'/> |
74 | </Appearance> |
75 | <Box size='0.25 0.5 0.15'/> |
76 | </Shape> |
77 | </Transform> |
78 | </Transform> |
79 | <Transform center='0 0 0.4' rotation='0 0 1 -3.1399'> |
80 | <Transform DEF='mark6' translation='0 2.2 0.4'> |
81 | <Shape> |
82 | <Appearance> |
83 |
<!-- ROUTE information for m6 node:
[from cm6p.value_changed to set_diffuseColor
]
-->
<Material DEF='m6' diffuseColor='0.3 0.2 0.8'/> |
84 | </Appearance> |
85 | <Box size='0.25 0.5 0.15'/> |
86 | </Shape> |
87 | </Transform> |
88 | </Transform> |
89 | <Transform center='0 0 0.4' rotation='0 0 1 -3.6632'> |
90 | <Transform DEF='mark7' translation='0 2.2 0.4'> |
91 | <Shape> |
92 | <Appearance> |
93 |
<!-- ROUTE information for m7 node:
[from cm7p.value_changed to set_diffuseColor
]
-->
<Material DEF='m7' diffuseColor='0.3 0.2 0.8'/> |
94 | </Appearance> |
95 | <Box size='0.25 0.5 0.15'/> |
96 | </Shape> |
97 | </Transform> |
98 | </Transform> |
99 | <Transform center='0 0 0.4' rotation='0 0 1 -4.1865'> |
100 | <Transform DEF='mark8' translation='0 2.2 0.4'> |
101 | <Shape> |
102 | <Appearance> |
103 |
<!-- ROUTE information for m8 node:
[from cm8p.value_changed to set_diffuseColor
]
-->
<Material DEF='m8' diffuseColor='0.3 0.2 0.8'/> |
104 | </Appearance> |
105 | <Box size='0.25 0.5 0.15'/> |
106 | </Shape> |
107 | </Transform> |
108 | </Transform> |
109 | <Transform center='0 0 0.4' rotation='0 0 1 -4.7098'> |
110 | <Transform DEF='mark9' translation='0 2.2 0.4'> |
111 | <Shape> |
112 | <Appearance> |
113 |
<!-- ROUTE information for m9 node:
[from cm9p.value_changed to set_diffuseColor
]
-->
<Material DEF='m9' diffuseColor='0.3 0.2 0.8'/> |
114 | </Appearance> |
115 | <Box size='0.25 0.5 0.15'/> |
116 | </Shape> |
117 | </Transform> |
118 | </Transform> |
119 | <Transform center='0 0 0.4' rotation='0 0 1 -5.2331'> |
120 | <Transform DEF='mark10' translation='0 2.2 0.4'> |
121 | <Shape> |
122 | <Appearance> |
123 |
<!-- ROUTE information for m10 node:
[from cm10p.value_changed to set_diffuseColor
]
-->
<Material DEF='m10' diffuseColor='0.3 0.2 0.8'/> |
124 | </Appearance> |
125 | <Box size='0.25 0.5 0.15'/> |
126 | </Shape> |
127 | </Transform> |
128 | </Transform> |
129 | <Transform center='0 0 0.4' rotation='0 0 1 -5.7564'> |
130 | <Transform DEF='mark11' translation='0 2.2 0.4'> |
131 | <Shape> |
132 | <Appearance> |
133 |
<!-- ROUTE information for m11 node:
[from cm11p.value_changed to set_diffuseColor
]
-->
<Material DEF='m11' diffuseColor='0.3 0.2 0.8'/> |
134 | </Appearance> |
135 | <Box size='0.25 0.5 0.15'/> |
136 | </Shape> |
137 | </Transform> |
138 | </Transform> |
139 | <Transform center='0 0 0.4' rotation='0 0 1 -6.2797'> |
140 | <Transform DEF='mark12' translation='0 2.2 0.4'> |
141 | <Shape> |
142 | <Appearance> |
143 |
<!-- ROUTE information for m12 node:
[from cm12p.value_changed to set_diffuseColor
]
-->
<Material DEF='m12' diffuseColor='0.3 0.2 0.8'/> |
144 | </Appearance> |
145 | <Box size='0.25 0.5 0.15'/> |
146 | </Shape> |
147 | </Transform> |
148 | </Transform> |
149 | </Group> |
150 |
<!-- ROUTE information for small node:
[from more_time.hour_changed to set_rotation
]
-->
<Transform DEF='small' center='0 0 0.4'> |
151 | <Transform rotation='1 0 0 -1.57' translation='0 0 0.5'> |
152 | <Shape> |
153 | <Appearance> |
154 | <Material USE='blue'/> |
155 | </Appearance> |
156 | <Extrusion crossSection='-0.15 0 0.15 0 0 1.4 -0.15 0' spine='0 0 0 0 0.15 0'/> |
157 | </Shape> |
158 | </Transform> |
159 | </Transform> |
160 |
<!-- ROUTE information for medium node:
[from more_time.minute_changed to set_rotation
]
-->
<Transform DEF='medium' center='0 0 0.4'> |
161 | <Transform rotation='1 0 0 -1.57' translation='0 0 0.5'> |
162 | <Shape> |
163 | <Appearance> |
164 | <Material USE='blue'/> |
165 | </Appearance> |
166 | <Extrusion crossSection='-0.11 0 0.15 0 0 1.65 -0.11 0' spine='0 0 0 0 0.15 0'/> |
167 | </Shape> |
168 | </Transform> |
169 | </Transform> |
170 |
<!-- ROUTE information for tall node:
[from more_time.second_changed to set_rotation
]
-->
<Transform DEF='tall' center='0 0 0.4'> |
171 | <Transform translation='0 0 0.4'> |
172 | <Shape> |
173 | <Appearance> |
174 | <Material USE='blue'/> |
175 | </Appearance> |
176 | <IndexedLineSet coordIndex='0 1 -1'> |
177 | <Coordinate point='0 0 0 0 1.8 0'/> |
178 | </IndexedLineSet> |
179 | </Shape> |
180 | </Transform> |
181 | </Transform> |
182 |
<!-- ROUTE information for cm node:
[from cm_enabled.start to set_enabled
]
[from fraction_changed to cm1p.set_fraction
]
[from fraction_changed to cm2p.set_fraction
]
[from fraction_changed to cm3p.set_fraction
]
[from fraction_changed to cm4p.set_fraction
]
[from fraction_changed to cm5p.set_fraction
]
[from fraction_changed to cm6p.set_fraction
]
[from fraction_changed to cm7p.set_fraction
]
[from fraction_changed to cm8p.set_fraction
]
[from fraction_changed to cm9p.set_fraction
]
[from fraction_changed to cm10p.set_fraction
]
[from fraction_changed to cm12p.set_fraction
]
[from fraction_changed to cm11p.set_fraction
]
-->
<TimeSensor DEF='cm' enabled='false' loop='true'/> |
183 |
<!-- ROUTE information for refresh node:
[from cycleTime to cm_enabled.set_milli
]
[from cycleTime to more_time.set_second
]
[from cycleTime to writing.set_float
]
-->
<TimeSensor DEF='refresh' cycleInterval='0.1' loop='true'/> |
184 |
<!-- ROUTE information for cm1p node:
[from cm.fraction_changed to set_fraction
]
[from value_changed to m1.set_diffuseColor
]
-->
<ColorInterpolator DEF='cm1p' key='0 0.0833 0.0833 0.167 0.167 1' keyValue='0.3 0.2 0.8 0.3 0.2 0.8 1 1 0 1 1 0 0.3 0.2 0.8 0.3 0.2 0.8'/> |
185 |
<!-- ROUTE information for cm2p node:
[from cm.fraction_changed to set_fraction
]
[from value_changed to m2.set_diffuseColor
]
-->
<ColorInterpolator DEF='cm2p' key='0 0.167 0.167 0.25 0.25 1' keyValue='0.3 0.2 0.8 0.3 0.2 0.8 1 1 0 1 1 0 0.3 0.2 0.8 0.3 0.2 0.8'/> |
186 |
<!-- ROUTE information for cm3p node:
[from cm.fraction_changed to set_fraction
]
[from value_changed to m3.set_diffuseColor
]
-->
<ColorInterpolator DEF='cm3p' key='0 0.25 0.25 0.333 0.333 1' keyValue='0.3 0.2 0.8 0.3 0.2 0.8 1 1 0 1 1 0 0.3 0.2 0.8 0.3 0.2 0.8'/> |
187 |
<!-- ROUTE information for cm4p node:
[from cm.fraction_changed to set_fraction
]
[from value_changed to m4.set_diffuseColor
]
-->
<ColorInterpolator DEF='cm4p' key='0 0.333 0.333 0.417 0.417 1' keyValue='0.3 0.2 0.8 0.3 0.2 0.8 1 1 0 1 1 0 0.3 0.2 0.8 0.3 0.2 0.8'/> |
188 |
<!-- ROUTE information for cm5p node:
[from cm.fraction_changed to set_fraction
]
[from value_changed to m5.set_diffuseColor
]
-->
<ColorInterpolator DEF='cm5p' key='0 0.417 0.417 0.5 0.5 1' keyValue='0.3 0.2 0.8 0.3 0.2 0.8 1 1 0 1 1 0 0.3 0.2 0.8 0.3 0.2 0.8'/> |
189 |
<!-- ROUTE information for cm6p node:
[from cm.fraction_changed to set_fraction
]
[from value_changed to m6.set_diffuseColor
]
-->
<ColorInterpolator DEF='cm6p' key='0 0.5 0.5 0.583 0.583 1' keyValue='0.3 0.2 0.8 0.3 0.2 0.8 1 1 0 1 1 0 0.3 0.2 0.8 0.3 0.2 0.8'/> |
190 |
<!-- ROUTE information for cm7p node:
[from cm.fraction_changed to set_fraction
]
[from value_changed to m7.set_diffuseColor
]
-->
<ColorInterpolator DEF='cm7p' key='0 0.583 0.583 0.667 0.667 1' keyValue='0.3 0.2 0.8 0.3 0.2 0.8 1 1 0 1 1 0 0.3 0.2 0.8 0.3 0.2 0.8'/> |
191 |
<!-- ROUTE information for cm8p node:
[from cm.fraction_changed to set_fraction
]
[from value_changed to m8.set_diffuseColor
]
-->
<ColorInterpolator DEF='cm8p' key='0 0.667 0.667 0.75 0.75 1' keyValue='0.3 0.2 0.8 0.3 0.2 0.8 1 1 0 1 1 0 0.3 0.2 0.8 0.3 0.2 0.8'/> |
192 |
<!-- ROUTE information for cm9p node:
[from cm.fraction_changed to set_fraction
]
[from value_changed to m9.set_diffuseColor
]
-->
<ColorInterpolator DEF='cm9p' key='0 0.75 0.75 0.833 0.833 1' keyValue='0.3 0.2 0.8 0.3 0.2 0.8 1 1 0 1 1 0 0.3 0.2 0.8 0.3 0.2 0.8'/> |
193 |
<!-- ROUTE information for cm10p node:
[from cm.fraction_changed to set_fraction
]
[from value_changed to m10.set_diffuseColor
]
-->
<ColorInterpolator DEF='cm10p' key='0 0.833 0.833 0.917 0.917 1' keyValue='0.3 0.2 0.8 0.3 0.2 0.8 1 1 0 1 1 0 0.3 0.2 0.8 0.3 0.2 0.8'/> |
194 |
<!-- ROUTE information for cm11p node:
[from cm.fraction_changed to set_fraction
]
[from value_changed to m11.set_diffuseColor
]
-->
<ColorInterpolator DEF='cm11p' key='0 0.917 0.917 1 1' keyValue='0.3 0.2 0.8 0.3 0.2 0.8 1 1 0 1 1 0 0.3 0.2 0.8'/> |
195 |
<!-- ROUTE information for cm12p node:
[from cm.fraction_changed to set_fraction
]
[from value_changed to m12.set_diffuseColor
]
-->
<ColorInterpolator DEF='cm12p' key='0 0.0833 0.0833 1' keyValue='1 1 0 1 1 0 0.3 0.2 0.8 0.3 0.2 0.8'/> |
196 |
<!-- ROUTE information for writing node:
[from refresh.cycleTime to set_float
]
[from string_changed to text.set_string
]
-->
<Script DEF='writing'> |
197 | <field name='set_float' type='SFTime' accessType='inputOnly'/> |
198 | <field name='string_changed' type='MFString' accessType='outputOnly'/> |
199 | <field name='g' type='SFFloat' value='0' accessType='initializeOnly'/> |
<![CDATA[
ecmascript: function set_float () { var today = new Date(); var date = today.toLocaleString(); string_changed[0]= date; }
]]>
|
|
201 | </Script> |
202 | <Transform translation='0 1.2 0.3'> |
203 | <Shape> |
204 | <Appearance> |
205 | <Material diffuseColor='0.3 0.2 0.8'/> |
206 | </Appearance> |
207 |
<!-- ROUTE information for text node:
[from writing.string_changed to set_string
]
-->
<Text DEF='text'> |
208 | <FontStyle justify='"MIDDLE" "MIDDLE"' size='0.3'/> |
209 | </Text> |
210 | </Shape> |
211 | </Transform> |
212 |
<!-- ROUTE information for more_time node:
[from refresh.cycleTime to set_second
]
[from second_changed to tall.set_rotation
]
[from minute_changed to medium.set_rotation
]
[from hour_changed to small.set_rotation
]
-->
<Script DEF='more_time'> |
213 | <field name='second_changed' type='SFRotation' accessType='outputOnly'/> |
214 | <field name='set_second' type='SFTime' accessType='inputOnly'/> |
215 | <field name='minute_changed' type='SFRotation' accessType='outputOnly'/> |
216 | <field name='hour_changed' type='SFRotation' accessType='outputOnly'/> |
<![CDATA[
ecmascript: function initialize(){ } function set_second () { var today = new Date(); var seconds = today.getSeconds(); var minutes = -(Math.PI/30)*today.getMinutes(); var hours = -(Math.PI/6)*today.getHours(); second_changed[3] = -(Math.PI/30)*seconds ; minute_changed[3]= minutes -(Math.PI/30)*seconds/60; hour_changed[3]= hours -(Math.PI/6)*today.getMinutes()/60; }
]]>
|
|
218 | </Script> |
219 |
<!-- ROUTE information for cm_enabled node:
[from refresh.cycleTime to set_milli
]
[from start to cm.set_enabled
]
-->
<Script DEF='cm_enabled'> |
220 | <field name='start' type='SFBool' accessType='outputOnly'/> |
221 | <field name='set_milli' type='SFTime' accessType='inputOnly'/> |
<![CDATA[
ecmascript: function set_milli () { var today = new Date(); var milli = today.getTime(); var milli_changed= (milli/1000) - Math.floor(milli/1000); Browser.println (milli_changed); if (milli_changed>0 && milli_changed<0.1) {start=true;} }
]]>
|
|
223 | </Script> |
224 | </Group> |
225 | < ROUTE fromNode='refresh' fromField='cycleTime' toNode='cm_enabled' toField='set_milli'/> |
226 | < ROUTE fromNode='cm_enabled' fromField='start' toNode='cm' toField='set_enabled'/> |
227 | < ROUTE fromNode='refresh' fromField='cycleTime' toNode='more_time' toField='set_second'/> |
228 | < ROUTE fromNode='more_time' fromField='second_changed' toNode='tall' toField='set_rotation'/> |
229 | < ROUTE fromNode='more_time' fromField='minute_changed' toNode='medium' toField='set_rotation'/> |
230 | < ROUTE fromNode='more_time' fromField='hour_changed' toNode='small' toField='set_rotation'/> |
231 | < ROUTE fromNode='cm' fromField='fraction_changed' toNode='cm1p' toField='set_fraction'/> |
232 | < ROUTE fromNode='cm1p' fromField='value_changed' toNode='m1' toField='set_diffuseColor'/> |
233 | < ROUTE fromNode='cm' fromField='fraction_changed' toNode='cm2p' toField='set_fraction'/> |
234 | < ROUTE fromNode='cm2p' fromField='value_changed' toNode='m2' toField='set_diffuseColor'/> |
235 | < ROUTE fromNode='cm' fromField='fraction_changed' toNode='cm3p' toField='set_fraction'/> |
236 | < ROUTE fromNode='cm' fromField='fraction_changed' toNode='cm4p' toField='set_fraction'/> |
237 | < ROUTE fromNode='cm' fromField='fraction_changed' toNode='cm5p' toField='set_fraction'/> |
238 | < ROUTE fromNode='cm' fromField='fraction_changed' toNode='cm6p' toField='set_fraction'/> |
239 | < ROUTE fromNode='cm' fromField='fraction_changed' toNode='cm7p' toField='set_fraction'/> |
240 | < ROUTE fromNode='cm' fromField='fraction_changed' toNode='cm8p' toField='set_fraction'/> |
241 | < ROUTE fromNode='cm' fromField='fraction_changed' toNode='cm9p' toField='set_fraction'/> |
242 | < ROUTE fromNode='cm' fromField='fraction_changed' toNode='cm10p' toField='set_fraction'/> |
243 | < ROUTE fromNode='cm' fromField='fraction_changed' toNode='cm12p' toField='set_fraction'/> |
244 | < ROUTE fromNode='cm3p' fromField='value_changed' toNode='m3' toField='set_diffuseColor'/> |
245 | < ROUTE fromNode='cm4p' fromField='value_changed' toNode='m4' toField='set_diffuseColor'/> |
246 | < ROUTE fromNode='cm5p' fromField='value_changed' toNode='m5' toField='set_diffuseColor'/> |
247 | < ROUTE fromNode='cm6p' fromField='value_changed' toNode='m6' toField='set_diffuseColor'/> |
248 | < ROUTE fromNode='cm7p' fromField='value_changed' toNode='m7' toField='set_diffuseColor'/> |
249 | < ROUTE fromNode='cm8p' fromField='value_changed' toNode='m8' toField='set_diffuseColor'/> |
250 | < ROUTE fromNode='cm9p' fromField='value_changed' toNode='m9' toField='set_diffuseColor'/> |
251 | < ROUTE fromNode='cm10p' fromField='value_changed' toNode='m10' toField='set_diffuseColor'/> |
252 | < ROUTE fromNode='cm12p' fromField='value_changed' toNode='m12' toField='set_diffuseColor'/> |
253 | < ROUTE fromNode='cm' fromField='fraction_changed' toNode='cm11p' toField='set_fraction'/> |
254 | < ROUTE fromNode='cm11p' fromField='value_changed' toNode='m11' toField='set_diffuseColor'/> |
255 | < ROUTE fromNode='refresh' fromField='cycleTime' toNode='writing' toField='set_float'/> |
256 | < ROUTE fromNode='writing' fromField='string_changed' toNode='text' toField='set_string'/> |
257 | </Scene> |
258 | </X3D> |
Event Graph ROUTE Table entries with 32 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.
refresh
TimeSensor cycleTime SFTime |
cm_enabled
Script set_milli SFTime |
then
|
cm_enabled
Script start SFBool |
cm
TimeSensor set_enabled SFBool |
||
refresh
TimeSensor cycleTime SFTime |
more_time
Script set_second SFTime |
then
|
more_time
Script hour_changed SFRotation |
small
Transform set_rotation SFRotation |
||
then
|
more_time
Script minute_changed SFRotation |
medium
Transform set_rotation SFRotation |
||||
then
|
more_time
Script second_changed SFRotation |
tall
Transform set_rotation SFRotation |
||||
refresh
TimeSensor cycleTime SFTime |
writing
Script set_float SFTime |
then
|
writing
Script string_changed MFString |
text
Text set_string MFString |
more_time
Script second_changed SFRotation |
tall
Transform set_rotation SFRotation |
|
more_time
Script minute_changed SFRotation |
medium
Transform set_rotation SFRotation |
|
more_time
Script hour_changed SFRotation |
small
Transform set_rotation SFRotation |
<!--
Color 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. -->