Indice Generale Struttura Gerarchica


"Viaggio nel Sistema Solare"

SOLE.WRL
Il file SOLE.WRL definisce la struttura gerarchica del Sole all'interno del sistema planetario. Prima di definirne geometricamente le dimensioni e gli attributi di texture mapping, vengono specificati quattro punti luce come PointLight per la simulazione dell'emissivita' luminosa della stella.
L'asse di rotazione contiene due TouchSensor abbinati ai poli dell'asse: il sensore del polo Nord, una volta abilitato, genera degli eventi responsabili della visualizzazione di informazioni astronomiche della stella nonche' dell'avvio di un file sonoro contenente altre caratteristiche della stessa. Il sensore del polo Sud e' responsabile dell'attivazione o disattivazione di uno Script Java, il cui compito e' quello di far eseguire il bytecode del file VIAGGIO.JAVA a cui si rimanda. Questo programma Java simula un viaggio interplanetario facendo variare il punto di vista dell'esploratore virtuale tramite modifiche del nodo Viewpoint come se si trovasse a bordo di una navicella spaziale orbitante lungo una traiettoria a forma di spirale, facendo in modo che l'osservatore, durante il tragitto eseguito, si trovi a passare vicino ad ogni pianeta in modo da poterne osservare le fattezze ed i movimenti, essendo con questi anche in grado di interagire.
La rotazione attorno al proprio asse viene simulata per mezzo del nodo OrientationInterpolator al quale vengono forniti tramite la dichiarazione di ROUTE degli eventi generati dal nodo TimeSensor preventivamente programmato, come ad esempio il set_rotation.

#VRML V2.0 utf8

#File SOLE.WRL

NavigationInfo {
  headlight FALSE
  speed 1
  type [ "WALK" ]
}

DEF SoleLight Group {
  children [
    PointLight {
      location 1000 0 0
      radius 100
      intensity 1
    },
    PointLight {
      location -1000 0 0
      radius 100
      intensity 1
    },
    PointLight {
      location 0 0 1000
      radius 100
      intensity 1
    },
    PointLight {
      location 0 0 0
      radius 100
      intensity 1
    }
  ]
}

DEF Sole Transform {
  children [
    Shape {
      appearance Appearance {
        material Material {
          diffuseColor  0 0 0
          emissiveColor 1 1 1
        }
        texture DEF SoleTexture ImageTexture {
          url "..\..\images\sole.jpg"
        }
        textureTransform TextureTransform {
          scale 1 1
        }
      }
      geometry Sphere {
        radius 895.8
      }
    },
    Shape {
      appearance Sony_Appearance {
        description "SOLE"
        material Material {
          diffuseColor  0 0 0
          emissiveColor 1 1 1
          transparency  0.5
        }
        texture USE SoleTexture
        textureTransform TextureTransform {
          scale 1 1
        }
      }
      geometry Sphere {
        radius 1100
      }
    }
  ]
}

DEF AsseSole Transform {
  scale    1000 1000 1000
  rotation 0 0 1  0.12
  children [
    Shape {
      appearance Appearance {
        material Material {
          diffuseColor 1 1 1
        }
      }
      geometry Cylinder {
        height 2.4
        radius 0.1
      }
    }
    DEF SolePoloNord Transform {
      translation 0 1.45 0
      children [
        DEF SoleNordSensor TouchSensor {}
        Shape {
          appearance Sony_Appearance {
            description "Info"
            material Material {
              diffuseColor  1 1 1
              emissiveColor 0 0 1
            }
          }
          geometry Cone {
            bottomRadius 0.1
            height       0.5
          }
        }
        DEF SoleAudio Transform {
          children [
            DEF SoleNordSound Sound {
              source DEF SoleNordClip AudioClip {
                description "SOLE   Diametro: 1.391.944 Km   Periodo di rotazione: 25 giorni   Inclinazione sul piano dell'eclittica: 7ø11'"
                url "..\..\sounds\sole.wav"
              }
            }
          ]
        }
      ]
    }
    DEF SolePoloSud Transform {
      rotation    0 0 1  3.14
      translation 0 -1.45 0
      children [
        DEF SoleSudSensor TouchSensor {}
        Shape {
          appearance Sony_Appearance {
            description "Start/Stop Viaggio planetario"
            material Material {
              diffuseColor  1 1 1
              emissiveColor 1 0 0
            }
          }
          geometry Cone {
            bottomRadius 0.1
            height       0.5
          }
        }
      ]
    }
  ]
}

DEF SoleTime TimeSensor {
  cycleInterval 250
  loop          TRUE
  stopTime      -1
}

DEF SoleRotation OrientationInterpolator {
  key [0, 0.25, 0.5, 0.75, 1]
  keyValue [
    0.12 0.99 0.0 0.0,
    0.12 0.99 0.0 1.57,
    0.12 0.99 0.0 3.14,
    0.12 0.99 0.0 4.71,
    0.12 0.99 0.0 6.28
  ]
}

DEF ViaggioTransform Transform {
  children [
    Transform {
      translation 0 0 0
      rotation    0 1 0  0
      children [
        DEF ViaggioView Viewpoint {
          position 0 0 0
        }
        DEF AstronautaLight Transform {
          translation 7 7 -45
          children [
            SpotLight {
              direction 0 0 -1
              beamWidth   0.785
              cutOffAngle 0.785
              radius 1
              intensity 1
            }
          ]
        }
        DEF Astronauta Shape {
          appearance Sony_Appearance {
            description "Gianfranco Piazzolla"
            material Material {
            diffuseColor  0.9 0.9 0.9
            emissiveColor 0 0 0
            transparency 0
            }
            texture DEF AstronautaTexture ImageTexture {
              url "..\..\images\anauta.jpg"
            }
            textureTransform TextureTransform {
              scale 1 1
            }
          }
          geometry IndexedFaceSet {
            coord Coordinate {
              point [ 5.0 5.0 -50.0,
                      9.0 5.0 -50.0,
                      9.0 9.0 -50.0,
                      5.0 9.0 -50.0 ]
            }
            solid TRUE          
            coordIndex [ 0, 1, 2, 3, -1 ]
          }
        }
      ]
    }
  ]
}

DEF ViaggioSensor TimeSensor {
  cycleInterval 0.5
  loop          TRUE
}

DEF ViaggioScript Script {
  url "../../scripts/viaggio.class"
  eventIn  SFTime     Move
  eventIn  SFTime     StartStop
  eventOut SFVec3f    ViaggioTranslation
  eventOut SFRotation ViaggioRotation
  eventOut SFBool     ViaggioViewBind
}

ROUTE SoleTime.fraction_changed        TO SoleRotation.set_fraction
ROUTE SoleRotation.value_changed       TO Sole.set_rotation
ROUTE SoleNordSensor.touchTime         TO SoleNordClip.set_startTime
ROUTE SoleSudSensor.touchTime          TO ViaggioScript.StartStop
ROUTE ViaggioScript.ViaggioTranslation TO ViaggioTransform.set_translation
ROUTE ViaggioScript.ViaggioRotation    TO ViaggioTransform.set_rotation
ROUTE ViaggioSensor.cycleTime          TO ViaggioScript.Move
ROUTE ViaggioScript.ViaggioViewBind    TO ViaggioView.set_bind