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='Bell.x3d'/> |
6 | <meta name='description' content='Bell for San Carlos Cathedral'/> |
7 | <meta name='creator' content='Michele Foti'/> |
8 | <meta name='created' content='8 March 2012'/> |
9 | <meta name='modified' content='20 October 2019'/> |
10 | <meta name=' TODO ' content=' update bell sound with proper recording of actual bells at San Carlos '/> |
11 | <meta name='reference' content='TODO.html'/> |
12 | <meta name=' TODO ' content=' invert geometry? '/> |
13 | <meta name='reference' content='http://www.sancarloscathedral.net'/> |
14 | <meta name='reference' content='RoyalPresidioChapelHistoricalReferences.pdf'/> |
15 | <meta name='reference' content='CulturalHeritageProjectSanCarlosCathedral.pdf'/> |
16 | <meta name='reference' content='originals/'/> |
17 | <meta name='reference' content='originals/ModelSanCarlosChurchFeb-3-2012.x3d'/> |
18 | <meta name=' warning ' content=' under development '/> |
19 | <meta name='reference' content='http://www.audiomicro.com/church-bell-horns-bells-church-bell-free-sound-effects-45577'/> |
20 | <meta name='generator' content='Audacity, http://audacity.sourceforge.net'/> |
21 | <meta name='identifier' content='https://www.web3d.org/x3d/content/examples/X3dForAdvancedModeling/SanCarlosCathedral/Bell.x3d'/> |
22 | <meta name='generator' content='X3D-Edit 3.3, https://savage.nps.edu/X3D-Edit'/> |
23 | <meta name='license' content='../license.html'/> |
24 | </head> |
25 | <Scene> |
26 | <WorldInfo title='Bell.x3d'/> |
27 | <Background skyColor='1 1 1'/> |
28 | <Transform DEF='Bell' rotation='0 1 0 -1.57' translation='0.75 -0.8 0'> |
29 | <!-- Bell shape --> |
30 |
<!-- ROUTE information for TouchButton node:
[from isActive to Toggler.set_boolean
]
-->
<TouchSensor DEF='TouchButton' description='touch to activate'/> |
31 |
<!-- ROUTE information for BellShape node:
[from RotateBell.value_changed to rotation
]
-->
<Transform DEF='BellShape' center='0 0.55 0' scale='4.2 1.2 4.2' translation='-0.14 0.55 0.75'> |
32 | <Shape> |
33 | <Extrusion beginCap='false' convex='false' creaseAngle='1.57' crossSection='0.142 0 0.141822 0.0071 0.141288 0.0142 0.140393 0.0213 0.139131 0.0284 0.137491 0.0355 0.135459 0.0426 0.133018 0.0497 0.130145 0.0568 0.12681 0.0639 0.122976 0.071 0.118593 0.0781 0.1136 0.0852 0.107911 0.0923 0.101408 0.0994 0.093924 0.1065 0.0852 0.1136 0.074803 0.1207 0.061896 0.1278 0.044339 0.1349 0 0.142 -0 0.142 -0.044339 0.1349 -0.061896 0.1278 -0.074803 0.1207 -0.0852 0.1136 -0.093924 0.1065 -0.101408 0.0994 -0.107911 0.0923 -0.1136 0.0852 -0.118593 0.0781 -0.122976 0.071 -0.12681 0.0639 -0.130145 0.0568 -0.133018 0.0497 -0.135459 0.0426 -0.137491 0.0355 -0.139131 0.0284 -0.140393 0.0213 -0.141288 0.0142 -0.141822 0.0071 -0.142 0 -0.142 0 -0.1349 -0.044339 -0.1278 -0.061896 -0.1207 -0.074803 -0.1136 -0.0852 -0.1065 -0.093924 -0.0994 -0.101408 -0.0923 -0.107911 -0.0852 -0.1136 -0.0781 -0.118593 -0.071 -0.122976 -0.0639 -0.12681 -0.0568 -0.130145 -0.0497 -0.133018 -0.0426 -0.135459 -0.0355 -0.137491 -0.0284 -0.139131 -0.0213 -0.140393 -0.0142 -0.141288 -0.0071 -0.141822 0 -0.142 0.044339 -0.1349 0.061896 -0.1278 0.074803 -0.1207 0.0852 -0.1136 0.093924 -0.1065 0.101408 -0.0994 0.107911 -0.0923 0.1136 -0.0852 0.118593 -0.0781 0.122976 -0.071 0.12681 -0.0639 0.130145 -0.0568 0.133018 -0.0497 0.135459 -0.0426 0.137491 -0.0355 0.139131 -0.0284 0.140393 -0.0213 0.141288 -0.0142 0.141822 -0.0071 0.142 0' scale='1 1 0.9 0.9 0.8 0.8 0.73 0.73 0.68 0.68 0.65 0.65 0.595 0.595 0.5 0.5' solid='false' spine='0 0 0 0 0.08 0 0 0.1 0 0 0.183 0 0 0.266 0 0 0.35 0 0 0.6 0 0 0.65 0'/> |
34 | <Appearance> |
35 | <Material DEF='BellColor' diffuseColor='0.6 0.6 0.6'/> |
36 | </Appearance> |
37 | </Shape> |
38 | </Transform> |
39 | <!-- Support --> |
40 | <Transform DEF='BellSupport' rotation='0 1 0 1.57' scale='1.12 0.85 0.85' translation='-0.15 0.27 -0.286'> |
41 | <Transform DEF='BellSupportOrizzontal' rotation='0 0 1 1.57' translation='-0.92 0.975 0'> |
42 | <Shape> |
43 | <Cylinder height='1.5' radius='0.05'/> |
44 | <Appearance> |
45 | |
46 | </Appearance> |
47 | </Shape> |
48 | </Transform> |
49 | <Transform DEF='BellSupportArc' translation='0 -0.05 0'> |
50 | <Transform DEF='BellSupportArc1' translation='-0.93 1.37 0'> |
51 | <Shape> |
52 | <Box size='0.553 0.07 0.07'/> |
53 | <Appearance> |
54 | <Material USE='Gray1'/> |
55 | </Appearance> |
56 | </Shape> |
57 | </Transform> |
58 | <Transform DEF='BellSupportArc2' rotation='0 0 1 0.785' translation='-1.25 1.31 0'> |
59 | <Shape> |
60 | <Box size='0.2 0.07 0.07'/> |
61 | <Appearance> |
62 | <Material USE='Gray1'/> |
63 | </Appearance> |
64 | </Shape> |
65 | </Transform> |
66 | <Transform DEF='BellSupportArc3' rotation='0 0 1 1.57' translation='-1.31 1.163 0'> |
67 | <Shape> |
68 | <Box size='0.2 0.07 0.07'/> |
69 | <Appearance> |
70 | <Material USE='Gray1'/> |
71 | </Appearance> |
72 | </Shape> |
73 | </Transform> |
74 | <Transform DEF='BellSupportArc4' rotation='0 0 1 -0.785' translation='-0.61 1.31 0'> |
75 | <Shape> |
76 | <Box size='0.2 0.07 0.07'/> |
77 | <Appearance> |
78 | <Material USE='Gray1'/> |
79 | </Appearance> |
80 | </Shape> |
81 | </Transform> |
82 | <Transform DEF='BellSupportArc5' rotation='0 0 1 1.57' translation='-0.55 1.163 0'> |
83 | <Shape> |
84 | <Box size='0.2 0.07 0.07'/> |
85 | <Appearance> |
86 | <Material USE='Gray1'/> |
87 | </Appearance> |
88 | </Shape> |
89 | </Transform> |
90 | </Transform> |
91 | </Transform> |
92 | <!-- Clapper --> |
93 |
<!-- ROUTE information for BellClapper node:
[from RotateClapper.value_changed to rotation
]
-->
<Transform DEF='BellClapper' center='0 0.2 0' translation='-0.15 0.87 0.75'> |
94 | <Transform DEF='BellClapper1'> |
95 | <Shape> |
96 | <Cylinder height='0.4' radius='0.03'/> |
97 | <Appearance> |
98 |
<!-- Material
BellColor2 is a DEF node that has 1 USE node: USE_1 --> <Material DEF='BellColor2' diffuseColor='0.558 0.500 0.500'/> |
99 | </Appearance> |
100 | </Shape> |
101 | </Transform> |
102 | <Transform DEF='BellClapper2' translation='0 -0.2 0'> |
103 | <Shape> |
104 | <Sphere radius='0.05'/> |
105 | <Appearance> |
106 | <Material USE='BellColor2'/> |
107 | </Appearance> |
108 | </Shape> |
109 | </Transform> |
110 | </Transform> |
111 | <Sound location='0 0.5 0'> |
112 | <!-- TODO update sound source using actual San Carlos recording --> |
113 | <!-- This bell recording is 3 seconds and matches our TimeSensor cycleInterval --> |
114 |
<!-- ROUTE information for ChurchBellOneTime node:
[from TimeSensor.cycleTime to startTime
]
-->
<AudioClip DEF='ChurchBellOneTime' description='Church bell tolling' url=' "ChurchBellOneTime.wav" "https://www.web3d.org/x3d/content/examples/X3dForAdvancedModeling/SanCarlosCathedral/ChurchBellOneTime.wav" '/> |
115 | </Sound> |
116 | <!-- Animation --> |
117 |
<!-- ROUTE information for Toggler node:
[from TouchButton.isActive to set_boolean
]
[from toggle_changed to TimeSensor.loop
]
-->
<BooleanToggle DEF='Toggler' containerField='children'/> |
118 | < ROUTE fromNode='TouchButton' fromField='isActive' toNode='Toggler' toField='set_boolean'/> |
119 |
<!-- ROUTE information for TimeSensor node:
[from Toggler.toggle_changed to loop
]
[from cycleTime to ChurchBellOneTime.startTime
]
[from fraction_changed to RotateClapper.set_fraction
]
[from fraction_changed to RotateBell.set_fraction
]
-->
<TimeSensor DEF='TimeSensor' cycleInterval='3'/> |
120 | < ROUTE fromNode='Toggler' fromField='toggle_changed' toNode='TimeSensor' toField='loop'/> |
121 | < ROUTE fromNode='TimeSensor' fromField='cycleTime' toNode='ChurchBellOneTime' toField='startTime'/> |
122 |
<!-- ROUTE information for RotateBell node:
[from TimeSensor.fraction_changed to set_fraction
]
[from value_changed to BellShape.rotation
]
-->
<OrientationInterpolator DEF='RotateBell' key='0 0.10 0.20 0.30 0.40 0.50 0.60 0.70 0.80 0.90 1' keyValue='0 0 1 0 0 0 1 -0.5 0 0 1 -0.7 0 0 1 -0.9 0 0 1 -1 0 0 1 0 0 0 1 1 0 0 1 0.9 0 0 1 0.7 0 0 1 0.2 0 0 1 0'/> |
123 |
<!-- ROUTE information for RotateClapper node:
[from TimeSensor.fraction_changed to set_fraction
]
[from value_changed to BellClapper.rotation
]
-->
<OrientationInterpolator DEF='RotateClapper' key='0 0.05 0.1 0.15 0.25 0.35 0.48 0.52 0.55 0.64 0.70 0.75 0.80 0.90 1' keyValue='0 0 1 0 0 0 1 -0.5 0 0 1 -0.8 0 0 1 -0.8 0 0 1 -1 0 0 1 -0.5 0 0 1 0.3 0 0 1 0.8 0 0 1 1.6 0 0 1 2.1 0 0 1 1.5 0 0 1 1 0 0 1 0.4 0 0 1 0.2 0 0 1 0'/> |
124 | < ROUTE fromNode='TimeSensor' fromField='fraction_changed' toNode='RotateClapper' toField='set_fraction'/> |
125 | < ROUTE fromNode='TimeSensor' fromField='fraction_changed' toNode='RotateBell' toField='set_fraction'/> |
126 | < ROUTE fromNode='RotateBell' fromField='value_changed' toNode='BellShape' toField='rotation'/> |
127 | < ROUTE fromNode='RotateClapper' fromField='value_changed' toNode='BellClapper' toField='rotation'/> |
128 | </Transform> |
129 | </Scene> |
130 | </X3D> |
Event Graph ROUTE Table entries with 7 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.
TouchButton
TouchSensor isActive SFBool |
Toggler
BooleanToggle set_boolean SFBool |
then
|
Toggler
BooleanToggle toggle_changed SFBool |
TimeSensor
TimeSensor loop SFBool |
then
|
TimeSensor
TimeSensor cycleTime SFTime |
ChurchBellOneTime
AudioClip startTime SFTime |
|||||||
then
|
TimeSensor
TimeSensor fraction_changed SFFloat |
RotateClapper
OrientationInterpolator set_fraction SFFloat |
then
|
RotateClapper
OrientationInterpolator value_changed SFRotation |
BellClapper
Transform rotation SFRotation |
|||||||||
then
|
TimeSensor
TimeSensor fraction_changed SFFloat |
RotateBell
OrientationInterpolator set_fraction SFFloat |
then
|
RotateBell
OrientationInterpolator value_changed SFRotation |
BellShape
Transform 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. -->