| 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=' Trebuchet.x3d '/> |
| 6 | <meta name='description' content='Working model of a 14th century Trebuchet Catapult.'/> |
| 7 | <meta name='creator' content='Joe Roth'/> |
| 8 | <meta name='created' content='20 June 2001'/> |
| 9 | <meta name='modified' content='30 November 2024'/> |
| 10 | <meta name='version' content='7.8'/> |
| 11 | <meta name=' TODO ' content=' multiple files missing, lost '/> |
| 12 | <meta name='identifier' content=' https://www.web3d.org/x3d/content/examples/Basic/StudentProjects/Trebuchet.x3d '/> |
| 13 | <meta name='reference' content='http://trebuchet.com'/> |
| 14 | <meta name='reference' content='http://members.home.net/dimona'/> |
| 15 | <meta name='subject' content='trebuchet catapult Monty Python'/> |
| 16 | <meta name='reference' content='Permission granted for use of the VRML chicken I own a copy of Monty Python and the Holy Grail I have requested permission to use for non profit use. No response received. I will use the sound clips under "Fair Use" clause of the DMCA'/> |
| 17 | <meta name='reference' content=' https://www.web3d.org/WorkingGroups/media/textures/nature/leaves_5.jpg.htm '/> |
| 18 | <meta name='reference' content=' http://www.revemonde.net/UniversalMedia/textures/nature/leaves_5.jpg.htm '/> |
| 19 | <meta name='generator' content='X3D-Edit 3.3, https://www.web3d.org/x3d/tools/X3D-Edit'/> |
| 20 | <meta name='license' content='../license.html'/> |
| 21 | </head> |
| 22 | <Scene> |
| 23 | <WorldInfo title='Trebuchet.x3d'/> |
| 24 |
<Background groundAngle='1.309 1.570796' groundColor='0.1 0.1 0 0.4 0.25 0.2 0.6 0.6 0.6' skyAngle='1.309 1.57079' skyColor='0 0.2 0.7 0 0.5 1 1 1 1'
backUrl=' "../UniversalMediaPanoramas/meadow_2_back.jpg
" "https://www.web3d.org/x3d/content/examples/Basic/StudentProjects/../UniversalMediaPanoramas/meadow_2_back.jpg
" "https://www.web3d.org/WorkingGroups/media/textures/panoramas/meadow_2_back.jpg
" '
bottomUrl=' "../UniversalMediaPanoramas/meadow_2_bottom.jpg
" "https://www.web3d.org/x3d/content/examples/Basic/StudentProjects/../UniversalMediaPanoramas/meadow_2_bottom.jpg
" "https://www.web3d.org/WorkingGroups/media/textures/panoramas/meadow_2_bottom.jpg
" '
frontUrl=' "../UniversalMediaPanoramas/meadow_2_front.jpg
" "https://www.web3d.org/x3d/content/examples/Basic/StudentProjects/../UniversalMediaPanoramas/meadow_2_front.jpg
" "https://www.web3d.org/WorkingGroups/media/textures/panoramas/meadow_2_front.jpg
" '
leftUrl=' "../UniversalMediaPanoramas/meadow_2_left.jpg
" "https://www.web3d.org/x3d/content/examples/Basic/StudentProjects/../UniversalMediaPanoramas/meadow_2_left.jpg
" "https://www.web3d.org/WorkingGroups/media/textures/panoramas/meadow_2_left.jpg
" '
rightUrl=' "../UniversalMediaPanoramas/meadow_2_right.jpg
" "https://www.web3d.org/x3d/content/examples/Basic/StudentProjects/../UniversalMediaPanoramas/meadow_2_right.jpg
" "https://www.web3d.org/WorkingGroups/media/textures/panoramas/meadow_2_right.jpg
" '
topUrl=' "../UniversalMediaPanoramas/meadow_2_top.jpg
" "https://www.web3d.org/x3d/content/examples/Basic/StudentProjects/../UniversalMediaPanoramas/meadow_2_top.jpg
" "https://www.web3d.org/WorkingGroups/media/textures/panoramas/meadow_2_top.jpg
" '/>
|
| 25 | <Sound maxBack='1000' maxFront='1000'> |
| 26 | <AudioClip DEF='HolyGrail' description='HolyGrail' loop='true' url=' "holygral.mp3" "https://www.web3d.org/x3d/content/examples/Basic/StudentProjects/holygral.mp3" '/> |
| 27 | </Sound> |
| 28 | <Shape> |
| 29 | <Box size='10000 1 10000'/> |
| 30 | <Appearance> |
| 31 |
<ImageTexture
url=' "grass.jpg
" "https://www.web3d.org/x3d/content/examples/Basic/StudentProjects/grass.jpg
" '/>
|
| 32 | </Appearance> |
| 33 | </Shape> |
| 34 | <Transform rotation='0 1 0 1.57' scale='.5 .5 .5' translation='10.5 6.5 4.5'> |
| 35 | <Shape> |
| 36 | |
| 37 | <Material diffuseColor='1 0 0' emissiveColor='1 1 0'/> |
| 38 | </Appearance> |
| 39 | <Text string='"Click Sling to Select Projectile"'> |
| 40 | <FontStyle/> |
| 41 | </Text> |
| 42 | </Shape> |
| 43 | </Transform> |
| 44 | <Transform rotation='0 1 0 1.57' scale='.5 .5 .5' translation='11 5.5 6'> |
| 45 |
<!-- Switch
Weight is a DEF node that has 1 USE node: USE_1
<!-- ROUTE information for Weight node: [from WeightScript.whichchoice to whichChoice ] --> <Switch DEF='Weight' whichChoice='0'> |
| 46 | <Group> |
| 47 | <Shape> |
| 48 | <Appearance USE='TextAppearance'/> |
| 49 | <Text string='"Click Here to Change Counter Weight (50 lbs)"'/> |
| 50 | </Shape> |
| 51 | </Group> |
| 52 | <Group> |
| 53 | <Shape> |
| 54 | <Appearance USE='TextAppearance'/> |
| 55 | <Text string='"Click Here to Change Counter Weight (500 lbs)"'/> |
| 56 | </Shape> |
| 57 | </Group> |
| 58 | <Group> |
| 59 | <Shape> |
| 60 | <Appearance USE='TextAppearance'/> |
| 61 | <Text string='"Click Here to Change Counter Weight (1000 lbs)"'/> |
| 62 | </Shape> |
| 63 | </Group> |
| 64 | <Group> |
| 65 | <Shape> |
| 66 | <Appearance USE='TextAppearance'/> |
| 67 | <Text string='"Click Here to Change Counter Weight (10000 lbs)"'/> |
| 68 | </Shape> |
| 69 | </Group> |
| 70 | </Switch> |
| 71 |
<!-- TouchSensor
weightselector is a DEF node that has 1 USE node: USE_1
<!-- ROUTE information for weightselector node: [from isActive to WeightScript.set_boolean ] --> <TouchSensor DEF='weightselector' description='weight selector'/> |
| 72 | <Transform translation='8 0 0'> |
| 73 | <Shape> |
| 74 | <Box size='20 1 1'/> |
| 75 | <Appearance> |
| 76 | <Material transparency='1'/> |
| 77 | </Appearance> |
| 78 | </Shape> |
| 79 | </Transform> |
| 80 | </Transform> |
| 81 | <Transform rotation='0 1 0 1.57' translation='10 .5 4.5'> |
| 82 | |
| 83 | <Billboard> |
| 84 | <Shape> |
| 85 | <Appearance> |
| 86 | <Material diffuseColor='1 0 0'/> |
| 87 | </Appearance> |
| 88 | <Text string='"LAUNCH"'> |
| 89 | <FontStyle/> |
| 90 | </Text> |
| 91 | </Shape> |
| 92 | <Transform translation='2 .3 0'> |
| 93 | <Shape> |
| 94 | <Box size='5 1 1'/> |
| 95 | <Appearance> |
| 96 | <Material transparency='1'/> |
| 97 | </Appearance> |
| 98 | </Shape> |
| 99 | </Transform> |
| 100 |
<!-- ROUTE information for PigdogMonk node:
[from PigdogMonkScript.whichchoice to whichChoice
]
-->
<Switch DEF='PigdogMonk' whichChoice='-1'> |
| 101 | <Group> |
| 102 | <Sound maxBack='1000' maxFront='1000'> |
| 103 |
<!-- ROUTE information for PigDogSound node:
[from Launch.touchTime to set_startTime
]
-->
<AudioClip DEF='PigDogSound' description='PigDogSound' url=' "pigdog.wav" "http://www.nps.navy.mil/code32/vrml/pigdog.wav" '/> |
| 104 | </Sound> |
| 105 | </Group> |
| 106 | <Group> |
| 107 | <Sound maxBack='1000' maxFront='1000'> |
| 108 |
<!-- ROUTE information for MonkSound node:
[from Launch.touchTime to set_startTime
]
-->
<AudioClip DEF='MonkSound' description='MonkSound' url=' "monks.wav" "https://www.web3d.org/x3d/content/examples/Basic/StudentProjects/monks.wav" '/> |
| 109 | <!-- original sound file lost, replacement from https://freesound.org/people/nemaavla/sounds/344683/ --> |
| 110 | </Sound> |
| 111 | </Group> |
| 112 | </Switch> |
| 113 | </Billboard> |
| 114 |
<!-- ROUTE information for Launch node:
[from touchTime to clock.set_startTime
]
[from isActive to PigdogMonkScript.set_boolean
]
[from touchTime to PigDogSound.set_startTime
]
[from touchTime to MonkSound.set_startTime
]
-->
<TouchSensor DEF='Launch' description='launch!'/> |
| 115 | </Transform> |
| 116 | <Transform> |
| 117 |
<!-- Switch
projectilename is a DEF node that has 1 USE node: USE_1
<!-- ROUTE information for projectilename node: [from LauncheeScript.whichchoice to whichChoice ] --> <Switch DEF='projectilename' whichChoice='0'> |
| 118 | <Group> |
| 119 | <Shape> |
| 120 | <Appearance USE='TextAppearance'/> |
| 121 | <Text string='"Bowling Ball (10 lbs)"'> |
| 122 | <FontStyle size='.5'/> |
| 123 | </Text> |
| 124 | </Shape> |
| 125 | <Sound maxBack='1000' maxFront='1000' priority='1'> |
| 126 |
<!-- ROUTE information for HolyHandGrenadeSound node:
[from LauncheeChoice.touchTime to set_startTime
]
-->
<AudioClip DEF='HolyHandGrenadeSound' description='HolyHandGrenadeSound' url=' "grenade.wav"'/> |
| 127 | </Sound> |
| 128 | </Group> |
| 129 | <Group> |
| 130 | <Shape> |
| 131 | <Appearance USE='TextAppearance'/> |
| 132 | <Text string='"Cow (1000 lbs)"'> |
| 133 | <FontStyle size='.5'/> |
| 134 | </Text> |
| 135 | </Shape> |
| 136 | <Sound maxBack='1000' maxFront='1000'> |
| 137 |
<!-- ROUTE information for CowSound node:
[from LauncheeChoice.touchTime to set_startTime
]
-->
<AudioClip DEF='CowSound' description='CowSound' url=' "lavache.wav"'/> |
| 138 | </Sound> |
| 139 | </Group> |
| 140 | <Group> |
| 141 | <Shape> |
| 142 | <Appearance USE='TextAppearance'/> |
| 143 | <Text string='"Chicken (5 lbs)"'> |
| 144 | <FontStyle size='.5'/> |
| 145 | </Text> |
| 146 | </Shape> |
| 147 | <Sound maxBack='1000' maxFront='1000' priority='1'> |
| 148 |
<!-- ROUTE information for HamsterSound node:
[from LauncheeChoice.touchTime to set_startTime
]
-->
<AudioClip DEF='HamsterSound' description='HamsterSound' url=' "hamster.wav"'/> |
| 149 | </Sound> |
| 150 | </Group> |
| 151 | </Switch> |
| 152 | </Transform> |
| 153 | </Transform> |
| 154 | <Transform rotation='0 1 0 -1.67'> |
| 155 | <Transform DEF='aft' translation='5 5 15'> |
| 156 | <Transform translation='-2.5 -4.5 -2'> |
| 157 | <Transform USE='launch'/> |
| 158 | </Transform> |
| 159 | </Transform> |
| 160 | </Transform> |
| 161 | <Transform translation='0 3 0'> |
| 162 | |
| 163 | <Box size='25 1 1'/> |
| 164 | |
| 165 |
<!-- ImageTexture
woodTexture is a DEF node that has 1 USE node: USE_1 --> <ImageTexture DEF='woodTexture' url=' "wood.gif
" "https://www.web3d.org/x3d/content/examples/Basic/StudentProjects/wood.gif
" '/>
|
| 166 | </Appearance> |
| 167 | </Shape> |
| 168 |
<!-- Transform
angledsupport is a DEF node that has 1 USE node: USE_1 -->
<Transform DEF='angledsupport' rotation='0 0 1 1' translation='-5 10 0'> |
| 169 | <Shape USE='plank'/> |
| 170 | </Transform> |
| 171 |
<!-- Transform
angledsupport2 is a DEF node that has 1 USE node: USE_1 -->
<Transform DEF='angledsupport2' rotation='0 0 1 -1' translation='5 10 0'> |
| 172 | <Shape USE='plank'/> |
| 173 | </Transform> |
| 174 |
<!-- Transform
verticalsupport is a DEF node that has 1 USE node: USE_1 -->
<Transform DEF='verticalsupport' rotation='0 0 1 1.57' scale='.9 1 1' translation='0 11 0'> |
| 175 | <Shape USE='plank'/> |
| 176 | <!-- Main Verticle Support --> |
| 177 | </Transform> |
| 178 |
<!-- Transform
horizontalsupport is a DEF node that has 2 USE nodes: USE_1, USE_2 -->
<Transform DEF='horizontalsupport' scale='.4 1 1' translation='0 10 0'> |
| 179 | <Shape USE='plank'/> |
| 180 | </Transform> |
| 181 | <Transform rotation='0 0 1 1.57' scale='.6 1 1' translation='0 5 10'> |
| 182 | <Transform rotation='0 1 0 .4'> |
| 183 | <Shape USE='plank'/> |
| 184 | </Transform> |
| 185 | </Transform> |
| 186 | |
| 187 | <Shape> |
| 188 | <Box size='5 5 .5'/> |
| 189 | <Appearance USE='wood'/> |
| 190 | </Shape> |
| 191 | </Transform> |
| 192 | <Transform rotation='1 0 0 -1.57' translation='0 0.6 2.5'> |
| 193 | <Transform rotation='0 0 1 1.57'> |
| 194 | <Shape> |
| 195 | <Extrusion beginCap='false' crossSection='1.0 -.38 .92 -.38 .71 -.71 .38 -.92 0.0 -1.0 -.38 -.92 -.71 -.71 -.92 -.38 -1.0 -.38 -1 -1.1 1 -1.1 1.0 -.38' endCap='false' solid='false' spine='0 6 0 0 -11 0'/> |
| 196 | <Appearance USE='wood'/> |
| 197 | </Shape> |
| 198 | </Transform> |
| 199 | </Transform> |
| 200 |
<!-- ROUTE information for flinger node:
[from flingerangles.value_changed to set_rotation
]
-->
<Transform DEF='flinger' center='7 0 0' rotation='0 0 1 .82' scale='.9 1 1' translation='-7 18 2.5'> |
| 201 | <Transform> |
| 202 | <Shape> |
| 203 | <Box size='35 1 1'/> |
| 204 | <Appearance USE='wood'/> |
| 205 | </Shape> |
| 206 | <Transform translation='7 0 0'> |
| 207 | <Shape> |
| 208 | <Box size='8 2 2'/> |
| 209 | <Appearance USE='wood'/> |
| 210 | </Shape> |
| 211 | </Transform> |
| 212 | </Transform> |
| 213 | <Transform rotation='1 0 0 1.57' scale='.2 .2 .2' translation='-15 -1 0'> |
| 214 | |
| 215 | <Appearance> |
| 216 | <Material specularColor='1 1 1'/> |
| 217 | </Appearance> |
| 218 | <Extrusion beginCap='false' convex='false' creaseAngle='1.57' crossSection='.90 0.00 0.81 -0.34 0.63 -0.63 0.34 -0.83 0.00 -.9 -0.34 -0.81 -0.63 -0.63 -0.81 -0.34 -.90 -0.00 -0.81 0.34 -0.63 0.63 -0.34 0.81 0.00 .90 0.38 0.81 0.63 0.63 0.81 0.34 .90 0.00' endCap='false' spine='2.00 0.0 0.00 1.85 0.0 0.77 1.41 0.0 1.41 0.77 0.0 1.85 0.00 0.0 2.00 -0.77 0.0 1.85 -1.41 0.0 1.41 -1.85 0.0 0.77 -2.00 0.0 0.00 -1.85 0.0 -0.77 -1.41 0.0 -1.41 -0.77 0.0 -1.85 0.00 0.0 -2.00 0.77 0.0 -1.85 1.41 0.0 -1.41 1.85 0.0 -0.77 2.00 0.0 0.00'/> |
| 219 | </Shape> |
| 220 | <Transform translation='1 0 2'> |
| 221 | <Shape> |
| 222 | |
| 223 | <ImageTexture USE='woodTexture'/> |
| 224 | </Appearance> |
| 225 | <Sphere radius='1.5'/> |
| 226 | </Shape> |
| 227 | <!-- knott --> |
| 228 | </Transform> |
| 229 | </Transform> |
| 230 | <!-- The Unicorn --> |
| 231 | <Transform rotation='0 0 1 1.2' scale='.2 .2 .2' translation='-18.3 0.3 0'> |
| 232 | <Shape> |
| 233 | <Cylinder height='10'/> |
| 234 | <Appearance> |
| 235 | <Material specularColor='1 1 1'/> |
| 236 | </Appearance> |
| 237 | </Shape> |
| 238 | <Transform translation='0 -2.5 0'> |
| 239 | <Shape USE='Torus'/> |
| 240 | <!-- The Unicorn --> |
| 241 | <Transform translation='-2 -0 0'> |
| 242 | <Shape> |
| 243 | <Sphere radius='1.5'/> |
| 244 | <Appearance USE='rope'/> |
| 245 | </Shape> |
| 246 | <!-- Knott --> |
| 247 | </Transform> |
| 248 | </Transform> |
| 249 | <Transform rotation='0 0 1 1.2' translation='15 55 -11'> |
| 250 | <Transform scale='5 5 5'> |
| 251 | <Shape> |
| 252 | <Appearance USE='rope'/> |
| 253 | <Extrusion beginCap='false' creaseAngle='0.76' crossSection='.100 0.00 0.092 -0.038 0.071 -0.071 0.038 -0.092 0.00 -.100 -0.038 -0.092 -0.071 -0.071 -0.092 -0.038 -.100 -0.00 -0.092 0.038 -0.071 0.071 -0.038 0.092 0.00 .100 0.038 0.092 0.071 0.071 0.092 0.038 .100 0.00' endCap='false' solid='false' spine='-15.2 1.4 2.2 -12 -.8 2.2'/> |
| 254 | </Shape> |
| 255 | </Transform> |
| 256 | </Transform> |
| 257 | </Transform> |
| 258 | <Transform rotation='1 0 0 -1.7' translation='-17 -4.5 0'> |
| 259 | <Transform scale='.2 .2 .2'> |
| 260 | <Shape USE='Torus'> |
| 261 | <!-- Knot --> |
| 262 | </Shape> |
| 263 | <Transform translation='-1 0 1.7'> |
| 264 | <Shape> |
| 265 | <Sphere radius='1.5'/> |
| 266 | <Appearance USE='rope'/> |
| 267 | </Shape> |
| 268 | </Transform> |
| 269 | </Transform> |
| 270 | </Transform> |
| 271 | <Transform DEF='RnS'> |
| 272 | <Transform DEF='ropes'> |
| 273 | <Transform rotation='0 0 1 -.82' translation='7 -26 -2.5'> |
| 274 | <Shape> |
| 275 | <Appearance USE='rope'/> |
| 276 | <Extrusion beginCap='false' creaseAngle='0.76' crossSection='.100 0.00 0.092 -0.038 0.071 -0.071 0.038 -0.092 0.00 -.100 -0.038 -0.092 -0.071 -0.071 -0.092 -0.038 -.100 -0.00 -0.092 0.038 -0.071 0.071 -0.038 0.092 0.00 .100 0.038 0.092 0.071 0.071 0.092 0.038 .100 0.00' endCap='false' solid='false' spine='-33 .9 2.5 -18.5 1.9 2.55'/> |
| 277 | </Shape> |
| 278 | <Shape> |
| 279 | <Appearance USE='rope'/> |
| 280 | <Extrusion beginCap='false' creaseAngle='0.76' crossSection='.100 0.00 0.092 -0.038 0.071 -0.071 0.038 -0.092 0.00 -.100 -0.038 -0.092 -0.071 -0.071 -0.092 -0.038 -.100 -0.00 -0.092 0.038 -0.071 0.071 -0.038 0.092 0.00 .100 0.038 0.092 0.071 0.071 0.092 0.038 .100 0.00' endCap='false' solid='false' spine='-35.7 -.8 2.5 -18.8 -.8 2.55'/> |
| 281 | </Shape> |
| 282 | </Transform> |
| 283 | </Transform> |
| 284 | <Transform DEF='sling' rotation='0 0 1 -.82' translation='-4 -15.3 0'> |
| 285 | <Transform> |
| 286 | <Transform rotation='0 1 0 -1.57' scale='1 1.3 1' translation='.5 0 -1'> |
| 287 | <Transform rotation='0 0 1 1.57'> |
| 288 | <Transform scale='.3 .3 .3'> |
| 289 | |
| 290 | |
| 291 | <Material transparency='.5'/> |
| 292 | </Appearance> |
| 293 | <Extrusion crossSection='0 0 0 5 .5 7 1 8 2 9 3 11 3.5 11.2 4 11 5 9 6 8 6.5 7 6.7 5 6.7 0 0 0' spine='0 0 0 .1 0 0'/> |
| 294 | </Shape> |
| 295 | <Transform scale='.3 .3 .3' translation='0 -3.5 11.5'> |
| 296 | <Shape USE='Torus'/> |
| 297 | <Transform translation='0 0 2'> |
| 298 | <Shape> |
| 299 | <Appearance USE='rope'/> |
| 300 | <Sphere radius='1.5'/> |
| 301 | </Shape> |
| 302 | </Transform> |
| 303 | </Transform> |
| 304 | </Transform> |
| 305 | <Transform scale='.3 .3 .3' translation='2 0 0'> |
| 306 | <Shape USE='halfsling'/> |
| 307 | <Transform scale='.3 .3 .3' translation='0 -3.5 11.3'> |
| 308 | <Shape USE='Torus'/> |
| 309 | <Transform translation='0 0 2'> |
| 310 | <Shape> |
| 311 | <Appearance USE='rope'/> |
| 312 | <Sphere radius='1.5'/> |
| 313 | </Shape> |
| 314 | </Transform> |
| 315 | </Transform> |
| 316 | </Transform> |
| 317 | <Transform translation='1 -1 0'> |
| 318 | <Shape> |
| 319 | <Extrusion beginCap='false' creaseAngle='0.785' crossSection='1.00 0.00 0.92 -0.38 0.71 -0.71 0.38 -0.92 0.00 -1.00 -0.38 -0.92 -0.71 -0.71 -0.92 -0.38 -1.00 -0.00' endCap='false' solid='false' spine='0 -1 0 0 1 0'/> |
| 320 | <Appearance USE='clear'/> |
| 321 | </Shape> |
| 322 | </Transform> |
| 323 | </Transform> |
| 324 |
<!-- TouchSensor
LauncheeChoice is a DEF node that has 1 USE node: USE_1
<!-- ROUTE information for LauncheeChoice node: [from touchTime to HolyHandGrenadeSound.set_startTime ] [from touchTime to CowSound.set_startTime ] [from touchTime to HamsterSound.set_startTime ] [from isActive to LauncheeScript.set_boolean ] --> <TouchSensor DEF='LauncheeChoice' description='launcher choice'/> |
| 325 | </Transform> |
| 326 |
<!-- ROUTE information for projectiletransform node:
[from invisiable.value_changed to set_scale
]
-->
<Transform DEF='projectiletransform' scale='.01 .01 .01'> |
| 327 |
<!-- Switch
projectile is a DEF node that has 1 USE node: USE_1
<!-- ROUTE information for projectile node: [from LauncheeScript.whichchoice to whichChoice ] --> <Switch DEF='projectile' whichChoice='0'> |
| 328 | <Group> |
| 329 | <Transform translation='0 .7 0'> |
| 330 | <Shape> |
| 331 | <Sphere radius='.7'/> |
| 332 | |
| 333 | <Material diffuseColor='0 0 0' specularColor='1 1 1'/> |
| 334 | </Appearance> |
| 335 | </Shape> |
| 336 | </Transform> |
| 337 | </Group> |
| 338 | <Group> |
| 339 | <Transform> |
| 340 | <Inline url=' "cow.wrl" "http://www.uoguelph.ca/~dchiu/cow.wrl" '/> |
| 341 | </Transform> |
| 342 | </Group> |
| 343 | <Group> |
| 344 | <Transform rotation='0 1 0 1.57' scale='.4 .4 .4' translation='0 .7 0'> |
| 345 | <Inline url=' "vrml_ginger.wrl" "http://home.inreach.com/ntamura/vrml/vrml_ginger.wrl" '/> |
| 346 | </Transform> |
| 347 | </Group> |
| 348 | </Switch> |
| 349 | </Transform> |
| 350 | </Transform> |
| 351 | </Transform> |
| 352 | </Transform> |
| 353 | </Transform> |
| 354 | <Transform rotation='1 0 0 1.57' translation='0 18 2.5'> |
| 355 | <Shape> |
| 356 | <Cylinder height='8' radius='.4'/> |
| 357 | <Appearance> |
| 358 | <Material diffuseColor='0 0 0' specularColor='1 1 1'/> |
| 359 | </Appearance> |
| 360 | </Shape> |
| 361 | <!-- Top Pivot --> |
| 362 | </Transform> |
| 363 |
<!-- ROUTE information for verticalweight node:
[from verticalweightpath.value_changed to set_translation
]
-->
<Transform DEF='verticalweight'> |
| 364 | <Transform translation='4 18 1.8'> |
| 365 | <Shape> |
| 366 | <Box size='1 10 .5'/> |
| 367 | <Appearance USE='wood'/> |
| 368 | </Shape> |
| 369 | </Transform> |
| 370 | <Transform translation='4 18 3.2'> |
| 371 | <Shape> |
| 372 | <Box size='1 10 .5'/> |
| 373 | <Appearance USE='wood'/> |
| 374 | </Shape> |
| 375 | </Transform> |
| 376 | <Transform translation='4 14 2.5'> |
| 377 | <!-- CounterWeight --> |
| 378 | <Shape> |
| 379 | <Cylinder height='4' radius='1.5'/> |
| 380 | <Appearance> |
| 381 | <Material diffuseColor='0 0 0' specularColor='1 1 1'/> |
| 382 | </Appearance> |
| 383 | </Shape> |
| 384 | </Transform> |
| 385 | <Transform rotation='1 0 0 1.57' translation='4 22 2.5'> |
| 386 | <Shape> |
| 387 | <Cylinder height='2.5' radius='.3'/> |
| 388 | <Appearance> |
| 389 | <Material diffuseColor='0 0 0' specularColor='1 1 1'/> |
| 390 | </Appearance> |
| 391 | </Shape> |
| 392 | </Transform> |
| 393 | </Transform> |
| 394 | <Transform rotation='0 0 1 1.57' scale='.2 .2 .2' translation='-11.5 -1 2'> |
| 395 | |
| 396 | <Shape USE='Torus'/> |
| 397 | <Transform rotation='1 0 0 -1.57' translation='0 0 7'> |
| 398 | <Shape> |
| 399 | <Cylinder height='10' radius='.7'/> |
| 400 | <Appearance> |
| 401 | <Material specularColor='1 1 1'/> |
| 402 | </Appearance> |
| 403 | </Shape> |
| 404 | </Transform> |
| 405 | </Transform> |
| 406 | <Transform translation='0 0 7'> |
| 407 | <Transform USE='screw'/> |
| 408 | </Transform> |
| 409 | <!-- Release Pin --> |
| 410 |
<!-- ROUTE information for Pin node:
[from pinpath.value_changed to set_translation
]
-->
<Transform DEF='Pin' rotation='1 0 0 -1.57' translation='0 0 -3'> |
| 411 | <Transform USE='screw'/> |
| 412 | </Transform> |
| 413 | </Transform> |
| 414 | <Transform translation='0 0 5'> |
| 415 | <Shape USE='plank'/> |
| 416 | <Transform USE='angledsupport'/> |
| 417 | <Transform USE='angledsupport2'/> |
| 418 | <Transform USE='verticalsupport'/> |
| 419 | <Transform USE='horizontalsupport'/> |
| 420 | <Transform rotation='0 1 0 1.57' scale='.6 1 1' translation='0 -11 -2.5'> |
| 421 | <Transform USE='horizontalsupport'/> |
| 422 | </Transform> |
| 423 | <Transform rotation='0 0 1 -1.57' scale='.6 1 1' translation='0 5 -10'> |
| 424 | <Transform rotation='0 1 0 .4'> |
| 425 | <Shape USE='plank'/> |
| 426 | </Transform> |
| 427 | </Transform> |
| 428 | <Transform translation='0 0 .6'> |
| 429 | <Transform USE='panel'/> |
| 430 | </Transform> |
| 431 | </Transform> |
| 432 | <Transform translation='10 -1 2.5'> |
| 433 | |
| 434 | <Box size='1 1 8'/> |
| 435 | <Appearance USE='wood'/> |
| 436 | </Shape> |
| 437 | <Transform rotation='1 0 0 1.57' translation='0 0 4.5'> |
| 438 | |
| 439 | <Cylinder radius='2'/> |
| 440 | <Appearance USE='wood'/> |
| 441 | </Shape> |
| 442 | |
| 443 | <Sphere radius='1.5'/> |
| 444 | <Appearance USE='black'/> |
| 445 | </Shape> |
| 446 | <Transform translation='0 .55 0'> |
| 447 | |
| 448 | <Sphere radius='1.5'/> |
| 449 | <Appearance USE='black'/> |
| 450 | </Shape> |
| 451 | </Transform> |
| 452 | </Transform> |
| 453 | <Transform rotation='1 0 0 1.57' translation='0 0 -4.5'> |
| 454 | <Shape USE='wheel'/> |
| 455 | <Shape USE='tracks'/> |
| 456 | <Transform translation='0 -.55 0'> |
| 457 | <Shape USE='hub'/> |
| 458 | </Transform> |
| 459 | </Transform> |
| 460 | </Transform> |
| 461 | <Transform translation='-10 -1 2.5'> |
| 462 | <Shape USE='Axle'/> |
| 463 | <Transform rotation='1 0 0 1.57' translation='0 0 4.5'> |
| 464 | <Shape USE='wheel'/> |
| 465 | <Shape USE='tracks'/> |
| 466 | <Transform translation='0 .55 0'> |
| 467 | <Shape USE='hub'/> |
| 468 | </Transform> |
| 469 | </Transform> |
| 470 | <Transform rotation='1 0 0 1.57' translation='0 0 -4.5'> |
| 471 | <Shape USE='wheel'/> |
| 472 | <Shape USE='tracks'/> |
| 473 | <Transform translation='0 -.55 0'> |
| 474 | <Shape USE='hub'/> |
| 475 | </Transform> |
| 476 | </Transform> |
| 477 | <Transform rotation='0 1 0 -.6' translation='0 100 400'> |
| 478 | <Transform translation='1 3 0'> |
| 479 | <Viewpoint description='Side'/> |
| 480 | </Transform> |
| 481 | <Transform USE='launch'/> |
| 482 | <Transform> |
| 483 | <TouchSensor USE='LauncheeChoice'/> |
| 484 | <Switch USE='projectilename'/> |
| 485 | <Transform translation='2.5 0 0'> |
| 486 | <Shape> |
| 487 | <Box size='5 .5 .5'/> |
| 488 | <Appearance> |
| 489 | <Material transparency='1'/> |
| 490 | </Appearance> |
| 491 | </Shape> |
| 492 | </Transform> |
| 493 | </Transform> |
| 494 | <Transform scale='.5 .5 .5' translation='0 -1 0'> |
| 495 | <TouchSensor USE='weightselector'/> |
| 496 | <Switch USE='Weight'/> |
| 497 | <Transform translation='8 0 0'> |
| 498 | <Shape> |
| 499 | <Box size='17 1 .5'/> |
| 500 | <Appearance> |
| 501 | <Material transparency='1'/> |
| 502 | </Appearance> |
| 503 | </Shape> |
| 504 | </Transform> |
| 505 | </Transform> |
| 506 | </Transform> |
| 507 |
<!-- ROUTE information for ProjectileTransform node:
[from Mover.value_changed to set_translation
]
[from Mover.transparent to set_scale
]
-->
<Transform DEF='ProjectileTransform' translation='14.25 1.25 0'> |
| 508 | <Switch USE='projectile'/> |
| 509 | <Transform rotation='0 1 0 1.57' translation='0 1 0'> |
| 510 | <Viewpoint description='Projectile Cam' position='0 0 15'/> |
| 511 | </Transform> |
| 512 | </Transform> |
| 513 | <Transform translation='20 2 0'> |
| 514 | <Transform DEF='Front' rotation='0 1 0 1.57'> |
| 515 | <Viewpoint description='Fore'/> |
| 516 | </Transform> |
| 517 | </Transform> |
| 518 | <Transform translation='-8 4 0'> |
| 519 | <Transform rotation='0 1 0 -1.57'> |
| 520 | <Viewpoint description='Aft'/> |
| 521 | </Transform> |
| 522 | </Transform> |
| 523 |
<!-- ROUTE information for WeightScript node:
[from weightselector.isActive to set_boolean
]
[from CounterWeight to Mover.set_MassCounterWeight
]
[from whichchoice to Weight.whichChoice
]
-->
<Script DEF='WeightScript'> |
| 524 | <field name='set_boolean' type='SFBool' accessType='inputOnly'/> |
| 525 | <field name='whichchoice' type='SFInt32' accessType='outputOnly'/> |
| 526 | <field name='CounterWeight' type='SFFloat' accessType='outputOnly'/> |
<![CDATA[
ecmascript:
function initialize ()
{
whichchoice =0;
CounterWeight=100;
}
function set_boolean ( boolean_input, eventTime)
{
if ( boolean_input== false ) { return; } // ignore the unclick
whichchoice = whichchoice +1;
if (whichchoice == 0)CounterWeight=50.00;
if (whichchoice == 1)CounterWeight=500.00;
if (whichchoice == 2)CounterWeight=1000.00;
if (whichchoice == 3)CounterWeight=10000.00;
if ( whichchoice ==4 ) { whichchoice = 0; CounterWeight=50; }
Browser.println ('CounterWeight ='+CounterWeight);
}
]]>
|
|
| 528 | </Script> |
| 529 |
<!-- ROUTE information for LauncheeScript node:
[from LauncheeChoice.isActive to set_boolean
]
[from ProjectileWeight to Mover.set_MassProjectileWeight
]
[from whichchoice to projectile.whichChoice
]
[from whichchoice to projectilename.whichChoice
]
-->
<Script DEF='LauncheeScript'> |
| 530 | <field name='set_boolean' type='SFBool' accessType='inputOnly'/> |
| 531 | <field name='whichchoice' type='SFInt32' accessType='outputOnly'/> |
| 532 | <field name='ProjectileWeight' type='SFFloat' accessType='outputOnly'/> |
<![CDATA[
ecmascript:
function set_boolean (boolean_input, eventTime)
{
if ( boolean_input== false ) { return; } // ignore unclick
whichchoice = whichchoice +1;
if (whichchoice == 0)ProjectileWeight=10.00;
if (whichchoice == 1)ProjectileWeight=1000.00;
if (whichchoice == 2)ProjectileWeight=5;
if ( whichchoice ==3 ) { whichchoice = 0; ProjectileWeight=10.00; }
Browser.println ('Projectile Weight'+ProjectileWeight);
}
]]>
|
|
| 534 | </Script> |
| 535 |
<!-- ROUTE information for PigdogMonkScript node:
[from Launch.isActive to set_boolean
]
[from whichchoice to PigdogMonk.whichChoice
]
-->
<Script DEF='PigdogMonkScript'> |
| 536 | <field name='set_boolean' type='SFBool' accessType='inputOnly'/> |
| 537 | <field name='whichchoice' type='SFInt32' accessType='outputOnly'/> |
<![CDATA[
ecmascript:
function set_boolean (boolean_input, eventTime)
{
if ( boolean_input== false ) { return; } // ignore unclick
whichchoice = whichchoice +1;
if ( whichchoice ==2 ) whichchoice = 0;
}
]]>
|
|
| 539 | </Script> |
| 540 |
<!-- ROUTE information for Mover node:
[from WeightScript.CounterWeight to set_MassCounterWeight
]
[from LauncheeScript.ProjectileWeight to set_MassProjectileWeight
]
[from clock.fraction_changed to set_fraction
]
[from value_changed to ProjectileTransform.set_translation
]
[from transparent to ProjectileTransform.set_scale
]
-->
<Script DEF='Mover'> |
| 541 | <field name='set_fraction' type='SFFloat' accessType='inputOnly'/> |
| 542 | <field name='set_MassCounterWeight' type='SFFloat' accessType='inputOnly'/> |
| 543 | <field name='set_MassProjectileWeight' type='SFFloat' accessType='inputOnly'/> |
| 544 | <field name='MassCounterWeight' type='SFFloat' value='1' accessType='initializeOnly'/> |
| 545 | <field name='MassProjectileWeight' type='SFFloat' value='1' accessType='initializeOnly'/> |
| 546 | <field name='transparent' type='SFVec3f' accessType='outputOnly'/> |
| 547 | <field name='value_changed' type='SFVec3f' accessType='outputOnly'/> |
<![CDATA[
ecmascript:
function initialize ()
{
MassCounterWeight=100;
MassProjectileWeight=10;
Browser.println ('MassCounterWeight =' + MassCounterWeight);
Browser.println ('MassProjectileWeight =' + MassProjectileWeight);
}
function set_MassProjectileWeight (value, timestamp)
{
MassProjectileWeight = value;
Browser.println ('new MassProjectileWeight =' + MassProjectileWeight);
}
function set_MassCounterWeight (value2, timestamp)
{
MassCounterWeight = value2;
Browser.println ('new MassCounterWeight =' + MassCounterWeight);
}
function set_fraction ( fraction, eventTime )
{
var TrebuchetHeight=45;
var Height =25;
x = (2*(MassCounterWeight/MassProjectileWeight)*Height*fraction)-.5*TrebuchetHeight;
// start at TrebuchetHeight and keep along z axis (z=zero)
y = (MassCounterWeight/MassProjectileWeight)*Height*Math.sin(fraction*3.14);
z = 0;
transparent = new SFVec3f (1,1,1);
if (y <1.5*TrebuchetHeight )if (x<TrebuchetHeight)
{
x=x-10;
y=y+1;
transparent = new SFVec3f(.01, .01, .01);
}
value_changed = new SFVec3f (x, y, z);
Browser.println ('x=' + value_changed[0] + ' y=' + value_changed[1] + ' z=' + value_changed[2]);
}
]]>
|
|
| 549 | </Script> |
| 550 | </Transform> |
| 551 | </Transform> |
| 552 |
<!-- ROUTE information for clock node:
[from Launch.touchTime to set_startTime
]
[from fraction_changed to invisiable.set_fraction
]
[from fraction_changed to Mover.set_fraction
]
[from fraction_changed to flingerangles.set_fraction
]
[from fraction_changed to verticalweightpath.set_fraction
]
[from fraction_changed to pinpath.set_fraction
]
-->
<TimeSensor DEF='clock' cycleInterval='10'/> |
| 553 |
<!-- ROUTE information for verticalweightpath node:
[from clock.fraction_changed to set_fraction
]
[from value_changed to verticalweight.set_translation
]
-->
<PositionInterpolator DEF='verticalweightpath' key='0 .1 .2 .2 .3 .9' keyValue='1.4 1.6 0 1. -8 0 -3.5 -12 0 -3.5 -12 0 1.2 -8 0 1.4 1.6 0'/> |
| 554 |
<!-- ROUTE information for flingerangles node:
[from clock.fraction_changed to set_fraction
]
[from value_changed to flinger.set_rotation
]
-->
<OrientationInterpolator DEF='flingerangles' key='0 .1 .2 .2 .3 .9' keyValue='0 0 1 .82 0 0 1 -.77 0 0 1 -1.57 0 0 1 -1.57 0 0 1 -.77 0 0 1 .82'/> |
| 555 |
<!-- ROUTE information for pinpath node:
[from clock.fraction_changed to set_fraction
]
[from value_changed to Pin.set_translation
]
-->
<PositionInterpolator DEF='pinpath' key='0 .01 .95 1' keyValue='0 0 -3 0 0 -10 0 0 -10 0 0 -3'/> |
| 556 | <OrientationInterpolator DEF='RnSAngels' key='0 .7 1' keyValue='0 0 1 0 0 0 1 -3.14 0 0 1 0'/> |
| 557 |
<!-- ROUTE information for invisiable node:
[from clock.fraction_changed to set_fraction
]
[from value_changed to projectiletransform.set_scale
]
-->
<PositionInterpolator DEF='invisiable' key='0 .2 .98 .99' keyValue='1 1 1 .01 .01 .01 .01 .01 .01 1 1 1'/> |
| 558 | < ROUTE fromNode='clock' fromField='fraction_changed' toNode='invisiable' toField='set_fraction'/> |
| 559 | < ROUTE fromNode='invisiable' fromField='value_changed' toNode='projectiletransform' toField='set_scale'/> |
| 560 | < ROUTE fromNode='WeightScript' fromField='CounterWeight' toNode='Mover' toField='set_MassCounterWeight'/> |
| 561 | < ROUTE fromNode='LauncheeScript' fromField='ProjectileWeight' toNode='Mover' toField='set_MassProjectileWeight'/> |
| 562 | < ROUTE fromNode='clock' fromField='fraction_changed' toNode='Mover' toField='set_fraction'/> |
| 563 | < ROUTE fromNode='Mover' fromField='value_changed' toNode='ProjectileTransform' toField='set_translation'/> |
| 564 | < ROUTE fromNode='Mover' fromField='transparent' toNode='ProjectileTransform' toField='set_scale'/> |
| 565 | < ROUTE fromNode='Launch' fromField='touchTime' toNode='clock' toField='set_startTime'/> |
| 566 | < ROUTE fromNode='Launch' fromField='isActive' toNode='PigdogMonkScript' toField='set_boolean'/> |
| 567 | < ROUTE fromNode='Launch' fromField='touchTime' toNode='PigDogSound' toField='set_startTime'/> |
| 568 | < ROUTE fromNode='Launch' fromField='touchTime' toNode='MonkSound' toField='set_startTime'/> |
| 569 | < ROUTE fromNode='PigdogMonkScript' fromField='whichchoice' toNode='PigdogMonk' toField='whichChoice'/> |
| 570 | < ROUTE fromNode='LauncheeChoice' fromField='touchTime' toNode='HolyHandGrenadeSound' toField='set_startTime'/> |
| 571 | < ROUTE fromNode='LauncheeChoice' fromField='touchTime' toNode='CowSound' toField='set_startTime'/> |
| 572 | < ROUTE fromNode='LauncheeChoice' fromField='touchTime' toNode='HamsterSound' toField='set_startTime'/> |
| 573 | < ROUTE fromNode='LauncheeChoice' fromField='isActive' toNode='LauncheeScript' toField='set_boolean'/> |
| 574 | < ROUTE fromNode='LauncheeScript' fromField='whichchoice' toNode='projectile' toField='whichChoice'/> |
| 575 | < ROUTE fromNode='LauncheeScript' fromField='whichchoice' toNode='projectilename' toField='whichChoice'/> |
| 576 | < ROUTE fromNode='weightselector' fromField='isActive' toNode='WeightScript' toField='set_boolean'/> |
| 577 | < ROUTE fromNode='WeightScript' fromField='whichchoice' toNode='Weight' toField='whichChoice'/> |
| 578 | < ROUTE fromNode='clock' fromField='fraction_changed' toNode='flingerangles' toField='set_fraction'/> |
| 579 | < ROUTE fromNode='flingerangles' fromField='value_changed' toNode='flinger' toField='set_rotation'/> |
| 580 | < ROUTE fromNode='clock' fromField='fraction_changed' toNode='verticalweightpath' toField='set_fraction'/> |
| 581 | < ROUTE fromNode='verticalweightpath' fromField='value_changed' toNode='verticalweight' toField='set_translation'/> |
| 582 | < ROUTE fromNode='clock' fromField='fraction_changed' toNode='pinpath' toField='set_fraction'/> |
| 583 | < ROUTE fromNode='pinpath' fromField='value_changed' toNode='Pin' toField='set_translation'/> |
| 584 | </Scene> |
| 585 | </X3D> |
Event Graph ROUTE Table entries with 26 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.
|
LauncheeChoice
TouchSensor touchTime SFTime |
HolyHandGrenadeSound
AudioClip set_startTime SFTime |
|||||||||
|
LauncheeChoice
TouchSensor touchTime SFTime |
CowSound
AudioClip set_startTime SFTime |
|||||||||
|
LauncheeChoice
TouchSensor touchTime SFTime |
HamsterSound
AudioClip set_startTime SFTime |
|||||||||
|
LauncheeChoice
TouchSensor isActive SFBool |
LauncheeScript
Script set_boolean SFBool |
then
|
LauncheeScript
Script ProjectileWeight SFFloat |
Mover
Script set_MassProjectileWeight SFFloat |
then
|
Mover
Script transparent SFVec3f |
ProjectileTransform
Transform set_scale SFVec3f |
|||
|
then
|
Mover
Script value_changed SFVec3f |
ProjectileTransform
Transform set_translation SFVec3f |
||||||||
|
then
|
LauncheeScript
Script whichchoice SFInt32 |
projectile
Switch whichChoice SFInt32 |
||||||||
|
then
|
LauncheeScript
Script whichchoice SFInt32 |
projectilename
Switch whichChoice SFInt32 |
||||||||
|
weightselector
TouchSensor isActive SFBool |
WeightScript
Script set_boolean SFBool |
then
|
WeightScript
Script CounterWeight SFFloat |
Mover
Script set_MassCounterWeight SFFloat |
then
|
Mover
Script transparent SFVec3f |
ProjectileTransform
Transform set_scale SFVec3f |
|||
|
then
|
Mover
Script value_changed SFVec3f |
ProjectileTransform
Transform set_translation SFVec3f |
||||||||
|
then
|
WeightScript
Script whichchoice SFInt32 |
Weight
Switch whichChoice SFInt32 |
||||||||
|
Mover
Script value_changed SFVec3f |
ProjectileTransform
Transform set_translation SFVec3f |
|
|
Mover
Script transparent SFVec3f |
ProjectileTransform
Transform set_scale SFVec3f |
|
WeightScript
Script CounterWeight SFFloat |
Mover
Script set_MassCounterWeight SFFloat |
then
|
Mover
Script transparent SFVec3f |
ProjectileTransform
Transform set_scale SFVec3f |
||
|
then
|
Mover
Script value_changed SFVec3f |
ProjectileTransform
Transform set_translation SFVec3f |
||||
|
WeightScript
Script whichchoice SFInt32 |
Weight
Switch whichChoice SFInt32 |
|||||
<!--
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)
-->
<!--
For additional help information about X3D scenes, please see X3D Tooltips, X3D Resources, and X3D Scene Authoring Hints.
-->