#VRML V2.0 utf8
#
# castle.wrl
# Fairy-tale castle
# by David R. Nadeau
#
# This world builds a fairy-tale castle atop a green hill with
# a blue sky behind. There are no animations or fun things to
# click on... that's up to you.
#
# This world illustrates how far you can go using the primitive
# geometry nodes: Box, Cone, and Cylinder. An entire fairy-tale
# castle is built by translating and rotating these shapes into
# position.
#
# Things to experiment with...
# Change the color scheme to make the castle an evil lair.
#
# Add texture maps to make the castle walls look like they are built
# from stone.
#
# Make the castle door an anchor. Clicking on the door leads to
# another world describing the castle interior.
#
# Add panorama cloud and mountain textures to the Background node.
#
# In Nintendo 64 style, add platforms that rise and fall and cannons
# that rise up when you approach. You can build these using
# PositionInterpolators and TimeSensors to run the animations,
# and ProximitySensors to trigger the actions.
#
WorldInfo {
title "Fairy-tale Castle"
info [ "copyright (c) 1997, David R. Nadeau" ]
}
Viewpoint {
position 0.0 0.0 10.0
orientation 1.0 0.0 0.0 0.35
description "Entry view"
}
NavigationInfo {
type [ "WALK", "ANY" ]
headlight TRUE
speed 40.0
}
Transform {
translation 0.0 -1.6 0.0
children [
Shape {
appearance Appearance {
material Material {
diffuseColor 0.0 0.0 0.0
emissiveColor 0.0 0.5 0.0
}
}
geometry Box { size 2000.0 0.01 2000.0 }
}
]
}
#
# Castle
#
DEF Castle Transform {
translation 0.0 -1.6 -200.0
children [
# Tower base
Transform {
translation 0.0 20.0 0.0
children Shape {
appearance DEF CastleColor Appearance {
material Material {
diffuseColor 1.0 1.0 1.0
ambientIntensity 0.5
}
}
geometry Cylinder {
radius 50.0
height 40.0
bottom FALSE
}
}
}
# Entryway
Transform {
translation 0.0 0.0 52.0
children [
# Entry block
Transform {
translation 0.0 10.0 0.0
children Shape {
appearance USE CastleColor
geometry Box { size 30.0 20.0 6.0 }
}
}
# Door
Transform {
translation 0.0 5.0 3.0
children Shape {
appearance Appearance {
material Material {
diffuseColor 0.4 0.1 0.0
}
}
geometry Box { size 10.0 10.0 0.5 }
}
}
# Left entry tower
Transform {
translation -15.0 0.0 3.0
children [
# Tower section
DEF EntryTower Transform {
translation 0.0 15.0 0.0
children Shape {
appearance USE CastleColor
geometry Cylinder {
radius 5.0
height 30.0
bottom FALSE
top FALSE
}
}
}
# Roof
DEF EntryRoof Transform {
translation 0.0 40.0 0.0
children Shape {
appearance DEF RoofColor Appearance {
material Material {
diffuseColor 1.0 0.0 0.0
ambientIntensity 0.5
}
}
geometry Cone {
bottomRadius 8.0
height 20.0
}
}
}
]
}
# Right entry tower
Transform {
translation 15.0 0.0 3.0
children [
USE EntryTower
USE EntryRoof
]
}
]
}
# Left tower atop base
Transform {
translation -15.0 40.0 -5.0
children [
# Lower tower section
Transform {
translation 0.0 30.0 0.0
children Shape {
appearance USE CastleColor
geometry Cylinder {
radius 25.0
height 60.0
bottom FALSE
}
}
}
# Upper tower section
Transform {
translation 0.0 100.0 0.0
children Shape {
appearance USE CastleColor
geometry Cylinder {
radius 15.0
height 80.0
bottom FALSE
top FALSE
}
}
}
# Roof
Transform {
translation 0.0 170.0 0.0
children DEF MainRoofCone Shape {
appearance USE RoofColor
geometry Cone {
bottomRadius 23.0
height 60.0
}
}
}
]
}
# Right tower atop base
Transform {
translation 20.0 40.0 15.0
children [
# Tower section
Transform {
translation 0.0 50.0 0.0
children Shape {
appearance USE CastleColor
geometry Cylinder {
radius 15.0
height 100.0
bottom FALSE
top FALSE
}
}
}
# Roof
Transform {
translation 0.0 130.0 0.0
children USE MainRoofCone
}
# Sub-tower
Transform {
translation 0.0 30.0 15.0
children [
# Tower section
DEF SmallSubTower Transform {
translation 0.0 25.0 0.0
children Shape {
appearance USE CastleColor
geometry Cylinder {
radius 5.0
height 30.0
bottom FALSE
top FALSE
}
}
}
# Base cone
DEF SmallSubBase Transform {
translation 0.0 5.0 0.0
rotation 1.0 0.0 0.0 3.14159
children Shape {
appearance USE CastleColor
geometry Cone {
bottomRadius 5.0
height 10.0
bottom FALSE
}
}
}
# Roof
DEF SmallSubRoof Transform {
translation 0.0 50.0 0.0
children Shape {
appearance USE RoofColor
geometry Cone {
bottomRadius 8.0
height 20.0
}
}
}
]
}
]
}
# Right large sub tower
Transform {
translation 50.0 20.0 0.0
children [
# Tower section
DEF LargeSubTower Transform {
translation 0.0 60.0 0.0
children Shape {
appearance USE CastleColor
geometry Cylinder {
radius 10.0
height 80.0
bottom FALSE
top FALSE
}
}
}
# Base cone
DEF LargeSubBase Transform {
translation 0.0 10.0 0.0
rotation 1.0 0.0 0.0 3.14159
children Shape {
appearance USE CastleColor
geometry Cone {
bottomRadius 10.0
height 20.0
bottom FALSE
}
}
}
# Roof
DEF LargeSubRoof Transform {
translation 0.0 120.0 0.0
children Shape {
appearance USE RoofColor
geometry Cone {
bottomRadius 15.0
height 40.0
}
}
}
Transform {
translation 10.0 40.0 0.0
children [
USE SmallSubTower
USE SmallSubBase
USE SmallSubRoof
]
}
]
}
# Left large sub tower
Transform {
translation -35.36 20.0 35.36
children [
USE LargeSubTower
USE LargeSubBase
USE LargeSubRoof
Transform {
translation -7.07 40.0 7.07
children [
USE SmallSubTower
USE SmallSubBase
USE SmallSubRoof
]
}
]
}
# Back large sub tower
Transform {
translation 0.0 20.0 -50.0
children [
USE LargeSubTower
USE LargeSubBase
USE LargeSubRoof
Transform {
translation 0.0 40.0 -10.0
children [
USE SmallSubTower
USE SmallSubBase
USE SmallSubRoof
]
}
]
}
]
}