Reihenhaus

Zum Erzeugen einer Vielzahl gleichartiger Objekte dient die Kombination DEF/USE. DEF dient dazu ein Objekt zu benennen, benannte Objekte kann man dann mittels USE erneut instanziieren.

Man nehme:

1. Die Komponenten für ein Haus:

Dach

Ein IndexedFaceSet
DEF dach Shape {
  appearance Appearance {
   material Material {
      diffuseColor 1 1 0
   }
  }
  geometry IndexedFaceSet {
    solid FALSE
    coord Coordinate {
      point [
        -1.0 -1.0  1.5,  #0 links unten vorn
         1.0 -1.0  1.5,  #1 rechts unten vorn
         1.0 -1.0 -1.5,  #2 rechts unten hinten
        -1.0 -1.0 -1.5,  #3 links unten hinten
           0  1.0  1.5,  #4  oben vorn
           0  1.0 -1.5   #5  oben hinten

      ]
    }
    coordIndex [
     0, 1, 2, 3, 0, -1, # unteres Quadrat
     0, 4, 5, 3, 0, -1, # linkes Rechteck
     1, 4, 5, 2, 1, -1, # rechtes Rechteck
     0, 1, 4, 0, -1,    # vorderes Dreieck
     3, 2, 5, 3, -1     # hinteres Dreieck
    ]
  }
}

Etage

Ein Quader um zwei Einheiten verschoben, damit das Dach später passt.

DEF etage Transform {
 children [
    Shape{ 
      appearance Appearance { 
        material Material { 
           diffuseColor 0 0.2 0.8
        }
      }
      geometry  Box {
        size 2 2 3 
      }
   }
 ]
 translation 0 -2 0
}

2. Die Kombination der beiden Objekte zu einem Haus:

Haus

Die Kombination der beiden benannten Objekte. Auch dieses Objekt wird benannt.

DEF haus Transform {
  children [
    USE dach
    USE etage
  ]
}

3. Das Ergebnis

Reihenhaus

Vier weitere Instanzen des Objektes Haus, jeweils verschoben gegenüber den bisherigen Objekten

Transform {
  children [
   USE haus
  ]
  translation 2 0 0.5
}

Transform {
  children [
   USE haus
  ]
  translation -2 0 -0.5
}
Transform {
  children [
   USE haus
  ]
  translation 4 0 1
}

Transform {
  children [
   USE haus
  ]
  translation -4 0 -1
}



geschrieben von Uwe Debacher, letzte Änderung am 4.11.2003