Vereinigung, Schnitt, Differenz

So funktioniert Raytracing
<- Basisobjekte
-> Implizit definierte Oberflächen
Allgemeines / Zusammenfassen von Objekten / Vereinigung / Schnitt / Differenz
Allgemeines

Bei diesen drei Objekttypen (auch binäre Operationen genannt) stellt man sich die Objekte nicht nur noch als unendlich dünne Oberflächen vor, sondern als richtig mit Material ausgefüllt. Neben der Schnittpunktberechnung, die die Oberfläche definiert, kommt daher noch eine wichtige weitere Berechnung hinzu: Zu jedem Objekt muss es eine Funktion geben, die angibt, ob irgendein Punkt in dem Objekt drin liegt, oder ob er außerhalb liegt. Ähnlich wie bei der Schnittpunktberechnung habe ich auch hier eine extra Routine, die sich zunächst um die richtige Skalierung, Rotation und Position kümmert, und dann die eigentliche Funktion des Objekts aufruft. Damit wird die Berechnung, ob ein Punkt im Objekt liegt, für alle Objekte so einfach, dass ich auf dieser Seite gar nicht häher darauf eingehe. Für die Kombinationsobjekte selbst kann man sich diese Berechnung auch leicht überlegen. Damit kann man die Kombinationen also beliebig ineinander verschachteln!
Bei der Schnittpunktberechnung von Kombinationsobjekten handelt es sich nun im Wesentlichen darum, aus den Schnittpunkten mit den verschiedenen Objekten den richtigen herauszufinden. Wie man das macht, werde ich im Folgenden beschreiben. Da die beteiligten Objekte verschiedene Farben und Oberflächenbeschaffenheiten haben können, muss das Kombinationsobjekt nach der Schnittpunktberechnung die Eigenschaften des Objektes annehmen, zu dem der Schnittpunkt gehört (will heißen: Wenn eine rote Kugel und ein grüner Würfel kombiniert werden, und der berechnete Schnittpunkt auf dem grünen Würfel liegt, muss das Kombinationsobjekt so tun, als sei es grün).
Damit man besser erkennen kann, was im Inneren von solchen Kombinationen vorgeht, habe ich die Beispielobjekte in diesem Abschnitt transparent gemacht.

[nach oben]
Zusammenfassung
Zusammenfassung von Objekten

Hier passiert noch gar nichts spektakuläres. Bei dieser Zusammenfassung ist das Resultat genau das gleiche, wie wenn man die Objekte alle einzeln definieren würde. Die Schnittpunktberechnung ist dann ebenso einfach: Man muss einfach die Schnittpunkte mit allen Unterobjekten berechnen, und dann den ersten davon herauspicken. Im Beispielbild sieht man auch, dass die beiden Objekte vollständig vorhanden sind. Diese einfache Zusammenfassung ist aber trotzdem nützlich: Man kann sie nämlich als Ganzes verschieben, skalieren und drehen.

[nach oben]
Vereinigung
Vereinigung

Die Vereinigung sieht auf den ersten Blick genau so aus, wie eine einfache Zusammenfassung. Bei genauerem Hinsehen wird man aber bemerken, dass die Objektoberflächen der Unterobjekte nicht im Inneren fortgesetzt werden. Was übrig bleibt, ist nur die "Außenhaut" der einzelnen Objekte, also alle die Punkte, die nicht im Inneren eines der beteiligten Objekte liegen. Damit ist auch klar, wie man die Schnittpunktberechnung machen muss: Suche alle Schnittpunkte mit allen Objekten. Verwirf dabei alle die Schnittpunkte, die im Inneren eines der anderen Objekte liegen. Nimm von den übrigen den nächsten.

[nach oben]
Schnitt
Schnitt

Das Schnittobjekt enthält alle die Punkte, die im Inneren aller beteiligten Objekte liegen (im Sinne der Mengenlehre also die Schnittmenge aller inneren Punkte der Objekte). Die Schnittpunktberechnung geht ähnlich wie bei der Vereinigung: Suche alle Schnittpunkte mit allen Objekten. Verwirf dabei alle die Schnittpunkte, die außerhalb eines der anderen Objekte liegen. Nimm von den übrigen den nächsten.

[nach oben]
Differenz
Differenz

Hierbei schneidet man Objekte aus einem Grundobjekt heraus. Übrig bleiben die Punkte des Grundobjekt, die außerhalb von allen Objekten liegen, die "subtrahiert" werden. Die Schnittpunktberechnung geht dann so: Suche alle Schnittpunkte mit dem Grundobjekt. Verwirf dabei alle die Schnittpunkte, die im Inneren eines der zu subtrahierenden Objekte liegen. Suche dann alle Schnittpunkte mit zu subtrahierenden Objekten; verwirf alle die, die außerhalb vom Grundobjekt liegen. Von all diesen Schnittpunkten nimm den nächsten.

[nach oben]

Copyright (c) 1999-2000 Martin Melcher