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

 

Index