prev up next

Implementation

In der Vorlesung Computergrafik wurde eine Classe GreyFlatRenderer.java entwickelt, die nach dem Back-Face-Culling und Clipping Flat-Shading durchführt.

In dem Konstruktor von der Classe GreyFlatRenderer.java wird ein eindimensionales Integer-Array (colors)
in einer for-Schleife mit den Grau-Werten (immer gleiches Anteil von Rot, Grün und Blau) gefüllt.

  public GreyFlatRenderer() {

    clipper = new WCClipper();
    bfculler = new BFCuller();
    colors = new int[256];

    for (int i=0; i<256; i++) {
      colors[i]  = 255<<24;
      colors[i] |= i<<16;
      colors[i] |= i<<8;
      colors[i] |= i;
    }
  }

Nach der Triangulisierung werden die Intensität-Werte an den Eckpunkten genommen, gemittelt und und an die Scanline-Methode übergegeben.

  shade(p0,p1,p2, (l0+l1+l2)/3.0f); // l0, l1, l2 Intensität an den Eckpunkten.
  :::
  putScanline(y, xAC, xAB, zAC, zAB, I);    // I für gemittelte Intensität von l0, l1, l2.

In der Scanline-Methode wird der übergegebene Wert mit 256 multipliziert (da der Intensität-Wert zwischen 0 und 1 liegt)
und es wird Pixel mit dem Wert aus dem colors-Array mit dem Ergebnis der Multiplikation als Index gesetzt.

  int col = colors[(int)(I*256)];
  :::
  cgc.setPixelWithZ(x, y, z,  col);


prev up next