Here we have the addition of some nifty nodes! The first one, the WWWAnchor node, allows you to 'attach' a URL to one of your shapes. When the user clicks on the shape, he or she will be 'transported' to that world. You may specify non-.wrl URL's, but be aware that not every VRML browser will send a non-.wrl file to the HTML browser. For example, below you see that we've attached a URL to the wooden sphere in our world. Clicking on the sphere will send you to Planet 9's Virtual San Francisco (a .wrl file). However, if, say, an .html file is attached to the sphere, some VRML browsers will let the HTML browser handle the file. The syntax for the node is fairly straightforward. Below we see that the name field is where the URL goes, map can be either NONE or POINT. If POINT is used, coordinates of the point on the object the user clicks will be added to the URL in the name field. The syntax for the addition is ?X, Y, Z. The WWWInline node allows you to add other .wrl files into your world. Thus, if you see a model on the Internet that you'd like in your world, specify the URL for the file in the name field. Here we've added a LARGE model of the Enterprise (as seen in Star Trek: The Next Generation) behind our shapes.
#VRML V1.0 ascii
Separator {
PerspectiveCamera {
position 0 30 240
orientation 0 0 -1 0
focalDistance 5
heightAngle .785
} #PerspectiveCamera
SpotLight {
on TRUE
intensity .5
color 1 0 0
location 0 0 120
direction 0 0 -1
} #SpotLight
Info {
string "This is a cool world!!"
} #Info
Material {
diffuseColor 1 0 1
shininess 0.2
transparency 0
} #Material
MaterialBinding {
value DEFAULT
} #MaterialBinding
FontStyle {
size 15
family TYPEWRITER
style NONE
} #FontStyle
AsciiText {
string "This is a cool demo world!"
spacing 1
justification CENTER
width 0
} #AsciiText
Separator {
Translation {
translation 0 15 -500
} #Translation
WWWInline {
name "1701d.wrl"
} #WWWInline
} #Separator
DEF Cone1 Separator {
Translation {
translation 0 30 0
} #Translation
Cone {
parts ALL
bottomRadius 15
height 30
} #Cone
} #Cone1 Separator
DEF Cube1 Separator {
Transform {
rotation 0 1 0 .7
} #Transform
Translation {
translation -45 30 0
} #Translation
Cube {
width 30
height 30
depth 30
} #Cube
} #Cube1 Separator
DEF Cylinder1 Separator {
Translation {
translation 45 30 0
} #Translation
Cylinder {
parts ALL
radius 15
height 30
} #Cylinder
} #Cylinder1 Separator
DEF Sphere1 Separator {
Texture2 {
filename "wood4.jpg"
}
Translation {
translation 0 75 0
} #Translation
WWWAnchor {
name "http://www.planet9.com/worlds/vrsf.wrl"
map NONE
} #WWWAnchor
Sphere {
radius 15
}#Sphere
} #Sphere1 Separator
DEF FaceDiamond Separator {
DEF DiamondCoords Coordinate3 {
point [
0 75 25,
12.5 62.5 12.5,
12.5 62.5 37.5,
-12.5 62.5 37.5,
-12.5 62.5 12.5,
0 50 25,
]
} #DiamondCoords Coordinate3
USE DiamondCoords
IndexedFaceSet {
coordIndex [
0, 1, 2, -1,
0, 1, 4, -1,
0, 4, 3, -1,
0, 3, 2, -1,
5, 1, 2, -1,
5, 1, 4, -1,
5, 4, 3, -1,
5, 3, 2, -1,
]
} #IndexedFaceSet
} #FaceDiamond Separator
DEF LineDiamond Separator {
Translation {
translation 0 75 0
} #Translation
USE DiamondCoords
IndexedLineSet {
coordIndex [
0, 1, 2, -1,
0, 1, 4, -1,
0, 4, 3, -1,
0, 3, 2, -1,
5, 1, 2, -1,
5, 1, 4, -1,
5, 4, 3, -1,
5, 3, 2, -1,
]
} #IndexedLineSet
} #DiamondLine Separator
} #Separator