#VRML V2.0 utf8
# semplice esempio di utilizzo del comando PROTO: piazza

PROTO Casa [
        exposedField SFColor colore_casa 1 .66 .25
        exposedField SFColor  colore_tetto 1 .25 .25
] {

  # posizionamento della casa
Transform {  
  children [  
# creazione del corpo principale della Casa     
    Shape {
      appearance Appearance {
        material Material {  diffuseColor IS colore_casa }        
      }
      geometry Box { size 20 20 20 }
    }
    Transform {
      translation 0 10 0
      children [
# creazione del tetto della Casa        
    Shape {
          appearance Appearance {
            material Material { diffuseColor IS colore_tetto }
          }
     	  geometry IndexedFaceSet {
     	    coord Coordinate {
              point [
      		     -10 0 10, 10 0 10, 10 0 -10, -10 0 -10, 0 10 0
      	      ]
      	    }
            coordIndex [
       	                0, 3, 2, 1, -1
                        0, 1, 4, -1
                        1, 2, 4, -1
                        2, 3, 4, -1
                        3, 0, 4, -1
            ]
          }
        }
      ]
    }
  ]
 }
} # Fine del comando PROTO

Viewpoint{
  position 130 50 150
  orientation -.25 1 0 .66
  description "Vista principale"
}

# semplice invocazione della prima casa 
   Casa {}
  
# invocazione della seconda casa e modifica della posizione 
# e del colore del corpo
Transform {
  translation 0 0 30
  children [
   Casa { colore_casa 1 .85 .33 }
]
}

# invocazione della terza casa e modifiche di posizione e dimensione y
Transform {
  translation 0 5 60
  scale 1 2 1
   children [
   Casa {}
]
}

# invocazione della quarta casa e modifiche di posizione, dimensione x 
# e del colore del corpo
Transform {
  translation 40 0 0
  scale 2 1 1
   children [
   Casa { colore_casa 1 .9 .75 }
]
}

# invocazione della quinta casa e modifiche della posizione
# e dei colori del corpo e del tetto
Transform {
  translation 80 0 0
  children [
   Casa { colore_casa .75 .9 .75 
          colore_tetto 1 .5 .25
   }
]
}

# invocazione della sesta casa e modifiche di posizione, dimensioni z e y e colore del corpo
Transform {
  translation 80 -5 30
  scale 1 .66 1.5
  children [
   Casa {}
]
}