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=' CameraCompassPrototypes.x3d '/> |
6 | <meta name='description' content='Prototypes for a circular set of compass bearings that follow the active viewpoint. North = +X axis, East = +Z axis, up = +Y axis.'/> |
7 | <meta name='creator' content='Don Brutzman'/> |
8 | <meta name='created' content='16 June 2001'/> |
9 | <meta name='modified' content='28 November 2019'/> |
10 | <meta name='inspiration' content='David Colleen'/> |
11 | <meta name='reference' content='http://www.planet9.com/earth/pearlharbor/vrml/tour.wrl'/> |
12 | <meta name='reference' content='http://www.planet9.com/earth/pearlharbor/vrml/compass.wrl'/> |
13 | <meta name='subject' content='compass display'/> |
14 | <meta name='identifier' content=' https://www.web3d.org/x3d/content/examples/Savage/Tools/HeadsUpDisplays/CameraCompassPrototypes.x3d '/> |
15 | <meta name='generator' content='X3D-Edit 3.2, https://www.web3d.org/x3d/tools/X3D-Edit'/> |
16 | <meta name='license' content='../../license.html'/> |
17 | </head> |
18 | <Scene> |
19 | <WorldInfo title='CameraCompassPrototypes.x3d'/> |
20 | <ProtoDeclare name='CameraCompass8' appinfo='Circular set of compass bearings that follow the active viewpoint set at 360/8 = 45 degree intervals. North = +X axis East = +Z axis up = +Y axis.'> |
21 | <ProtoInterface> |
22 | <field name='enabled' type='SFBool' value='true' accessType='inputOutput'/> |
23 | <field name='positionOffsetFromCamera' type='SFVec3f' value='0 6 0' accessType='inputOutput'/> |
24 | <field name='markerColor' type='SFColor' value='0.3 0.3 0.8' accessType='inputOutput'/> |
25 | <field name='labelColor' type='SFColor' value='0.9 0.9 0.9' accessType='inputOutput'/> |
26 | </ProtoInterface> |
27 | <ProtoBody> |
28 | <Group> |
29 |
<!-- ROUTE information for WhereSensor node:
[from position_changed to CameraLocation.translation
]
-->
<ProximitySensor DEF='WhereSensor' size='1000000000 1000000000 1000000000'> |
30 | <IS> |
31 | <connect nodeField='enabled' protoField='enabled'/> |
32 | </IS> |
33 | </ProximitySensor> |
34 |
<!-- ROUTE information for CameraLocation node:
[from WhereSensor.position_changed to translation
]
-->
<Transform DEF='CameraLocation'> |
35 | <Transform DEF='CameraOffset'> |
36 | <IS> |
37 | <connect nodeField='translation' protoField='positionOffsetFromCamera'/> |
38 | </IS> |
39 | <Group DEF='AllMarkers'> |
40 | <Transform DEF='West' translation='0 0 -20'> |
41 | <Billboard> |
42 |
<!-- Shape
CardinalMarker is a DEF node that has 3 USE nodes: USE_1, USE_2, USE_3 -->
<Shape DEF='CardinalMarker'> |
43 | <IndexedFaceSet coordIndex='0 1 2 3 -1'> |
44 | <Coordinate point='0.1 2.0 0 -0.1 2.0 0 -0.1 1.2 0 0.1 1.2 0'/> |
45 | </IndexedFaceSet> |
46 |
<!-- Appearance
MarkerAppearance is a DEF node that has 1 USE node: USE_1 -->
<Appearance DEF='MarkerAppearance'> |
47 | <!-- default diffuseColor is (0.8 0.8 0.8), thus zero it out so emissiveColor is unaffected --> |
48 | <Material DEF='MarkerMaterial' diffuseColor='0 0 0'> |
49 | <IS> |
50 | <connect nodeField='emissiveColor' protoField='markerColor'/> |
51 | </IS> |
52 | </Material> |
53 | </Appearance> |
54 | </Shape> |
55 | <Transform translation='0 0.6 0'> |
56 | <Shape> |
57 | <Text string='"West" "270"'> |
58 |
<!-- FontStyle
CenterJustify is a DEF node that has 3 USE nodes: USE_1, USE_2, USE_3 --> <FontStyle DEF='CenterJustify' family='"SANS"' justify='"MIDDLE" "MIDDLE"' size='0.6'/> |
59 | </Text> |
60 | |
61 | <!-- default diffuseColor is (0.8 0.8 0.8), thus zero it out so emissiveColor is unaffected --> |
62 | <Material DEF='TextMaterial' diffuseColor='0 0 0'> |
63 | <IS> |
64 | <connect nodeField='emissiveColor' protoField='labelColor'/> |
65 | </IS> |
66 | </Material> |
67 | </Appearance> |
68 | </Shape> |
69 | </Transform> |
70 | </Billboard> |
71 | </Transform> |
72 | <Transform DEF='North' translation='20 0 0'> |
73 | <Billboard> |
74 | <Shape USE='CardinalMarker'/> |
75 | <Transform translation='0 0.6 0'> |
76 | <Shape> |
77 | <Text string='"North" "000"'> |
78 | <FontStyle USE='CenterJustify'/> |
79 | </Text> |
80 | <Appearance USE='TextAppearance'/> |
81 | </Shape> |
82 | </Transform> |
83 | </Billboard> |
84 | </Transform> |
85 | <Transform DEF='East' translation='0 0 20'> |
86 | <Billboard> |
87 | <Shape USE='CardinalMarker'/> |
88 | <Transform translation='0 0.6 0'> |
89 | <Shape> |
90 | <Text string='"East" "090"'> |
91 | <FontStyle USE='CenterJustify'/> |
92 | </Text> |
93 | <Appearance USE='TextAppearance'/> |
94 | </Shape> |
95 | </Transform> |
96 | </Billboard> |
97 | </Transform> |
98 | <Transform DEF='South' translation='-20 0 0'> |
99 | <Billboard> |
100 | <Shape USE='CardinalMarker'/> |
101 | <Transform translation='0 0.6 0'> |
102 | <Shape> |
103 | <Text string='"South" "180"'> |
104 | <FontStyle USE='CenterJustify'/> |
105 | </Text> |
106 | <Appearance USE='TextAppearance'/> |
107 | </Shape> |
108 | </Transform> |
109 | </Billboard> |
110 | </Transform> |
111 | <!-- ===== --> |
112 | <Transform DEF='NorthWest' translation='14.142 0 -14.142'> |
113 | <Billboard> |
114 | |
115 | <IndexedFaceSet coordIndex='0 1 2 3 -1'> |
116 | <Coordinate point='0.05 1.8 0 -0.05 1.8 0 -0.05 1.4 0 0.05 1.4 0'/> |
117 | </IndexedFaceSet> |
118 | <Appearance USE='MarkerAppearance'/> |
119 | </Shape> |
120 | <Transform translation='0 0.6 0'> |
121 | <Shape> |
122 | <Text string='"NW" "315"'> |
123 |
<!-- FontStyle
CenterJustifySmall is a DEF node that has 3 USE nodes: USE_1, USE_2, USE_3 --> <FontStyle DEF='CenterJustifySmall' family='"SANS"' justify='"MIDDLE" "FIRST"' size='0.6'/> |
124 | </Text> |
125 | <Appearance USE='TextAppearance'/> |
126 | </Shape> |
127 | </Transform> |
128 | </Billboard> |
129 | </Transform> |
130 | <Transform DEF='NorthEast' translation='14.142 0 14.142'> |
131 | <Billboard> |
132 | <Shape USE='MidMarker'/> |
133 | <Transform translation='0 0.6 0'> |
134 | <Shape> |
135 | <Text string='"NE" "045"'> |
136 | <FontStyle USE='CenterJustifySmall'/> |
137 | </Text> |
138 | <Appearance USE='TextAppearance'/> |
139 | </Shape> |
140 | </Transform> |
141 | </Billboard> |
142 | </Transform> |
143 | <Transform DEF='SouthEast' translation='-14.142 0 14.142'> |
144 | <Billboard> |
145 | <Shape USE='MidMarker'/> |
146 | <Transform translation='0 0.6 0'> |
147 | <Shape> |
148 | <Text string='"SE" "135"'> |
149 | <FontStyle USE='CenterJustifySmall'/> |
150 | </Text> |
151 | <Appearance USE='TextAppearance'/> |
152 | </Shape> |
153 | </Transform> |
154 | </Billboard> |
155 | </Transform> |
156 | <Transform DEF='SouthWest' translation='-14.142 0 -14.142'> |
157 | <Billboard> |
158 | <Shape USE='MidMarker'/> |
159 | <Transform translation='0 0.6 0'> |
160 | <Shape> |
161 | <Text string='"SW" "225"'> |
162 | <FontStyle USE='CenterJustifySmall'/> |
163 | </Text> |
164 | <Appearance USE='TextAppearance'/> |
165 | </Shape> |
166 | </Transform> |
167 | </Billboard> |
168 | </Transform> |
169 | </Group> |
170 | <Transform DEF='CircleLine8' scale='20 1 20' translation='0 1.6 0'> |
171 | <Shape> |
172 | <IndexedLineSet coordIndex='0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 -1 60 61 -1 62 63 -1'> |
173 | <Coordinate point='0.0 0.0 1.000 0.105 0.0 0.995 0.208 0.0 0.978 0.309 0.0 0.951 0.407 0.0 0.914 0.500 0.0 0.866 0.588 0.0 0.809 0.669 0.0 0.743 0.743 0.0 0.669 0.809 0.0 0.588 0.866 0.0 0.500 0.914 0.0 0.407 0.951 0.0 0.309 0.978 0.0 0.208 0.995 0.0 0.105 1.0 0.0 0.000 0.995 0.0 -0.105 0.978 0.0 -0.208 0.951 0.0 -0.309 0.914 0.0 -0.407 0.866 0.0 -0.500 0.809 0.0 -0.588 0.743 0.0 -0.669 0.669 0.0 -0.743 0.588 0.0 -0.809 0.500 0.0 -0.866 0.407 0.0 -0.914 0.309 0.0 -0.951 0.208 0.0 -0.978 0.105 0.0 -0.995 0.0 0.0 -1.000 -0.105 0.0 -0.995 -0.208 0.0 -0.978 -0.309 0.0 -0.951 -0.407 0.0 -0.914 -0.500 0.0 -0.866 -0.588 0.0 -0.809 -0.669 0.0 -0.743 -0.743 0.0 -0.669 -0.809 0.0 -0.588 -0.866 0.0 -0.500 -0.914 0.0 -0.407 -0.951 0.0 -0.309 -0.978 0.0 -0.208 -0.995 0.0 -0.105 -1.0 0.0 -0.000 -0.995 0.0 0.105 -0.978 0.0 0.208 -0.951 0.0 0.309 -0.914 0.0 0.407 -0.866 0.0 0.500 -0.809 0.0 0.588 -0.743 0.0 0.669 -0.669 0.0 0.743 -0.588 0.0 0.809 -0.500 0.0 0.866 -0.407 0.0 0.914 -0.309 0.0 0.951 -0.208 0.0 0.978 -0.105 0.0 0.995 0.0 0.0 1.000 0 0 -1 1 0 0 -1 0 0'/> |
174 | </IndexedLineSet> |
175 | <Appearance> |
176 | <Material DEF='CircleMaterial' diffuseColor='0 0 0'> |
177 | <IS> |
178 | <connect nodeField='emissiveColor' protoField='markerColor'/> |
179 | </IS> |
180 | </Material> |
181 | </Appearance> |
182 | </Shape> |
183 | </Transform> |
184 | </Transform> |
185 | </Transform> |
186 | </Group> |
187 | < ROUTE fromNode='WhereSensor' fromField='position_changed' toNode='CameraLocation' toField='translation'/> |
188 | </ProtoBody> |
189 | </ProtoDeclare> |
190 | <ProtoDeclare name='CameraCompass12' appinfo='Circular set of compass bearings that follow the active viewpoint set at 360/12 = 30 degree intervals. North = +X axis East = +Z axis up = +Y axis.'> |
191 | <ProtoInterface> |
192 | <field name='enabled' type='SFBool' value='true' accessType='inputOutput'/> |
193 | <field name='positionOffsetFromCamera' type='SFVec3f' value='0 6 0' accessType='inputOutput'/> |
194 | <field name='markerColor' type='SFColor' value='0.3 0.3 0.8' accessType='inputOutput'/> |
195 | <field name='labelColor' type='SFColor' value='0.9 0.9 0.9' accessType='inputOutput'/> |
196 | </ProtoInterface> |
197 | <ProtoBody> |
198 | <Group> |
199 |
<!-- ROUTE information for WhereSensor12 node:
[from position_changed to CameraLocation12.translation
]
-->
<ProximitySensor DEF='WhereSensor12' size='1000000000 1000000000 1000000000'> |
200 | <IS> |
201 | <connect nodeField='enabled' protoField='enabled'/> |
202 | </IS> |
203 | </ProximitySensor> |
204 |
<!-- ROUTE information for CameraLocation12 node:
[from WhereSensor12.position_changed to translation
]
-->
<Transform DEF='CameraLocation12'> |
205 | <Transform DEF='CameraOffset12'> |
206 | <IS> |
207 | <connect nodeField='translation' protoField='positionOffsetFromCamera'/> |
208 | </IS> |
209 | <Group DEF='AllMarkers12'> |
210 | <Transform DEF='West12' translation='0 0 -20'> |
211 | <Billboard> |
212 |
<!-- Shape
CardinalMarker12 is a DEF node that has 3 USE nodes: USE_1, USE_2, USE_3 -->
<Shape DEF='CardinalMarker12'> |
213 | <IndexedFaceSet coordIndex='0 1 2 3 -1'> |
214 | <Coordinate point='0.1 2.0 0 -0.1 2.0 0 -0.1 1.2 0 0.1 1.2 0'/> |
215 | </IndexedFaceSet> |
216 |
<!-- Appearance
MarkerAppearance12 is a DEF node that has 1 USE node: USE_1 -->
<Appearance DEF='MarkerAppearance12'> |
217 | <!-- default diffuseColor is (0.8 0.8 0.8), thus zero it out so emissiveColor is unaffected --> |
218 | <Material DEF='MarkerMaterial12' diffuseColor='0 0 0'> |
219 | <IS> |
220 | <connect nodeField='emissiveColor' protoField='markerColor'/> |
221 | </IS> |
222 | </Material> |
223 | </Appearance> |
224 | </Shape> |
225 | <Transform translation='0 0.6 0'> |
226 | <Shape> |
227 | <Text string='"West" "270"'> |
228 |
<!-- FontStyle
CenterJustify12 is a DEF node that has 3 USE nodes: USE_1, USE_2, USE_3 --> <FontStyle DEF='CenterJustify12' family='"SANS"' justify='"MIDDLE" "MIDDLE"' size='0.6'/> |
229 | </Text> |
230 | |
231 | <!-- default diffuseColor is (0.8 0.8 0.8), thus zero it out so emissiveColor is unaffected --> |
232 | <Material DEF='TextMaterial12' diffuseColor='0 0 0'> |
233 | <IS> |
234 | <connect nodeField='emissiveColor' protoField='labelColor'/> |
235 | </IS> |
236 | </Material> |
237 | </Appearance> |
238 | </Shape> |
239 | </Transform> |
240 | </Billboard> |
241 | </Transform> |
242 | <Transform DEF='North12' translation='20 0 0'> |
243 | <Billboard> |
244 | <Shape USE='CardinalMarker12'/> |
245 | <Transform translation='0 0.6 0'> |
246 | <Shape> |
247 | <Text string='"North" "000"'> |
248 | <FontStyle USE='CenterJustify12'/> |
249 | </Text> |
250 | <Appearance USE='TextAppearance12'/> |
251 | </Shape> |
252 | </Transform> |
253 | </Billboard> |
254 | </Transform> |
255 | <Transform DEF='East12' translation='0 0 20'> |
256 | <Billboard> |
257 | <Shape USE='CardinalMarker12'/> |
258 | <Transform translation='0 0.6 0'> |
259 | <Shape> |
260 | <Text string='"East" "090"'> |
261 | <FontStyle USE='CenterJustify12'/> |
262 | </Text> |
263 | <Appearance USE='TextAppearance12'/> |
264 | </Shape> |
265 | </Transform> |
266 | </Billboard> |
267 | </Transform> |
268 | <Transform DEF='South12' translation='-20 0 0'> |
269 | <Billboard> |
270 | <Shape USE='CardinalMarker12'/> |
271 | <Transform translation='0 0.6 0'> |
272 | <Shape> |
273 | <Text string='"South" "180"'> |
274 | <FontStyle USE='CenterJustify12'/> |
275 | </Text> |
276 | <Appearance USE='TextAppearance12'/> |
277 | </Shape> |
278 | </Transform> |
279 | </Billboard> |
280 | </Transform> |
281 | <!-- ===== --> |
282 | <Transform DEF='Bearing030' translation='17.32 0 10'> |
283 | <Billboard> |
284 | |
285 | <IndexedFaceSet coordIndex='0 1 2 3 -1'> |
286 | <Coordinate point='0.05 1.8 0 -0.05 1.8 0 -0.05 1.4 0 0.05 1.4 0'/> |
287 | </IndexedFaceSet> |
288 | <Appearance USE='MarkerAppearance12'/> |
289 | </Shape> |
290 | <Shape> |
291 | <Text string='"030"'> |
292 | |
293 | </Text> |
294 | <Appearance USE='TextAppearance12'/> |
295 | </Shape> |
296 | </Billboard> |
297 | </Transform> |
298 | <Transform DEF='Bearing060' translation='10 0 17.32'> |
299 | <Billboard> |
300 | <Shape USE='MidMarker12'/> |
301 | <Shape> |
302 | <Text string='"060"'> |
303 | <FontStyle USE='CenterJustifySmall12'/> |
304 | </Text> |
305 | <Appearance USE='TextAppearance12'/> |
306 | </Shape> |
307 | </Billboard> |
308 | </Transform> |
309 | <Transform DEF='Bearing120' translation='-10 0 17.32'> |
310 | <Billboard> |
311 | <Shape USE='MidMarker12'/> |
312 | <Shape> |
313 | <Text string='"120"'> |
314 | <FontStyle USE='CenterJustifySmall12'/> |
315 | </Text> |
316 | <Appearance USE='TextAppearance12'/> |
317 | </Shape> |
318 | </Billboard> |
319 | </Transform> |
320 | <Transform DEF='Bearing150' translation='-17.32 0 10'> |
321 | <Billboard> |
322 | <Shape USE='MidMarker12'/> |
323 | <Shape> |
324 | <Text string='"150"'> |
325 | <FontStyle USE='CenterJustifySmall12'/> |
326 | </Text> |
327 | <Appearance USE='TextAppearance12'/> |
328 | </Shape> |
329 | </Billboard> |
330 | </Transform> |
331 | <Transform DEF='Bearing210' translation='-17.32 0 -10'> |
332 | <Billboard> |
333 | <Shape USE='MidMarker12'/> |
334 | <Shape> |
335 | <Text string='"210"'> |
336 | <FontStyle USE='CenterJustifySmall12'/> |
337 | </Text> |
338 | <Appearance USE='TextAppearance12'/> |
339 | </Shape> |
340 | </Billboard> |
341 | </Transform> |
342 | <Transform DEF='Bearing240' translation='-10 0 -17.32'> |
343 | <Billboard> |
344 | <Shape USE='MidMarker12'/> |
345 | <Shape> |
346 | <Text string='"240"'> |
347 | <FontStyle USE='CenterJustifySmall12'/> |
348 | </Text> |
349 | <Appearance USE='TextAppearance12'/> |
350 | </Shape> |
351 | </Billboard> |
352 | </Transform> |
353 | <Transform DEF='Bearing300' translation='10 0 -17.32'> |
354 | <Billboard> |
355 | <Shape USE='MidMarker12'/> |
356 | <Shape> |
357 | <Text string='"300"'> |
358 | <FontStyle USE='CenterJustifySmall12'/> |
359 | </Text> |
360 | <Appearance USE='TextAppearance12'/> |
361 | </Shape> |
362 | </Billboard> |
363 | </Transform> |
364 | <Transform DEF='Bearing330' translation='17.32 0 -10'> |
365 | <Billboard> |
366 | <Shape USE='MidMarker12'/> |
367 | <Shape> |
368 | <Text string='"330"'> |
369 | <FontStyle USE='CenterJustifySmall12'/> |
370 | </Text> |
371 | <Appearance USE='TextAppearance12'/> |
372 | </Shape> |
373 | </Billboard> |
374 | </Transform> |
375 | </Group> |
376 | <Transform DEF='CircleLine12' scale='20 1 20' translation='0 1.6 0'> |
377 | <Shape> |
378 | <IndexedLineSet coordIndex='0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 -1 60 61 -1 62 63 -1'> |
379 | <Coordinate point='0.0 0.0 1.000 0.105 0.0 0.995 0.208 0.0 0.978 0.309 0.0 0.951 0.407 0.0 0.914 0.500 0.0 0.866 0.588 0.0 0.809 0.669 0.0 0.743 0.743 0.0 0.669 0.809 0.0 0.588 0.866 0.0 0.500 0.914 0.0 0.407 0.951 0.0 0.309 0.978 0.0 0.208 0.995 0.0 0.105 1.0 0.0 0.000 0.995 0.0 -0.105 0.978 0.0 -0.208 0.951 0.0 -0.309 0.914 0.0 -0.407 0.866 0.0 -0.500 0.809 0.0 -0.588 0.743 0.0 -0.669 0.669 0.0 -0.743 0.588 0.0 -0.809 0.500 0.0 -0.866 0.407 0.0 -0.914 0.309 0.0 -0.951 0.208 0.0 -0.978 0.105 0.0 -0.995 0.0 0.0 -1.000 -0.105 0.0 -0.995 -0.208 0.0 -0.978 -0.309 0.0 -0.951 -0.407 0.0 -0.914 -0.500 0.0 -0.866 -0.588 0.0 -0.809 -0.669 0.0 -0.743 -0.743 0.0 -0.669 -0.809 0.0 -0.588 -0.866 0.0 -0.500 -0.914 0.0 -0.407 -0.951 0.0 -0.309 -0.978 0.0 -0.208 -0.995 0.0 -0.105 -1.0 0.0 -0.000 -0.995 0.0 0.105 -0.978 0.0 0.208 -0.951 0.0 0.309 -0.914 0.0 0.407 -0.866 0.0 0.500 -0.809 0.0 0.588 -0.743 0.0 0.669 -0.669 0.0 0.743 -0.588 0.0 0.809 -0.500 0.0 0.866 -0.407 0.0 0.914 -0.309 0.0 0.951 -0.208 0.0 0.978 -0.105 0.0 0.995 0.0 0.0 1.000 0 0 -1 1 0 0 -1 0 0'/> |
380 | </IndexedLineSet> |
381 | <Appearance> |
382 | <Material DEF='CircleMaterial12' diffuseColor='0 0 0'> |
383 | <IS> |
384 | <connect nodeField='emissiveColor' protoField='markerColor'/> |
385 | </IS> |
386 | </Material> |
387 | </Appearance> |
388 | </Shape> |
389 | </Transform> |
390 | </Transform> |
391 | </Transform> |
392 | </Group> |
393 | < ROUTE fromNode='WhereSensor12' fromField='position_changed' toNode='CameraLocation12' toField='translation'/> |
394 | </ProtoBody> |
395 | </ProtoDeclare> |
396 | <ProtoDeclare name='CameraCompass36' appinfo='Circular set of compass bearings that follow the active viewpoint set at 360/36 = 10 degree intervals. North = +X axis East = +Z axis up = +Y axis.'> |
397 | <ProtoInterface> |
398 | <field name='enabled' type='SFBool' value='true' accessType='inputOutput'/> |
399 | <field name='positionOffsetFromCamera' type='SFVec3f' value='0 6 0' accessType='inputOutput'/> |
400 | <field name='markerColor' type='SFColor' value='0.3 0.3 0.8' accessType='inputOutput'/> |
401 | <field name='labelColor' type='SFColor' value='0.9 0.9 0.9' accessType='inputOutput'/> |
402 | </ProtoInterface> |
403 | <ProtoBody> |
404 | <Group> |
405 | <ProtoInstance name='CameraCompass12' DEF='CameraCompass12Node'> |
406 | <IS> |
407 | <connect nodeField='enabled' protoField='enabled'/> |
408 | <connect nodeField='positionOffsetFromCamera' protoField='positionOffsetFromCamera'/> |
409 | <connect nodeField='markerColor' protoField='markerColor'/> |
410 | <connect nodeField='labelColor' protoField='labelColor'/> |
411 | </IS> |
412 | </ProtoInstance> |
413 |
<!-- ROUTE information for WhereSensor36 node:
[from position_changed to CameraLocation36.translation
]
-->
<ProximitySensor DEF='WhereSensor36' size='1000000000 1000000000 1000000000'> |
414 | <IS> |
415 | <connect nodeField='enabled' protoField='enabled'/> |
416 | </IS> |
417 | </ProximitySensor> |
418 |
<!-- ROUTE information for CameraLocation36 node:
[from WhereSensor36.position_changed to translation
]
-->
<Transform DEF='CameraLocation36'> |
419 | <Transform DEF='CameraOffset36'> |
420 | <IS> |
421 | <connect nodeField='translation' protoField='positionOffsetFromCamera'/> |
422 | </IS> |
423 |
<!-- Group
FirstQuadrantMarkers is a DEF node that has 3 USE nodes: USE_1, USE_2, USE_3 -->
<Group DEF='FirstQuadrantMarkers'> |
424 | <Transform DEF='Bearing010' translation='19.7 0.0 3.48'> |
425 | <Billboard> |
426 | |
427 | <IndexedFaceSet coordIndex='0 1 2 3 -1'> |
428 | <Coordinate point='0.05 1.8 0 -0.05 1.8 0 -0.05 1.4 0 0.05 1.4 0'/> |
429 | </IndexedFaceSet> |
430 | <Appearance DEF='MarkerAppearance36'> |
431 | <!-- default diffuseColor is (0.8 0.8 0.8), thus zero it out so emissiveColor is unaffected --> |
432 | <Material DEF='MarkerMaterial36' diffuseColor='0 0 0'> |
433 | <IS> |
434 | <connect nodeField='emissiveColor' protoField='markerColor'/> |
435 | </IS> |
436 | </Material> |
437 | </Appearance> |
438 | </Shape> |
439 | </Billboard> |
440 | </Transform> |
441 | <Transform DEF='Bearing020' translation='18.8 0.0 6.84'> |
442 | <Billboard> |
443 | <Shape USE='MidMarker36'/> |
444 | </Billboard> |
445 | </Transform> |
446 | <Transform DEF='Bearing040' translation='15.32 0.0 12.86'> |
447 | <Billboard> |
448 | <Shape USE='MidMarker36'/> |
449 | </Billboard> |
450 | </Transform> |
451 | <Transform DEF='Bearing050' translation='12.86 0.0 15.32'> |
452 | <Billboard> |
453 | <Shape USE='MidMarker36'/> |
454 | </Billboard> |
455 | </Transform> |
456 | <Transform DEF='Bearing070' translation='6.84 0.0 18.8'> |
457 | <Billboard> |
458 | <Shape USE='MidMarker36'/> |
459 | </Billboard> |
460 | </Transform> |
461 | <Transform DEF='Bearing080' translation='3.48 0.0 19.7'> |
462 | <Billboard> |
463 | <Shape USE='MidMarker36'/> |
464 | </Billboard> |
465 | </Transform> |
466 | </Group> |
467 | <Transform DEF='SecondQuadrantMarkers' rotation='0 1 0 -1.57'> |
468 | <Group USE='FirstQuadrantMarkers'/> |
469 | </Transform> |
470 | <Transform DEF='ThirdQuadrantMarkers' rotation='0 1 0 3.1416'> |
471 | <Group USE='FirstQuadrantMarkers'/> |
472 | </Transform> |
473 | <Transform DEF='FourthQuadrantMarkers' rotation='0 1 0 1.57'> |
474 | <Group USE='FirstQuadrantMarkers'/> |
475 | </Transform> |
476 | </Transform> |
477 | </Transform> |
478 | </Group> |
479 | < ROUTE fromNode='WhereSensor36' fromField='position_changed' toNode='CameraLocation36' toField='translation'/> |
480 | </ProtoBody> |
481 | </ProtoDeclare> |
482 | <!-- ======================== --> |
483 | <NavigationInfo speed='10' type='"FLY" "ANY"'/> |
484 | <Group DEF='TextMenu'> |
485 | <Transform translation='0 2 0'> |
486 | <Shape> |
487 | <Text string='"CameraCompassPrototypes" "is a prototype definition file." "For examples click text:"'> |
488 | <FontStyle justify='"MIDDLE" "MIDDLE"'/> |
489 | </Text> |
490 | <Appearance> |
491 | <Material diffuseColor='0.9 0.9 0.9'/> |
492 | </Appearance> |
493 | </Shape> |
494 | </Transform> |
495 | <Transform translation='0 -1 0'> |
496 | <Anchor description='CameraCompass8 Example' parameter='"target=_blank"' url=' "CameraCompass8Example.x3d" "https://www.web3d.org/x3d/content/examples/Savage/Tools/HeadsUpDisplays/CameraCompass8Example.x3d" "CameraCompass8Example.wrl" "https://www.web3d.org/x3d/content/examples/Savage/Tools/HeadsUpDisplays/CameraCompass8Example.wrl" '> |
497 | <Shape> |
498 | <Text string='"CameraCompass8 Example"'> |
499 | <FontStyle justify='"MIDDLE" "MIDDLE"'/> |
500 | </Text> |
501 | <Appearance> |
502 | <Material diffuseColor='0.8 0.8 0.4'/> |
503 | </Appearance> |
504 | </Shape> |
505 | </Anchor> |
506 | </Transform> |
507 | <Transform translation='0 -2 0'> |
508 | <Anchor description='CameraCompass12 Example' parameter='"target=_blank"' url=' "CameraCompass12Example.x3d" "https://www.web3d.org/x3d/content/examples/Savage/Tools/HeadsUpDisplays/CameraCompass12Example.x3d" "CameraCompass12Example.wrl" "https://www.web3d.org/x3d/content/examples/Savage/Tools/HeadsUpDisplays/CameraCompass12Example.wrl" '> |
509 | <Shape> |
510 | <Text string='"CameraCompass12 Example"'> |
511 | <FontStyle justify='"MIDDLE" "MIDDLE"'/> |
512 | </Text> |
513 | <Appearance> |
514 | <Material diffuseColor='0.8 0.4 0.2'/> |
515 | </Appearance> |
516 | </Shape> |
517 | </Anchor> |
518 | </Transform> |
519 | <Transform translation='0 -3 0'> |
520 | <Anchor description='CameraCompass36 Example' parameter='"target=_blank"' url=' "CameraCompass36Example.x3d" "https://www.web3d.org/x3d/content/examples/Savage/Tools/HeadsUpDisplays/CameraCompass36Example.x3d" "CameraCompass36Example.wrl" "https://www.web3d.org/x3d/content/examples/Savage/Tools/HeadsUpDisplays/CameraCompass36Example.wrl" '> |
521 | <Shape> |
522 | <Text string='"CameraCompass36 Example"'> |
523 | <FontStyle justify='"MIDDLE" "MIDDLE"'/> |
524 | </Text> |
525 | <Appearance> |
526 | <Material diffuseColor='0.9 0.2 0.2'/> |
527 | </Appearance> |
528 | </Shape> |
529 | </Anchor> |
530 | </Transform> |
531 | </Group> |
532 | </Scene> |
533 | </X3D> |
Event Graph ROUTE Table entries with 3 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.
WhereSensor
ProximitySensor position_changed SFVec3f |
CameraLocation
Transform translation SFVec3f |
WhereSensor12
ProximitySensor position_changed SFVec3f |
CameraLocation12
Transform translation SFVec3f |
WhereSensor36
ProximitySensor position_changed SFVec3f |
CameraLocation36
Transform translation SFVec3f |
CameraCompass12Node
ProtoInstance CameraCompass12 |
No direct ROUTE connection found for events to/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 496
Anchor |
description='CameraCompass8 Example' User-interaction hint for this node. |
line 508
Anchor |
description='CameraCompass12 Example' User-interaction hint for this node. |
line 520
Anchor |
description='CameraCompass36 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.
-->