Graphics Reference
In-Depth Information
9.2 Clipping
Bei den Darstellungstransformationen im Kap. 8 wird immer auf eine (virtuelle)
Projektionsebene projiziert, die in beiden Richtungen beliebig groß ist. Jetzt geht
es darum, in das dort berechnete Koordinatengerüst die Facetten „einzuhängen“
und das Bild auf einen vorgegebenen Bereich zuzuschneiden. Dieser Prozess wird
Clipping genannt und betrifft zwei Aspekte:
3D-Clipping zur Modellbegrenzung (im Objektraum) und
2D-Clipping im Darstellungsbereich (im Bildraum).
9.2.1 3D-Clipping zur Modellbegrenzung
Ummöglichst lange von Gerätekoordinaten unabhängig zu bleiben, wird ein zur ak-
tuellen Projektionsebene korrespondierendes Fenster in Weltkoordinaten auf einer
virtuellen Projektionsebene definiert. Der Beobachter steht im Projektionszentrum
und schaut durch dieses Fenster senkrecht auf die Szenerie. Sein Blickfeld ist einer-
seits festgelegt durch die Maße des Fensters und andrerseits durch seinen Abstand
von diesem. Dieser Sichttunnel wird zusätzlich begrenzt durch eine vordere und
hintere Clippingebene. Das so eingeschlossene Volumen wird als ‚Clippingvolu-
men' bezeichnet. Damit ist festgelegt, welche Teile einer 3D-Szenerie (zumindest
teilweise) im Clippingvolumen liegen, und nur diese Teile werden gegebenenfalls
dargestellt. Die Projektionsebene selbst liegt üblicherweise zwischen den beiden
Clippingebenen (Abb. 9.1 ).
Bei der Zentralprojektion ist das Clippingvolumen zwischen hinterer und vor-
derer Clippingebene ein Pyramidenstumpf, bei der Parallelprojektion ein Quader
infolge der parallelen Projektionsstrahlen. Durch Verschieben der beiden Clipping-
ebenen kann das Clippingvolumen verändert werden, d. h., Teile des 3D-Modells
können hinten oder vorne ‚abgeschnitten' werden, die dann von der Projektion aus-
geschlossen sind. Speziell bei der Zentralprojektion ist dies notwendig, da sonst
sehr nahe Objekte andere verdecken würden, oder weit entfernte Objekte so klein
abgebildet werden würden, dass sie in der Bildschirmauflösung verschwinden. Es
muss uns nicht grämen, dass dabei ggfls. schon für die Projektion transformierte
Knoten deaktiviert werden. Deren Transformation ist linear abhängig von ihrer An-
zahl und verbraucht den weitaus kleineren Anteil an Rechenzeit.
Das folgende Unterprogramm erledigt diese Aufgabe. Ein Teil der Variablen
ist von den im Kap. 6 verwendeten Datenstrukturen bekannt, hier der Array
Knoten() im ersten, und Facette() im zweiten Programmteil. Die das Clip-
pingvolumen begrenzenden Variablen H max , H min usw. sind in einem separaten
Modul deklariert.
Search WWH ::




Custom Search