rss
twitter
facebook

Home

Computer Graphics

WorldInfo {
title "Bouncing beachball (JavaScript)"
info [ "Copyright (c) 1997, David R. Nadeau" ]
}

Viewpoint {
position 0.0 0.6 8.0
orientation 1.0 0.0 0.0 0.1
}

NavigationInfo {
type [ "WALK", "ANY" ]
headlight FALSE
speed 2.0
}

DirectionalLight {
ambientIntensity 0.5
direction 0.0 -1.0 -0.5
}

#
# Sky
#
Background {
skyColor [
0.0 0.0 1.0,
0.0 0.5 1.0,
0.7 0.7 1.0,
]
skyAngle [
1.371,
1.571,
]
}



#
# Beach
#
Shape {
appearance Appearance {
material Material { }
texture ImageTexture { url "sand.jpg" }
textureTransform TextureTransform { scale 10.0 10.0 }
}
geometry IndexedFaceSet {
coord Coordinate {
point [
-50.0 -1.0 50.0,
50.0 -1.0 50.0,
50.0 -1.0 -50.0,
-50.0 -1.0 -50.0,
]
}
coordIndex [ 0, 1, 2, 3 ]
solid FALSE
}
}

#
# Palm trees
#
Transform {
translation -3.0 -1.0 -10.0
children [
DEF Palm Group {
children [
# Palm tree - in a billboard so it is never edge-on
Billboard {
children [
Shape {
appearance Appearance {
material NULL # emissive texturing
texture ImageTexture { url "palm.png" }
}
geometry IndexedFaceSet {
coord Coordinate {
point [
-2.5 0.0 0.0,
2.5 0.0 0.0,
2.5 11.25 0.0,
-2.5 11.25 0.0,
]
}
coordIndex [ 0, 1, 2, 3 ]
texCoord TextureCoordinate {
point [
0.0 0.0,
1.0 0.0,
1.0 1.0,
0.0 1.0,
]
}
texCoordIndex [ 0, 1, 2, 3 ]
solid FALSE
}
}
]
}
# Fake tree shadow - a black semi-transparent rectangle with
# a texture map to give it the right shape
Shape {
appearance Appearance {
material Material {
diffuseColor 0.0 0.0 0.0
transparency 0.5
}
texture ImageTexture { url "palmsh.png" }
}
geometry IndexedFaceSet {
coord Coordinate {
point [
-2.5 0.05 2.5,
2.5 0.05 2.5,
2.5 0.05 -2.5,
-2.5 0.05 -2.5,
]
}
coordIndex [ 0, 1, 2, 3 ]
texCoord TextureCoordinate {
point [
0.0 0.0,
1.0 0.0,
1.0 1.0,
0.0 1.0,
]
}
texCoordIndex [ 0, 1, 2, 3 ]
solid FALSE
}
}
]
}
]
}
Transform { translation -5.0 -1.0 -6.0 scale 0.6 0.6 0.6 children USE Palm }
Transform { translation 5.0 -1.0 -9.0 children USE Palm }
Transform { translation 10.0 -1.0 -15.0 children USE Palm }


#
# Bouncing beach ball
#
DEF Ball Transform {
# animated translation
children [
Shape {
appearance Appearance {
material Material {
ambientIntensity 0.5
diffuseColor 1.0 1.0 1.0
specularColor 0.7 0.7 0.7
shininess 0.4
}
texture ImageTexture { url "beach.jpg" }
textureTransform TextureTransform { scale 2.0 1.0 }
}
geometry Sphere { }
}
]
}

DEF ShadowBall Transform {
# animated translation
scale 1 0 1
translation 0 -0.9 0
children [
Shape {
appearance Appearance {
material Material {
diffuseColor 0.0 0.0 0.0
transparency 0
}
}
geometry Sphere { }
}
]
}

DEF Clock TimeSensor {
cycleInterval 2.0
startTime 1.0
stopTime 0.0
loop TRUE
}

DEF Bouncer Script {
field SFFloat altura 3.0
eventIn SFFloat set_fraction
eventOut SFVec3f value_changed
eventOut SFVec3f shadowScale_changed

# change 'vrmlscript' to 'javascript' for newer browsers
url "vrmlscript:
function set_fraction( frac, tm ) {
y = 4.0 * altura * frac * (1.0 - frac);
value_changed[0] = 0.0;
value_changed[1] = y;
value_changed[2] = 0.0;

xzscale = 1.0 - 0.5 * y / altura;
shadowScale_changed[0] = xzscale;
shadowScale_changed[1] = 0.0;
shadowScale_changed[2] = xzscale;

}"
}

ROUTE Clock.fraction_changed TO Bouncer.set_fraction
ROUTE Bouncer.value_changed TO Ball.set_translation
ROUTE Bouncer.shadowScale_changed TO ShadowBall.set_scale

0 comentários:

 
Powered by Blogger