VRML & Java | |
#VRML V2.0 utf8
#
# Festlegung von 2 Kamerapositionen, zwischen denen der Betrachter wechseln kann.
#
DEF Entry1 Viewpoint {
position 6.0 1.6 8.0
orientation 0.0 1.0 0.0 0.52
description "Viewpoint1"
}
DEF Entry2 Viewpoint {
position -4.0 1.6 6.0
orientation 0.0 1.0 0.0 -0.52
description "Viewpoint2"
}
#
# Über den NavigationInfo-Knoten legt man fest, wie sich der Benutzer in der
# VRML-Welt fortbewegen kann ("WALK", "FLY" .....).
# Das Headlight ist eine Lampe, die über dem Betrachter sitzt und immer in die
# Richtung scheint, in die er schaut. Ist sie ausgeschaltet, so sollten externe
Lichtquellen
# vorhanden sein, da sonst die Welt nicht erleuchtet wird.
#
NavigationInfo {
type [ "WALK", "ANY" ]
headlight FALSE
}
#
# Definition von 2 Lichtqullen
# Das PointLight befindet sich genau oberhalb der Kugeln, während das
# SpotLight den Text anstrahlt.
#
DEF Licht PointLight {
intensity 0.0
#Lichtquelle leuchtet noch nicht
ambientIntensity 0.6
color 0.8 0.8 0.8
location -1 2 0
}
SpotLight {
ambientIntensity 0.3
color 0.5 0.5 0.5
direction -1 -1 -3
location 4 2 3
beamWidth 0.1
cutOffAngle 0.2
intensity 0.8
radius 60
}
#
# Deklaration einer einer äußeren und einer inneren Kugel.
# Die äußere Kugel hat eine feste blaue nicht durchsichtige Oberfläche.
# Die innere Kugel ist nur unwesentlich kleiner und ist mit einer Textur
# überzogen. Die innere Kugel ist zu Beginn nicht sichtbar.
#
Transform {
translation -1 1 0
scale 0.4 0.4 0.4
children [
DEF Verschieben PlaneSensor { }
DEF Kugel Transform {
children [
# Äußere Kugel mit
fester Hülle
Shape {
appearance Appearance {
material DEF Huelle
Material { diffuseColor 0 0 1
transparency 0.0 }
}
geometry Sphere { radius 1.0 }
}
# Innere Kugel mit
Textur
Shape {
appearance Appearance {
material NULL
texture DEF Fire
ImageTexture { url "fire.jpg" }
textureTransform DEF
Moving TextureTransform { }
}
geometry Sphere { radius 0.9 }
}
]
}
]
}
#
# Deklaration eines Text-Knotens
# Durch den Touch-Sensor wird ein Ereignis ausgelöst, wenn der Benutzer
# mit der Maus auf das Textobjekt clickt.
#
DEF Text Transform {
translation 2 1 0
scale 0.4 0.4 0.4
children [
DEF Touched TouchSensor { }
Shape {
appearance Appearance {
material Material { diffuseColor 1 0 0 }
}
geometry Text {
string "Light me"
fontStyle FontStyle {
size 2.0
style "BOLD"
family "SERIF"
justify "MIDDLE"
}
}
}
]
}
#
# Deklaration einer Bodenfläche, die mit einer HolzTextur belegt ist.
#
Shape {
appearance Appearance {
material Material { ambientIntensity 0.1 }
texture ImageTexture { url "wood0.gif" }
}
geometry IndexedFaceSet {
coord Coordinate {
point [
-10 0 10,
10 0 10,
10 0 -10,
-10 0 -10,
]
}
coordIndex [ 0, 1, 2, 3, -1, ]
solid FALSE
}
}
#
# TimeSensor
#
DEF FireTimer TimeSensor {
cycleInterval 4.0
loop FALSE
startTime 0.0
stopTime 1.0
}
#
# Hier werden die Sensoren (Ereigniserzeuger) mit den Knoten verbunden, die auf
# die erzeugten Ereignisse (Events) reagieren sollen.
#
# Wenn der Anwender auf den Text clickt, wird die Zeit dieses Ereignisses
# an den TimeSensor weitergeleitet, der dann Zeitereignisse erzeugt.
ROUTE Touched.touchTime TO FireTimer.set_startTime
# Diese Zeitereignisse werden weitergeleitet
# - Die blaue Kugel wird langsam transparent, so daß die innere Kugel
zum
# Vorschein kommt
ROUTE FireTimer.fraction_changed TO Huelle.set_transparency
# - Die Intensität der Punktlichtquelle wird
langsam erhöht
ROUTE FireTimer.fraction_changed TO Licht.set_intensity
# - Die Textur der inneren Kugel fängt an zu
rotieren
ROUTE FireTimer.fraction_changed TO Moving.set_rotation