Silhouette

Aus DGL Wiki
Version vom 6. April 2006, 12:37 Uhr von Flash (Diskussion | Beiträge) (Wie berechne ich Sie?)

Wechseln zu: Navigation, Suche
Hinweis: Dieser Artikel ist noch unvollständig.
(Mehr Informationen/weitere Artikel)

{{{1}}}

Incomplete.jpg

Silhouette

Was ist das?

Die Silhouette ist der Linienzug/die Kante welche die sichtbaren Flächen von den Nichtsichtbaren trennt.

Wie berechne ich Sie?

Ganz einfach. Mit Mathematik!
Wenn man die Silhouette berechnen will, benötigt man folgende Dinge:

  • 2 benachbarte Flächen vom Objekt, bei denen man untersuchen will ob ihre Zwischenkante zur Silhouette gehört.
  • Die Position des Betrachters.
  • Die Position auf die der Betrachter sieht. (Intelligenterweise das Zentrum des Objekts, dessen Silhouette man berechnen will.)
  • Wissen wie man Normalen berechnet.

Und so geht man vor:

  1. Berechnen der Normalen für die Flächen F1 und F2. -> Normalen N1 und N2.
  2. Berechnen des Blickvektors V (Betrachterpos - Blickpunkt).
  3. Berechnen des Winkels zwischen N1 und V. -> Winkel W1.
  4. Berechnen des Winkels zwischen N2 und V. -> Winkel W2.

Wenn nun einer der beiden Winkel W1 oder W2 > 90° und der andere Winkel <= 90° ist, dann ist die Kante zwischen den Flächen F1 und F2 Teil der Silhouette des Körpers.

Außerdem sollten Kanten die nur zu einem Polygon gehören ebenfalls zur Silhouette gezählt werden.


Die GLU bietet die Function gluQuadricDrawStyle welche per GLU_SILHOUETTE die Möglichkeit bietet Silhouetten von Quadriken zu erzeugen. Allerdings unterscheidet sich die Definition von "Silhoute" in der GLU von der obigen. Dort werden alle Coplanaren Flächen miteinadner verbunden. Dies führt z.B. bei Kugeln zu abweichenden, und mitunter unbrauchbaren Silhouetten.

Wo benötige ich Sie?

Die Silhouette wird zum Beispiel bei Schattenberechnungen benötigt. (Volumetrische Stencilschatten)
Hin und wieder möchte man aber auch einfach nur die Silhouette eines Objektes nachzeichnen.