<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE X3D PUBLIC "ISO//Web3D//DTD X3D 3.3//EN" "https://www.web3d.org/specifications/x3d-3.3.dtd">
<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 ' >
<head>
<meta name='titlecontent='Temple.x3d'/>
<meta name='descriptioncontent='Temple of the Glowing Orb: this world creates a glowing rotating orb when the pedestal is touched.'/>
<meta name='creatorcontent='David R. Nadeau, John L. Moreland, Michael M. Heck'/>
<meta name='translatorcontent='Don Brutzman'/>
<meta name='createdcontent='1 July 1998'/>
<meta name='translatedcontent='2 February 2014'/>
<meta name='modifiedcontent='20 October 2019'/>
<meta name='referencecontent='originals/temple.wrl'/>
<meta name='referencecontent=' http://www.siggraph.org/s98 '/>
<meta name='referencecontent=' http://www.siggraph.org/s98/conference/courses/18.html '/>
<meta name='referencecontent=' http://www.sdsc.edu/~moreland/courses/Siggraph98/vrml97/slides/mt0008.htm '/>
<meta name='referencecontent=' http://www.sdsc.edu/~moreland/courses/Siggraph98/vrml97/slides/mt0309.htm '/>
<meta name='referencecontent=' http://www.sdsc.edu/~moreland/courses/Siggraph98/vrml97/slides/mt0383.htm '/>
<meta name='referencecontent=' http://www.sdsc.edu/~moreland/courses/Siggraph98/vrml97/vrml97.htm '/>
<meta name='referencecontent=' https://www.web3d.org/x3d/content/examples/X3dResources.html '/>
<meta name='identifiercontent=' https://www.web3d.org/x3d/content/examples/Vrml2Sourcebook/Siggraph98Course/Temple.x3d '/>
<meta name='generatorcontent='Vrml97ToX3dNist, http://ovrt.nist.gov/v2_x3d.html'/>
<meta name='generatorcontent='X3D-Edit, https://savage.nps.edu/X3D-Edit'/>
<meta name='licensecontent=' ../license.html'/>
</head>
<!-- -->
<Scene>
<!-- The orb animations include: -->
<!-- 1. An OrientationInterpolator rotating an inner emissive textured sphere. -->
<!-- 2. An OrientationInterpolator rotating an outer emissive textured semi-transparent sphere. -->
<!-- 3. An OrientationInterpolator rotating a pair of rings, angled at a 45 degree angle. -->
<!-- 4. An OrientationInterpolator rotating a second pair of rings, angled at a 45 degree angle. -->
<!-- A ScalarInterpolator with semi-random floating point keyValue that are routed in to a PointLight, thereby causing a flickering effect. That effect is turned on only after the pedestal has been touched. -->
<WorldInfo info='"Copyright (c) 1997, David R. Nadeau"title='Temple of the Orb'/>
<Viewpoint description='Entry viewposition='0.0 1.6 9.0'/>
<NavigationInfo headlight='falsespeed='2.0type='"WALK" "ANY"'/>
<Background skyAngle='1.371 1.571skyColor='0.0 0.1 0.2 0.0 0.1 0.3 0.0 0.0 0.0'/>
<!-- ROUTE information for OrbLight node:  [from OrbLightIntensity.value_changed to set_intensity ] -->
<PointLight DEF='OrbLightcolor='0.3 0.7 1.0intensity='0.0location='0.0 2.0 0.0'/>

<DirectionalLight color='1.0 0.5 0.0direction='1.0 0.1 -0.5'/>
<DirectionalLight color='1.0 0.5 0.0direction='1.0 0.1 -0.5'/>
<DirectionalLight color='1.0 0.0 0.0direction='-1.0 -0.4 -0.5'/>
<DirectionalLight color='1.0 0.0 0.0direction='-1.0 -0.4 -0.5'/>
<Transform translation='0.0 3.64 0.0'>
<Group DEF='VaultedCeiling'>
<Inline DEF='Vault'
  url=' "vault.x3d" "https://www.web3d.org/x3d/content/examples/Vrml2Sourcebook/Siggraph98Course/vault.x3d" "vault.wrl" "https://www.web3d.org/x3d/content/examples/Vrml2Sourcebook/Siggraph98Course/vault.wrl" ' />

<Transform rotation='0.0 1.0 0.0 1.57'>
<Inline USE=' Vault'/>
</Transform>
<Transform rotation='0.0 1.0 0.0 3.14'>
<Inline USE=' Vault'/>
</Transform>
<Transform rotation='0.0 1.0 0.0 -1.57'>
<Inline USE=' Vault'/>
</Transform>
</Group>
<Transform translation='-2.0 0.0 0.0'>
<Group USE=' VaultedCeiling'/>
</Transform>
<Transform translation='2.0 0.0 0.0'>
<Group USE=' VaultedCeiling'/>
</Transform>
<Transform translation='0.0 0.0 -2.0'>
<Group USE=' VaultedCeiling'/>
</Transform>
<Transform translation='0.0 0.0 2.0'>
<Group USE=' VaultedCeiling'/>
</Transform>
</Transform>
<Transform translation='-3.0 0.0 -1.0'> </Transform>
<Transform translation='-1.0 0.0 -1.0'>
<Transform USE=' Column'/>
</Transform>
<Transform translation='1.0 0.0 -1.0'>
<Transform USE=' Column'/>
</Transform>
<Transform translation='3.0 0.0 -1.0'>
<Transform USE=' Column'/>
</Transform>
<Transform translation='-3.0 0.0 1.0'>
<Transform USE=' Column'/>
</Transform>
<Transform translation='-1.0 0.0 1.0'>
<Transform USE=' Column'/>
</Transform>
<Transform translation='1.0 0.0 1.0'>
<Transform USE=' Column'/>
</Transform>
<Transform translation='3.0 0.0 1.0'>
<Transform USE=' Column'/>
</Transform>
<Transform translation='-1.0 0.0 -3.0'>
<Transform USE=' Column'/>
</Transform>
<Transform translation='-1.0 0.0 3.0'>
<Transform USE=' Column'/>
</Transform>
<Transform translation='1.0 0.0 -3.0'>
<Transform USE=' Column'/>
</Transform>
<Transform translation='1.0 0.0 3.0'>
<Transform USE=' Column'/>
</Transform>
<Transform translation='-11.5 0.0 -11.5'>
<Shape>
<Appearance>
<TextureTransform scale='16.0 16.0'/>
<Material ambientIntensity='0.5diffuseColor='1.0 1.0 1.0'/>
<ImageTexture
  url=' "stone2.jpg " "https://www.web3d.org/x3d/content/examples/Vrml2Sourcebook/Siggraph98Course/stone2.jpg " ' />
</Appearance>
<ElevationGrid solid='falsexDimension='8xSpacing='3.0zDimension='8zSpacing='3.0height='0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0'/>
</Shape>
</Transform>
<Collision enabled='false'>
<!-- ROUTE information for OrbAll node:  [from OrbScaler.value_changed to set_scale ] -->
<Transform DEF='OrbAllscale='0.01 0.01 0.01translation='0.0 1.625 0.0'>
<Transform rotation='0.0 0.0 1.0 0.785'>
<!-- ROUTE information for RingSet1 node:  [from RingSet1Rotator.value_changed to set_rotation ] -->
<Transform DEF='RingSet1'>
<Transform DEF='Ring1rotation='0.0 0.0 1.0 0.35translation='0.0 0.0525 0.0'>
<Shape DEF='Ring'>
<Appearance>
<Material ambientIntensity='0.0diffuseColor='0.0 0.0 0.0emissiveColor='0.0 0.3 0.8shininess='1.0specularColor='0.0 0.1 0.1'/>
</Appearance>
<Cylinder bottom='falseheight='0.008radius='0.15top='false'/>
</Shape>
</Transform>
<Transform DEF='Ring2rotation='0.0 0.0 1.0 -0.35translation='0.0 -0.0525 0.0'>
<Shape USE=' Ring'/>
</Transform>
</Transform>
</Transform>
<Transform rotation='0.0 0.0 1.0 -0.785'>
<!-- ROUTE information for RingSet2 node:  [from RingSet2Rotator.value_changed to set_rotation ] -->
<Transform DEF='RingSet2scale='0.9 0.9 0.9'>
<Transform USE=' Ring1'/>
<Transform USE=' Ring2'/>
</Transform>
</Transform>
<!-- ROUTE information for Orb node:  [from OrbRotator.value_changed to set_rotation ] -->
<Transform DEF='Orb'>
<Shape>
<Appearance>
<TextureTransform scale='2.0 2.0'/>
<ImageTexture
  url=' "brtsky.jpg " "https://www.web3d.org/x3d/content/examples/Vrml2Sourcebook/Siggraph98Course/brtsky.jpg " ' />
</Appearance>
<Sphere radius='0.1'/>
</Shape>
</Transform>
</Transform>
</Collision>
<Transform translation='0.0 1.625 0.0'>
<!-- ROUTE information for OrbSound node:  [from OrbVolume.value_changed to set_intensity ] -->
<Sound DEF='OrbSoundintensity='0.0maxBack='15.0maxFront='15.0'>
<!-- ROUTE information for OrbClip node:  [from PedestalTouch.touchTime to set_startTime ] -->
<AudioClip DEF='OrbClipstartTime='-1.0'
  url=' "willow1.wav" "https://www.web3d.org/x3d/content/examples/Vrml2Sourcebook/Siggraph98Course/willow1.wav" ' />
</Sound>
</Transform>
<Collision enabled='false'>
<Transform scale='3.25 3.25 3.25translation='0.0 0.015 0.0'>
<Shape>
<Appearance>
<Material DEF='GranitMaterialambientIntensity='0.0diffuseColor='0.8 0.8 1.0'/>
<ImageTexture DEF='GranitTexture'
  url=' "granit_g.jpg " "https://www.web3d.org/x3d/content/examples/Vrml2Sourcebook/Siggraph98Course/granit_g.jpg " ' />
</Appearance>
<IndexedFaceSet coordIndex='0 1 4 -1 1 2 4 -1 2 3 4 -1 3 0 4 -1texCoordIndex='0 1 2 -1 0 1 2 -1 0 1 2 -1 0 1 2 -1'>
<TextureCoordinate point='0.0 0.0 1.0 0.0 0.5 1.0'/>
<Coordinate point='-0.06 0.0 0.06 0.06 0.0 0.06 0.06 0.0 -0.06 -0.06 0.0 -0.06 0.0 0.3 0.0'/>
</IndexedFaceSet>
</Shape>
</Transform>
<Transform scale='3.25 3.25 3.25translation='0.0 0.008 0.0'>
<Shape>
<Appearance>
<Material USE=' GranitMaterial'/>
<ImageTexture USE=' GranitTexture'/>
</Appearance>
<Box size='0.2 0.025 0.2'/>
</Shape>
</Transform>
</Collision>
<!-- ROUTE information for OrbTimer node:  [from PedestalTouch.touchTime to set_startTime ] [from fraction_changed to OrbRotator.set_fraction ] -->
<TimeSensor DEF='OrbTimercycleInterval='20.0loop='truestartTime='-1.0'/>

<!-- ROUTE information for OrbRotator node:  [from OrbTimer.fraction_changed to set_fraction ] [from value_changed to Orb.set_rotation ] -->
<OrientationInterpolator DEF='OrbRotatorkey='0.0 0.5 1.0keyValue='0.0 1.0 0.0 0.0 0.0 1.0 0.0 3.14 0.0 1.0 0.0 6.28'/>

< ROUTE  fromNode=' OrbTimer' fromField='fraction_changed' toNode=' OrbRotator' toField='set_fraction'/>
< ROUTE  fromNode=' OrbRotator' fromField='value_changed' toNode=' Orb' toField='set_rotation'/>
<!-- ROUTE information for RingSet1Timer node:  [from PedestalTouch.touchTime to set_startTime ] [from fraction_changed to RingSet1Rotator.set_fraction ] -->
<TimeSensor DEF='RingSet1TimercycleInterval='2.0loop='truestartTime='-1.0'/>

<!-- ROUTE information for RingSet2Timer node:  [from PedestalTouch.touchTime to set_startTime ] [from fraction_changed to RingSet2Rotator.set_fraction ] -->
<TimeSensor DEF='RingSet2TimercycleInterval='2.2loop='truestartTime='-1.0'/>

<!-- ROUTE information for RingSet1Rotator node:  [from RingSet1Timer.fraction_changed to set_fraction ] [from value_changed to RingSet1.set_rotation ] -->
<OrientationInterpolator DEF='RingSet1Rotatorkey='0.0 0.5 1.0keyValue='0.0 1.0 0.0 0.0 0.0 1.0 0.0 -3.14 0.0 1.0 0.0 -6.28'/>

< ROUTE  fromNode=' RingSet1Timer' fromField='fraction_changed' toNode=' RingSet1Rotator' toField='set_fraction'/>
< ROUTE  fromNode=' RingSet1Rotator' fromField='value_changed' toNode=' RingSet1' toField='set_rotation'/>
<!-- ROUTE information for RingSet2Rotator node:  [from RingSet2Timer.fraction_changed to set_fraction ] [from value_changed to RingSet2.set_rotation ] -->
<OrientationInterpolator DEF='RingSet2Rotatorkey='0.0 0.5 1.0keyValue='0.0 1.0 0.0 0.0 0.0 1.0 0.0 3.14 0.0 1.0 0.0 6.28'/>

< ROUTE  fromNode=' RingSet2Timer' fromField='fraction_changed' toNode=' RingSet2Rotator' toField='set_fraction'/>
< ROUTE  fromNode=' RingSet2Rotator' fromField='value_changed' toNode=' RingSet2' toField='set_rotation'/>
<!-- ROUTE information for OrbLightTimer node:  [from PedestalTouch.touchTime to set_startTime ] [from fraction_changed to OrbLightIntensity.set_fraction ] -->
<TimeSensor DEF='OrbLightTimercycleInterval='12.0startTime='-1.0'/>

<!-- ROUTE information for OrbLightIntensity node:  [from OrbLightTimer.fraction_changed to set_fraction ] [from value_changed to OrbLight.set_intensity ] -->
<ScalarInterpolator DEF='OrbLightIntensitykey='0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0keyValue='0.0 0.5 0.7 1.0 0.9 0.8 1.0 0.9 0.9 0.5 0.0'/>

< ROUTE  fromNode=' OrbLightTimer' fromField='fraction_changed' toNode=' OrbLightIntensity' toField='set_fraction'/>
< ROUTE  fromNode=' OrbLightIntensity' fromField='value_changed' toNode=' OrbLight' toField='set_intensity'/>
<!-- ROUTE information for OrbScaleTimer node:  [from PedestalTouch.touchTime to set_startTime ] [from fraction_changed to OrbScaler.set_fraction ] [from fraction_changed to OrbVolume.set_fraction ] -->
<TimeSensor DEF='OrbScaleTimercycleInterval='12.0startTime='-1.0'/>

<!-- ROUTE information for OrbScaler node:  [from OrbScaleTimer.fraction_changed to set_fraction ] [from value_changed to OrbAll.set_scale ] -->
<PositionInterpolator DEF='OrbScalerkey='0.0 0.3 0.9 1.0keyValue='0.001 0.001 0.001 3.25 3.25 3.25 3.25 3.25 3.25 0.001 0.001 0.001'/>

<!-- ROUTE information for OrbVolume node:  [from OrbScaleTimer.fraction_changed to set_fraction ] [from value_changed to OrbSound.set_intensity ] -->
<ScalarInterpolator DEF='OrbVolumekey='0.0 0.3 0.9 1.0keyValue='0.0 1.0 1.0 0.0'/>

< ROUTE  fromNode=' PedestalTouch' fromField='touchTime' toNode=' OrbScaleTimer' toField='set_startTime'/>
< ROUTE  fromNode=' PedestalTouch' fromField='touchTime' toNode=' OrbLightTimer' toField='set_startTime'/>
< ROUTE  fromNode=' PedestalTouch' fromField='touchTime' toNode=' OrbClip' toField='set_startTime'/>
< ROUTE  fromNode=' PedestalTouch' fromField='touchTime' toNode=' OrbTimer' toField='set_startTime'/>
< ROUTE  fromNode=' PedestalTouch' fromField='touchTime' toNode=' RingSet1Timer' toField='set_startTime'/>
< ROUTE  fromNode=' PedestalTouch' fromField='touchTime' toNode=' RingSet2Timer' toField='set_startTime'/>
< ROUTE  fromNode=' OrbScaleTimer' fromField='fraction_changed' toNode=' OrbScaler' toField='set_fraction'/>
< ROUTE  fromNode=' OrbScaleTimer' fromField='fraction_changed' toNode=' OrbVolume' toField='set_fraction'/>
< ROUTE  fromNode=' OrbScaler' fromField='value_changed' toNode=' OrbAll' toField='set_scale'/>
< ROUTE  fromNode=' OrbVolume' fromField='value_changed' toNode=' OrbSound' toField='set_intensity'/>
</Scene>
</X3D>
<!--

to top <!-- Event Graph ROUTE Table shows event connections -->
 
<!-- Index for DEF nodes: Column, GranitMaterial, GranitTexture, Orb, OrbAll, OrbClip, OrbLight, OrbLightIntensity, OrbLightTimer, OrbRotator, OrbScaler, OrbScaleTimer, OrbSound, OrbTimer, OrbVolume, PedestalTouch, Ring, Ring1, Ring2, RingSet1, RingSet1Rotator, RingSet1Timer, RingSet2, RingSet2Rotator, RingSet2Timer, Vault, VaultedCeiling

Index for Viewpoint node: Viewpoint_1
-->

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.

PedestalTouch
TouchSensor
touchTime
SFTime

ROUTE
event to
(1)
OrbScaleTimer
TimeSensor
set_startTime
SFTime

 
 
then
OrbScaleTimer
TimeSensor
fraction_changed
SFFloat

ROUTE
event to
(2)
OrbScaler
PositionInterpolator
set_fraction
SFFloat

 
 
then
OrbScaler
PositionInterpolator
value_changed
SFVec3f

ROUTE
event to
(3)
OrbAll
Transform
set_scale
SFVec3f
 
 
 
then
OrbScaleTimer
TimeSensor
fraction_changed
SFFloat

ROUTE
event to
(2)
OrbVolume
ScalarInterpolator
set_fraction
SFFloat

 
 
then
OrbVolume
ScalarInterpolator
value_changed
SFFloat

ROUTE
event to
(3)
OrbSound
Sound
set_intensity
SFFloat
PedestalTouch
TouchSensor
touchTime
SFTime

ROUTE
event to
(1)
OrbLightTimer
TimeSensor
set_startTime
SFTime

 
 
then
OrbLightTimer
TimeSensor
fraction_changed
SFFloat

ROUTE
event to
(2)
OrbLightIntensity
ScalarInterpolator
set_fraction
SFFloat

 
 
then
OrbLightIntensity
ScalarInterpolator
value_changed
SFFloat

ROUTE
event to
(3)
OrbLight
PointLight
set_intensity
SFFloat
PedestalTouch
TouchSensor
touchTime
SFTime

ROUTE
event to
(1)
OrbClip
AudioClip
set_startTime
SFTime
PedestalTouch
TouchSensor
touchTime
SFTime

ROUTE
event to
(1)
OrbTimer
TimeSensor
set_startTime
SFTime

 
 
then
OrbTimer
TimeSensor
fraction_changed
SFFloat

ROUTE
event to
(2)
OrbRotator
OrientationInterpolator
set_fraction
SFFloat

 
 
then
OrbRotator
OrientationInterpolator
value_changed
SFRotation

ROUTE
event to
(3)
Orb
Transform
set_rotation
SFRotation
PedestalTouch
TouchSensor
touchTime
SFTime

ROUTE
event to
(1)
RingSet1Timer
TimeSensor
set_startTime
SFTime

 
 
then
RingSet1Timer
TimeSensor
fraction_changed
SFFloat

ROUTE
event to
(2)
RingSet1Rotator
OrientationInterpolator
set_fraction
SFFloat

 
 
then
RingSet1Rotator
OrientationInterpolator
value_changed
SFRotation

ROUTE
event to
(3)
RingSet1
Transform
set_rotation
SFRotation
PedestalTouch
TouchSensor
touchTime
SFTime

ROUTE
event to
(1)
RingSet2Timer
TimeSensor
set_startTime
SFTime

 
 
then
RingSet2Timer
TimeSensor
fraction_changed
SFFloat

ROUTE
event to
(2)
RingSet2Rotator
OrientationInterpolator
set_fraction
SFFloat

 
 
then
RingSet2Rotator
OrientationInterpolator
value_changed
SFRotation

ROUTE
event to
(3)
RingSet2
Transform
set_rotation
SFRotation


OrbTimer
TimeSensor
fraction_changed
SFFloat

ROUTE
event to
(1)
OrbRotator
OrientationInterpolator
set_fraction
SFFloat

 
 
then
OrbRotator
OrientationInterpolator
value_changed
SFRotation

ROUTE
event to
(2)
Orb
Transform
set_rotation
SFRotation


RingSet1Timer
TimeSensor
fraction_changed
SFFloat

ROUTE
event to
(1)
RingSet1Rotator
OrientationInterpolator
set_fraction
SFFloat

 
 
then
RingSet1Rotator
OrientationInterpolator
value_changed
SFRotation

ROUTE
event to
(2)
RingSet1
Transform
set_rotation
SFRotation


RingSet2Timer
TimeSensor
fraction_changed
SFFloat

ROUTE
event to
(1)
RingSet2Rotator
OrientationInterpolator
set_fraction
SFFloat

 
 
then
RingSet2Rotator
OrientationInterpolator
value_changed
SFRotation

ROUTE
event to
(2)
RingSet2
Transform
set_rotation
SFRotation



-->

<!-- Online at
https://www.web3d.org/x3d/content/examples/Vrml2Sourcebook/Siggraph98Course/TempleIndex.html -->
<!-- Version control at
https://sourceforge.net/p/x3d/code/HEAD/tree/www.web3d.org/x3d/content/examples/Vrml2Sourcebook/Siggraph98Course/Temple.x3d -->

<!-- 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)
-->

to top <!-- For additional help information about X3D scenes, please see X3D Tooltips, X3D Resources, and X3D Scene Authoring Hints. -->