Controlling navigation
playyard.wrl
#VRML V2.0 utf8
#
# playyard.wrl
# A playyard to demonstrate NavigationInfo
# by John L. Moreland
#
# This world illustrates the use of a NavigationInfo node to set
# the size of the user's avatar (width, height, stepsize). The
# playyard contains several obstacles, some of which the users
# can get past and others they can't, all because of the size of
# the avatar.
#
WorldInfo {
title "Playyard"
info [ "Copyright (c) 1998, John L. Moreland" ]
}
NavigationInfo {
avatarSize [ 0.25, 1.6, 0.6 ]
type [ "WALK", "ANY" ]
headlight FALSE
speed 2.0
}
# Sky & Grass
Background {
skyColor [
0.0 0.2 0.7,
0.0 0.5 1.0,
1.0 1.0 1.0
]
skyAngle [ 1.309, 1.571 ]
groundColor [
0.0 0.1 0.0,
0.0 0.2 0.0,
0.2 0.5 0.2,
]
groundAngle [ 1.309, 1.571 ]
}
# Lights
DirectionalLight {
ambientIntensity 0.5
direction -0.5 -1.0 -0.5
}
# Viewpoints
Viewpoint {
description "Away"
position 0.0 5.5 9.0
orientation 1.0 0.0 0.0 -0.57
}
Viewpoint {
description "Monkey Bars - End"
position -4.0 1.6 4.0
}
Viewpoint {
description "Monkey Bars - Side"
position 0.0 1.6 0.0
orientation 0.0 1.0 0.0 1.57
}
Viewpoint {
description "Chin-Up Bar - Short"
position -1.0 1.6 -2.0
orientation 1 0 0 -0.57
}
Viewpoint {
description "Chin-Up Bar - Tall"
position 1.0 1.6 0.0
}
Viewpoint {
description "Slide - Ladder"
position 4.0 1.6 4.0
orientation 1.0 0.0 0.0 -0.57
}
Viewpoint {
description "Slide - Shoot"
position 4.0 1.6 -4.0
orientation 0.0 1.0 0.5 3.14159
}
# Ground
Shape {
appearance Appearance {
material Material {
# diffuseColor 1.0 0.5 0.3
}
texture ImageTexture {
url "sand.jpg"
}
textureTransform TextureTransform {
scale 16.0 16.0
}
}
geometry Box {
size 10.0 0.02 10.0
}
}
# Trees
# Tree (Rear)
Transform {
translation 2.0 0.0 -10.0
children [
DEF Palm Billboard {
children [
# Tree
Shape {
appearance Appearance {
material NULL # emissive texturing
texture ImageTexture { url "palm.png" }
}
geometry IndexedFaceSet {
coord Coordinate {
point [
-0.83 0.0 0.0,
0.83 0.0 0.0,
0.83 3.75 0.0,
-0.83 3.75 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
}
}
# Tree shadow
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 [
-1.0 0.02 1.0,
1.0 0.02 1.0,
1.0 0.02 -1.0,
-1.0 0.02 -1.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
}
}
]
}
]
}
# Tree (left)
Transform {
translation -6.0 0.0 -1.0
children USE Palm
}
# Storm Fence
Group {
children [
DEF Fence Transform {
translation 0.0 0.0 -5.0
children [
Shape {
appearance Appearance {
material Material { }
texture ImageTexture {
url "grill.png"
}
textureTransform TextureTransform {
rotation 0.7853981750
scale 17.0 17.0
center 0.5 0.5
}
}
geometry IndexedFaceSet {
solid FALSE
coord Coordinate {
point [
# Right 5
4.0 0.0 0.0,
5.0 0.0 0.0,
5.0 1.0 0.0,
4.0 1.0 0.0,
# Right 4
3.0 0.0 0.0,
4.0 0.0 0.0,
4.0 1.0 0.0,
3.0 1.0 0.0,
# Right 3
2.0 0.0 0.0,
3.0 0.0 0.0,
3.0 1.0 0.0,
2.0 1.0 0.0,
# Right 2
1.0 0.0 0.0,
2.0 0.0 0.0,
2.0 1.0 0.0,
1.0 1.0 0.0,
# Right 1
0.0 0.0 0.0,
1.0 0.0 0.0,
1.0 1.0 0.0,
0.0 1.0 0.0,
# Left 1
-1.0 0.0 0.0,
0.0 0.0 0.0,
0.0 1.0 0.0,
-1.0 1.0 0.0,
# Left 2
-2.0 0.0 0.0,
-1.0 0.0 0.0,
-1.0 1.0 0.0,
-2.0 1.0 0.0,
# Left 3
-3.0 0.0 0.0,
-2.0 0.0 0.0,
-2.0 1.0 0.0,
-3.0 1.0 0.0,
# Left 4
-4.0 0.0 0.0,
-3.0 0.0 0.0,
-3.0 1.0 0.0,
-4.0 1.0 0.0,
# Left 5
-5.0 0.0 0.0,
-4.0 0.0 0.0,
-4.0 1.0 0.0,
-5.0 1.0 0.0,
]
}
coordIndex [
0, 1, 2, 3, -1
4, 5, 6, 7, -1
8, 9, 10, 11, -1
12, 13, 14, 15, -1
16, 17, 18, 19, -1
20, 21, 22, 23, -1
24, 25, 26, 27, -1
28, 29, 30, 31, -1
32, 33, 34, 35, -1
36, 37, 38, 39, -1
]
texCoord TextureCoordinate {
point [
0.0 0.0, 1.0 0.0,
1.0 1.0, 0.0 1.0,
]
}
texCoordIndex [
0, 1, 2, 3, -1,
0, 1, 2, 3, -1,
0, 1, 2, 3, -1,
0, 1, 2, 3, -1,
0, 1, 2, 3, -1,
0, 1, 2, 3, -1,
0, 1, 2, 3, -1,
0, 1, 2, 3, -1,
0, 1, 2, 3, -1,
0, 1, 2, 3, -1,
]
# size 10.0 0.5 0.05
}
}
# Post 1
Transform {
translation 0.0 0.5 0.05
children [
DEF Post Shape {
appearance DEF Galvanized Appearance {
material Material {
ambientIntensity 0.3
diffuseColor 0.3 0.3 0.3
specularColor 0.7 0.7 0.8
shininess 0.1
}
}
geometry Cylinder {
height 1.0
radius 0.05
}
}
]
}
# Post 2
Transform {
translation 4.95 0.5 0.05
children USE Post
}
]
}
Transform {
rotation 0 1 0 1.57
children USE Fence
}
Transform {
rotation 0 1 0 3.14159
children USE Fence
}
Transform {
rotation 0 1 0 -1.57
children USE Fence
}
]
}
# Monkey Bars (demonstrates width [radius])
Transform {
translation -4.0 0.0 0.0
children [
# Left Rear Post
Transform {
translation -0.3 1.0 -2.0
children [
DEF Lumber Shape {
appearance DEF Wood Appearance {
material Material {
diffuseColor 0.8 0.6 0.4
}
texture ImageTexture {
url "wood.jpg"
}
}
geometry Box {
size 0.1 2.0 0.1
}
}
]
}
# Right Rear Post
Transform {
translation 0.3 1.0 -2.0
children USE Lumber
}
# Left Front Post
Transform {
translation -0.3 1.0 2.0
children USE Lumber
}
# Right Front Post
Transform {
translation 0.3 1.0 2.0
children USE Lumber
}
# Rails & Rungs (Ladder)
Transform {
translation 0.0 1.8 0.0
rotation 1.0 0.0 0.0 1.57
children [
DEF Ladder Group {
children [
# Left Rail
Transform {
translation -0.3 0.0 0.0
children [
DEF Pole Shape {
appearance USE Galvanized
geometry Cylinder {
height 4.0
radius 0.025
}
}
]
}
# Right Rail
Transform {
translation 0.3 0.0 0.0
children USE Pole
}
# Rung 0
Transform {
rotation 0.0 0.0 1.0 1.57
scale 1.0 0.15 1.0
children USE Pole
}
# Rung +
Transform {
translation 0.0 0.5 0.0
rotation 0.0 0.0 1.0 1.57
scale 1.0 0.15 1.0
children USE Pole
}
# Rung -
Transform {
translation 0.0 -0.5 0.0
rotation 0.0 0.0 1.0 1.57
scale 1.0 0.15 1.0
children USE Pole
}
# Rung +
Transform {
translation 0.0 1.0 0.0
rotation 0.0 0.0 1.0 1.57
scale 1.0 0.15 1.0
children USE Pole
}
# Rung -
Transform {
translation 0.0 -1.0 0.0
rotation 0.0 0.0 1.0 1.57
scale 1.0 0.15 1.0
children USE Pole
}
# Rung +
Transform {
translation 0.0 1.5 0.0
rotation 0.0 0.0 1.0 1.57
scale 1.0 0.15 1.0
children USE Pole
}
# Rung -
Transform {
translation 0.0 -1.5 0.0
rotation 0.0 0.0 1.0 1.57
scale 1.0 0.15 1.0
children USE Pole
}
]
}
]
}
# Monkey bars shadow
Shape {
appearance Appearance {
material Material {
diffuseColor 0.0 0.0 0.0
transparency 0.5
}
texture ImageTexture { url "ladrshad.png" }
}
geometry IndexedFaceSet {
coord Coordinate {
point [
-0.3 0.02 2.0,
0.3 0.02 2.0,
0.3 0.02 -2.0,
-0.3 0.02 -2.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
}
}
]
}
# Chin-Up Bars (demonstrates viewing height)
Transform {
translation 0.0 0.0 -4.0
children [
# Left Post
Transform {
translation -2.0 0.5 0.0
scale 1.0 0.5 1.0
children USE Lumber
}
# Middle Post
Transform {
translation 0.0 1.0 0.0
children USE Lumber
}
# Right Post
Transform {
translation 2.0 1.0 0.0
children USE Lumber
}
# Left Bar
Transform {
translation -1.0 0.8 0.0
rotation 0 0 1 1.57
scale 1.0 0.5 1.0
children USE Pole
}
# Right Bar
Transform {
translation 1.0 1.8 0.0
rotation 0 0 1 1.57
scale 1.0 0.5 1.0
children USE Pole
}
# Chin-Up Bars shadow
Shape {
appearance Appearance {
material Material {
diffuseColor 0.0 0.0 0.0
transparency 0.5
}
}
geometry IndexedFaceSet {
coord Coordinate {
point [
-2.0 0.02 0.05,
2.0 0.02 0.05,
2.0 0.02 -0.05,
-2.0 0.02 -0.05,
]
}
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
}
}
]
}
# Slide (demonstrates step size)
Transform {
translation 4.0 0.0 0.0
children [
# Supports
Transform {
translation -0.3 1.5 0.0
scale 1.0 1.5 1.0
children USE Lumber
}
Transform {
translation 0.3 1.5 0.0
scale 1.0 1.5 1.0
children USE Lumber
}
# Ladder
Transform {
translation 0.0 1.4 1.4
children [
Transform {
rotation 1.0 0.0 0.0 -0.7853975
children [
USE Ladder
]
}
]
}
# Slide
Transform {
translation 0.0 2.8 0.0
children [
Shape {
appearance USE Galvanized
geometry Extrusion {
beginCap FALSE
endCap FALSE
solid FALSE
crossSection [
-0.05 0.3,
0.05 0.3,
0.05 -0.3,
-0.05 -0.3,
]
spine [
0.0 0.0 0.0,
0.0 -2.1 -3.0,
0.0 -2.1 -3.5,
]
}
}
]
}
# Slide Bottom Support
Transform {
translation 0.3 0.35 -3.5
scale 1.0 0.35 1.0
children USE Lumber
}
# Slide Bottom Support
Transform {
translation -0.3 0.35 -3.5
scale 1.0 0.35 1.0
children USE Lumber
}
# Slide shadow
Shape {
appearance Appearance {
material Material {
diffuseColor 0.0 0.0 0.0
transparency 0.5
}
}
geometry IndexedFaceSet {
coord Coordinate {
point [
-0.3 0.02 0.0,
0.3 0.02 0.0,
0.3 0.02 -3.5,
-0.3 0.02 -3.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
}
}
# Ladder shadow
Shape {
appearance Appearance {
material Material {
diffuseColor 0.0 0.0 0.0
transparency 0.5
}
texture ImageTexture { url "ladrshad.png" }
}
geometry IndexedFaceSet {
coord Coordinate {
point [
-0.3 0.02 2.8,
0.3 0.02 2.8,
0.3 0.02 0.0,
-0.3 0.02 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
}
}
]
}
# Swings (?)