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='Monolith.x3d'/> |
6 | <meta name='description' content='Monolith world: six vertical monoliths stand arranged together. Touching a monolith starts it glowing in a pulsing fashion.'/> |
7 | <meta name='creator' content='David R. Nadeau'/> |
8 | <meta name='translator' content='Don Brutzman'/> |
9 | <meta name='created' content='1 July 1998'/> |
10 | <meta name='translated' content='2 February 2014'/> |
11 | <meta name='modified' content='20 October 2019'/> |
12 | <meta name='reference' content='originals/monolith.wrl'/> |
13 | <meta name='reference' content='http://www.siggraph.org/s98'/> |
14 | <meta name='reference' content='http://www.siggraph.org/s98/conference/courses/18.html'/> |
15 | <meta name='reference' content='http://www.sdsc.edu/~moreland/courses/Siggraph98/vrml97/slides/mt0145.htm'/> |
16 | <meta name='reference' content='http://www.sdsc.edu/~moreland/courses/Siggraph98/vrml97/vrml97.htm'/> |
17 | <meta name='reference' content='https://www.web3d.org/x3d/content/examples/X3dResources.html'/> |
18 | <meta name='identifier' content='https://www.web3d.org/x3d/content/examples/Vrml2Sourcebook/Siggraph98Course/Monolith.x3d'/> |
19 | <meta name='generator' content='Vrml97ToX3dNist, http://ovrt.nist.gov/v2_x3d.html'/> |
20 | <meta name='generator' content='X3D-Edit, https://savage.nps.edu/X3D-Edit'/> |
21 | <meta name='license' content='../license.html'/> |
22 | </head> |
23 | <Scene> |
24 | <!-- TouchSensors on the monoliths route to TimeSensors, one per monolith. Each TimeSensor routes to the intensity field of a PointLight placed just in front of the monolith. Simultaneously, a monolith's TimeSensor routes to the transparency field on a Material for a Box surrounding the monolith. --> |
25 | <!-- As a monolith's TimeSensor fraction ramps up from 0.0 to 1.0, the PointLight intensity ramps up from 0.0 (off) to 1.0 (full on). At the same time, the monolith's outer box transparency ramps from 0.0 (opaque) to 1.0 (transparent). As the transparency increases, an emissive textured inner box for the monolith becomes visible. The inner box's emissive shading makes it appear to be a light source, and the plausible source of the PointLight source's illumination. The overall effect is one of pulsing glowing monoliths. --> |
26 | <!-- A grid mesh floor is used so that localized lighting effects will be obvious. --> |
27 | <!-- Things to experiment with: --> |
28 | <!-- Try adding a ScalarInterpolator to each monolith and route it's output in to the rotation field of the monolith's TextureTransform. This will rotate the texture on the monolith. --> |
29 | <!-- Instead of the transparent box trick, try using a ColorInterpolator to gradually increase the emissiveColor of a single monolith box while decreasing the box's diffuseColor. --> |
30 | <!-- Try routing the TimeSensor's outputs in to a ScalarInterpolator that varies up and down smoothly, then route this output in to the light source's intensity, etc. Instead of the 0.1-1.0 ramp, then instant fall to 0.0 that the TimeSensor's fraction output gives, you can shape an arbitrary smooth rise and fall curve in the Scalar Interpolator's key values. --> |
31 | <WorldInfo info='"Copyright (c) 1997, David R. Nadeau"' title='Monolith World'/> |
32 | <Viewpoint description='Monolith Entry View' position='0.0 1.6 9.0'/> |
33 | <NavigationInfo headlight='false' type='"WALK" "ANY"'/> |
34 | <Background skyAngle='1.37 1.57' skyColor='0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.1 0.5'/> |
35 | <PointLight ambientIntensity='0.1' color='0.2 0.2 0.2' location='0.0 8.0 10.0'/> |
36 |
<!-- ROUTE information for Monolith1Light node:
[from Monolith1Timer.fraction_changed to set_intensity
]
-->
<PointLight DEF='Monolith1Light' ambientIntensity='0.2' color='0.8 0.4 0.0' intensity='0.0' location='0.0 2.0 0.5'/> |
37 | <Transform translation='0.0 2.0 0.0'> |
38 | <Shape> |
39 | <Appearance> |
40 |
<!-- ROUTE information for Monolith1Facade node:
[from Monolith1Timer.fraction_changed to set_transparency
]
-->
<Material DEF='Monolith1Facade' diffuseColor='0.2 0.2 0.2' transparency='1.0'/> |
41 | </Appearance> |
42 | |
43 | </Shape> |
44 | <Shape> |
45 | <Appearance> |
46 | <TextureTransform scale='0.5 0.5'/> |
47 |
<!-- ImageTexture
MonolithInnerFire is a DEF node that has 5 USE nodes: USE_1, USE_2, USE_3, USE_4, USE_5 --> <ImageTexture DEF='MonolithInnerFire' url=' "fire.jpg " "https://www.web3d.org/x3d/content/examples/Vrml2Sourcebook/Siggraph98Course/fire.jpg " '/> |
48 | </Appearance> |
49 | |
50 | </Shape> |
51 |
<!-- ROUTE information for Monolith1Touch node:
[from touchTime to Monolith1Timer.set_startTime
]
-->
<TouchSensor DEF='Monolith1Touch'/> |
52 | </Transform> |
53 |
<!-- ROUTE information for Monolith2Light node:
[from Monolith2Timer.fraction_changed to set_intensity
]
-->
<PointLight DEF='Monolith2Light' ambientIntensity='0.2' color='0.8 0.4 0.0' intensity='0.0' location='-3.0 2.0 2.5'/> |
54 | <Transform translation='-3.0 2.0 2.0'> |
55 | <Shape> |
56 | <Appearance> |
57 |
<!-- ROUTE information for Monolith2Facade node:
[from Monolith2Timer.fraction_changed to set_transparency
]
-->
<Material DEF='Monolith2Facade' diffuseColor='0.2 0.2 0.2' transparency='1.0'/> |
58 | </Appearance> |
59 | <Box USE='MonolithOuterBox'/> |
60 | </Shape> |
61 | <Shape> |
62 | <Appearance> |
63 | <TextureTransform scale='0.3 0.3' translation='0.2 0.2'/> |
64 | <ImageTexture USE='MonolithInnerFire'/> |
65 | </Appearance> |
66 | <Box USE='MonolithInnerBox'/> |
67 | </Shape> |
68 |
<!-- ROUTE information for Monolith2Touch node:
[from touchTime to Monolith2Timer.set_startTime
]
-->
<TouchSensor DEF='Monolith2Touch'/> |
69 | </Transform> |
70 |
<!-- ROUTE information for Monolith3Light node:
[from Monolith3Timer.fraction_changed to set_intensity
]
-->
<PointLight DEF='Monolith3Light' ambientIntensity='0.2' color='0.8 0.4 0.0' intensity='0.0' location='4.0 2.0 -1.5'/> |
71 | <Transform translation='4.0 2.0 -2.0'> |
72 | <Shape> |
73 | <Appearance> |
74 |
<!-- ROUTE information for Monolith3Facade node:
[from Monolith3Timer.fraction_changed to set_transparency
]
-->
<Material DEF='Monolith3Facade' diffuseColor='0.2 0.2 0.2' transparency='1.0'/> |
75 | </Appearance> |
76 | <Box USE='MonolithOuterBox'/> |
77 | </Shape> |
78 | <Shape> |
79 | <Appearance> |
80 | <TextureTransform scale='0.1 0.1' translation='0.3 0.5'/> |
81 | <ImageTexture USE='MonolithInnerFire'/> |
82 | </Appearance> |
83 | <Box USE='MonolithInnerBox'/> |
84 | </Shape> |
85 |
<!-- ROUTE information for Monolith3Touch node:
[from touchTime to Monolith3Timer.set_startTime
]
-->
<TouchSensor DEF='Monolith3Touch'/> |
86 | </Transform> |
87 |
<!-- ROUTE information for Monolith4Light node:
[from Monolith4Timer.fraction_changed to set_intensity
]
-->
<PointLight DEF='Monolith4Light' ambientIntensity='0.2' color='0.8 0.4 0.0' intensity='0.0' location='4.5 2.0 3.5'/> |
88 | <Transform translation='4.5 2.0 3.0'> |
89 | <Shape> |
90 | <Appearance> |
91 |
<!-- ROUTE information for Monolith4Facade node:
[from Monolith4Timer.fraction_changed to set_transparency
]
-->
<Material DEF='Monolith4Facade' diffuseColor='0.2 0.2 0.2' transparency='1.0'/> |
92 | </Appearance> |
93 | <Box USE='MonolithOuterBox'/> |
94 | </Shape> |
95 | <Shape> |
96 | <Appearance> |
97 | <TextureTransform scale='0.2 0.2' translation='0.4 0.6'/> |
98 | <ImageTexture USE='MonolithInnerFire'/> |
99 | </Appearance> |
100 | <Box USE='MonolithInnerBox'/> |
101 | </Shape> |
102 |
<!-- ROUTE information for Monolith4Touch node:
[from touchTime to Monolith4Timer.set_startTime
]
-->
<TouchSensor DEF='Monolith4Touch'/> |
103 | </Transform> |
104 |
<!-- ROUTE information for Monolith5Light node:
[from Monolith5Timer.fraction_changed to set_intensity
]
-->
<PointLight DEF='Monolith5Light' ambientIntensity='0.2' color='0.8 0.4 0.0' intensity='0.0' location='-3.5 2.0 -4.5'/> |
105 | <Transform translation='-3.5 2.0 -5.0'> |
106 | <Shape> |
107 | <Appearance> |
108 |
<!-- ROUTE information for Monolith5Facade node:
[from Monolith5Timer.fraction_changed to set_transparency
]
-->
<Material DEF='Monolith5Facade' diffuseColor='0.2 0.2 0.2' transparency='1.0'/> |
109 | </Appearance> |
110 | <Box USE='MonolithOuterBox'/> |
111 | </Shape> |
112 | <Shape> |
113 | <Appearance> |
114 | <TextureTransform scale='0.2 0.4' translation='0.5 0.1'/> |
115 | <ImageTexture USE='MonolithInnerFire'/> |
116 | </Appearance> |
117 | <Box USE='MonolithInnerBox'/> |
118 | </Shape> |
119 |
<!-- ROUTE information for Monolith5Touch node:
[from touchTime to Monolith5Timer.set_startTime
]
-->
<TouchSensor DEF='Monolith5Touch'/> |
120 | </Transform> |
121 |
<!-- ROUTE information for Monolith6Light node:
[from Monolith6Timer.fraction_changed to set_intensity
]
-->
<PointLight DEF='Monolith6Light' ambientIntensity='0.2' color='0.8 0.4 0.0' intensity='0.0' location='2.0 2.0 -5.5'/> |
122 | <Transform translation='2.0 2.0 -6.0'> |
123 | <Shape> |
124 | <Appearance> |
125 |
<!-- ROUTE information for Monolith6Facade node:
[from Monolith6Timer.fraction_changed to set_transparency
]
-->
<Material DEF='Monolith6Facade' diffuseColor='0.2 0.2 0.2' transparency='1.0'/> |
126 | </Appearance> |
127 | <Box USE='MonolithOuterBox'/> |
128 | </Shape> |
129 | <Shape> |
130 | <Appearance> |
131 | <TextureTransform scale='0.2 0.4' translation='0.5 0.1'/> |
132 | <ImageTexture USE='MonolithInnerFire'/> |
133 | </Appearance> |
134 | <Box USE='MonolithInnerBox'/> |
135 | </Shape> |
136 |
<!-- ROUTE information for Monolith6Touch node:
[from touchTime to Monolith6Timer.set_startTime
]
-->
<TouchSensor DEF='Monolith6Touch'/> |
137 | </Transform> |
138 | <Inline url=' "Floor.x3d" "https://www.web3d.org/x3d/content/examples/Vrml2Sourcebook/Siggraph98Course/Floor.x3d" "Floor.wrl" "https://www.web3d.org/x3d/content/examples/Vrml2Sourcebook/Siggraph98Course/Floor.wrl" '/> |
139 |
<!-- ROUTE information for Monolith1Timer node:
[from Monolith1Touch.touchTime to set_startTime
]
[from fraction_changed to Monolith1Facade.set_transparency
]
[from fraction_changed to Monolith1Light.set_intensity
]
-->
<TimeSensor DEF='Monolith1Timer' cycleInterval='4.0' stopTime='0.1'/> |
140 | < ROUTE fromNode='Monolith1Touch' fromField='touchTime' toNode='Monolith1Timer' toField='set_startTime'/> |
141 | < ROUTE fromNode='Monolith1Timer' fromField='fraction_changed' toNode='Monolith1Facade' toField='set_transparency'/> |
142 | < ROUTE fromNode='Monolith1Timer' fromField='fraction_changed' toNode='Monolith1Light' toField='set_intensity'/> |
143 |
<!-- ROUTE information for Monolith2Timer node:
[from Monolith2Touch.touchTime to set_startTime
]
[from fraction_changed to Monolith2Facade.set_transparency
]
[from fraction_changed to Monolith2Light.set_intensity
]
-->
<TimeSensor DEF='Monolith2Timer' cycleInterval='4.5' stopTime='0.1'/> |
144 | < ROUTE fromNode='Monolith2Touch' fromField='touchTime' toNode='Monolith2Timer' toField='set_startTime'/> |
145 | < ROUTE fromNode='Monolith2Timer' fromField='fraction_changed' toNode='Monolith2Facade' toField='set_transparency'/> |
146 | < ROUTE fromNode='Monolith2Timer' fromField='fraction_changed' toNode='Monolith2Light' toField='set_intensity'/> |
147 |
<!-- ROUTE information for Monolith3Timer node:
[from Monolith3Touch.touchTime to set_startTime
]
[from fraction_changed to Monolith3Facade.set_transparency
]
[from fraction_changed to Monolith3Light.set_intensity
]
-->
<TimeSensor DEF='Monolith3Timer' cycleInterval='5.0' stopTime='0.1'/> |
148 | < ROUTE fromNode='Monolith3Touch' fromField='touchTime' toNode='Monolith3Timer' toField='set_startTime'/> |
149 | < ROUTE fromNode='Monolith3Timer' fromField='fraction_changed' toNode='Monolith3Facade' toField='set_transparency'/> |
150 | < ROUTE fromNode='Monolith3Timer' fromField='fraction_changed' toNode='Monolith3Light' toField='set_intensity'/> |
151 |
<!-- ROUTE information for Monolith4Timer node:
[from Monolith4Touch.touchTime to set_startTime
]
[from fraction_changed to Monolith4Facade.set_transparency
]
[from fraction_changed to Monolith4Light.set_intensity
]
-->
<TimeSensor DEF='Monolith4Timer' cycleInterval='5.5' stopTime='0.1'/> |
152 | < ROUTE fromNode='Monolith4Touch' fromField='touchTime' toNode='Monolith4Timer' toField='set_startTime'/> |
153 | < ROUTE fromNode='Monolith4Timer' fromField='fraction_changed' toNode='Monolith4Facade' toField='set_transparency'/> |
154 | < ROUTE fromNode='Monolith4Timer' fromField='fraction_changed' toNode='Monolith4Light' toField='set_intensity'/> |
155 |
<!-- ROUTE information for Monolith5Timer node:
[from Monolith5Touch.touchTime to set_startTime
]
[from fraction_changed to Monolith5Facade.set_transparency
]
[from fraction_changed to Monolith5Light.set_intensity
]
-->
<TimeSensor DEF='Monolith5Timer' cycleInterval='6.0' stopTime='0.1'/> |
156 | < ROUTE fromNode='Monolith5Touch' fromField='touchTime' toNode='Monolith5Timer' toField='set_startTime'/> |
157 | < ROUTE fromNode='Monolith5Timer' fromField='fraction_changed' toNode='Monolith5Facade' toField='set_transparency'/> |
158 | < ROUTE fromNode='Monolith5Timer' fromField='fraction_changed' toNode='Monolith5Light' toField='set_intensity'/> |
159 |
<!-- ROUTE information for Monolith6Timer node:
[from Monolith6Touch.touchTime to set_startTime
]
[from fraction_changed to Monolith6Facade.set_transparency
]
[from fraction_changed to Monolith6Light.set_intensity
]
-->
<TimeSensor DEF='Monolith6Timer' cycleInterval='6.5' stopTime='0.1'/> |
160 | < ROUTE fromNode='Monolith6Touch' fromField='touchTime' toNode='Monolith6Timer' toField='set_startTime'/> |
161 | < ROUTE fromNode='Monolith6Timer' fromField='fraction_changed' toNode='Monolith6Facade' toField='set_transparency'/> |
162 | < ROUTE fromNode='Monolith6Timer' fromField='fraction_changed' toNode='Monolith6Light' toField='set_intensity'/> |
163 | </Scene> |
164 | </X3D> |
Event Graph ROUTE Table entries with 18 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.
Monolith1Touch
TouchSensor touchTime SFTime |
Monolith1Timer
TimeSensor set_startTime SFTime |
then
|
Monolith1Timer
TimeSensor fraction_changed SFFloat |
Monolith1Facade
Material set_transparency SFFloat |
||
then
|
Monolith1Timer
TimeSensor fraction_changed SFFloat |
Monolith1Light
PointLight set_intensity SFFloat |
Monolith2Touch
TouchSensor touchTime SFTime |
Monolith2Timer
TimeSensor set_startTime SFTime |
then
|
Monolith2Timer
TimeSensor fraction_changed SFFloat |
Monolith2Facade
Material set_transparency SFFloat |
||
then
|
Monolith2Timer
TimeSensor fraction_changed SFFloat |
Monolith2Light
PointLight set_intensity SFFloat |
Monolith3Touch
TouchSensor touchTime SFTime |
Monolith3Timer
TimeSensor set_startTime SFTime |
then
|
Monolith3Timer
TimeSensor fraction_changed SFFloat |
Monolith3Facade
Material set_transparency SFFloat |
||
then
|
Monolith3Timer
TimeSensor fraction_changed SFFloat |
Monolith3Light
PointLight set_intensity SFFloat |
Monolith4Touch
TouchSensor touchTime SFTime |
Monolith4Timer
TimeSensor set_startTime SFTime |
then
|
Monolith4Timer
TimeSensor fraction_changed SFFloat |
Monolith4Facade
Material set_transparency SFFloat |
||
then
|
Monolith4Timer
TimeSensor fraction_changed SFFloat |
Monolith4Light
PointLight set_intensity SFFloat |
Monolith5Touch
TouchSensor touchTime SFTime |
Monolith5Timer
TimeSensor set_startTime SFTime |
then
|
Monolith5Timer
TimeSensor fraction_changed SFFloat |
Monolith5Facade
Material set_transparency SFFloat |
||
then
|
Monolith5Timer
TimeSensor fraction_changed SFFloat |
Monolith5Light
PointLight set_intensity SFFloat |
Monolith6Touch
TouchSensor touchTime SFTime |
Monolith6Timer
TimeSensor set_startTime SFTime |
then
|
Monolith6Timer
TimeSensor fraction_changed SFFloat |
Monolith6Facade
Material set_transparency SFFloat |
||
then
|
Monolith6Timer
TimeSensor fraction_changed SFFloat |
Monolith6Light
PointLight set_intensity SFFloat |
<!--
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. -->