This is documentation for Mathematica 4, which was
based on an earlier version of the Wolfram Language.
View current documentation (Version 11.1)

 Documentation /  Mathematica /  Das Mathematica Buch /  Die Prinzipien von Mathematica /  Die Struktur von Grafik und Ton /

Zeichnen dreidimensionaler OberflächenBeschriftung dreidimensionaler Grafik

2.9.12 Beleuchtung und Oberflächeneigenschaften

Unter der Vorgabe-Optionseinstellung Lighting -> True setzt Mathematica simulierte Beleuchtung ein, um festzulegen, wie Polygone in dreidimensionaler Grafik eingefärbt werden.

In Mathematica können Sie zwei Komponenten der Beleuchtung eines Objekts spezifizieren. Die erste ist eine „Umgebungsbeleuchtung", die eine gleichförmige Schattierung auf dem gesamten Objekt erzeugt. Die zweite ist Licht von einer Anzahl Punktquellen, wobei jede von ihnen eine bestimmte Position und Farbe hat. Mathematica addiert das Licht aller diesen Quellen und legt so die Gesamtbeleuchtung eines bestimmten Polygons fest.

Optionen für simulierte Beleuchtung

Die Vorgabe-Beleuchtung, die Mathematica benutzt, besteht aus drei Punktlichtquellen ohne Streulichtkomponente. Die Lichtquellen sind rot, grün und blau gefärbt und befinden sich unter einem Winkel von rechts vom Objekt.

Hier ist eine Oberfläche, die unter Benutzung des Vorgabesatzes an Lichtquellen mittels simulierter Beleuchtung schattiert wurde.

In[1]:= Plot3D[Sin[x + Sin[y]], {x, -3, 3}, {y, -3, 3},
Lighting -> True]

Out[1]=

So sieht es aus, wenn Umgebungslicht hinzugefügt wird und alle Punktlichtquellen entfernt werden.

In[2]:= Show[%, AmbientLight -> GrayLevel[0.5],
LightSources -> {}]

Out[2]=

Dies fügt eine einzelne Punktlichtquelle auf der linken Bildseite hinzu.

In[3]:= Show[%,
LightSources -> {{{-1, 0, 0.5}, GrayLevel[0.5]}}]

Out[3]=

In Mathematica werden die Positionen der Lichtquellen im Anzeige-Koordinatensystem angegeben. Die - und -Koordinaten befinden sich auf der Ebene der endgültigen Darstellung und die -Koordinate kommt aus dieser Ebene hinaus. Die Benutzung dieses Koordinatensystems stellt sicher, daß die Lichtquellen bezüglich des Betrachters fixiert bleiben, selbst dann, wenn sich die relativen Positionen des Betrachters und des Objektes ändern.

Am Ende der Grafikgalerie in diesem Buch werden einige Beispiele für Ergebnisse gezeigt, die unter mehreren verschiedenen Anordnungen von Lichtquellen erhalten wurden.

Obwohl der Augpunkt geändert wurde, bleibt die Lichtquelle auf der linken Bildseite fixiert.

In[4]:= Show[%, ViewPoint -> {2, 2, 6}]

Out[4]=

Die wahrgenommene Farbe eines Polygons hängt nicht nur von dem auf das Polygon fallenden Licht ab, sondern auch davon, wie das Polygon das Licht reflektiert. Mit der Grafikanweisung SurfaceColor können Sie spezifizieren, wie Polygone das Licht reflektieren.

Wenn Sie keine expliziten SurfaceColor-Anweisungen benutzen, nimmt Mathematica im Grunde an, daß alle Polygone mattweiße Oberflächen haben. So reflektieren die Polygone Licht jeder auf sie einfallenden Farbe gleichmäßig in alle Richtungen. Dies ist ein geeignetes Modell für Materialien wie unbeschichtetes weißes Papier.

Mit SurfaceColor können Sie jedoch kompliziertere Modelle spezifizieren. Die Grundidee besteht darin, zwei Arten der Reflexion zu unterscheiden: diffuse und spiegelnde.

Bei diffuser Reflexion wird das auf eine Oberfläche einfallende Licht gleichmäßig in alle Richtungen gestreut. Bei dieser Reflexion hat eine Oberfläche eine „trübe" oder „matte" Erscheinung. Diffuse Reflektoren gehorchen dem Lambertschen Gesetz der Lichtreflexion, nach dem die Intensität des reflektierten Lichtes gleich dem -fachen der Intensität des einfallenden Lichtes ist, wobei der Winkel zwischen dem einfallenden Licht und dem Oberflächennormalenvektor ist. Beachten Sie, daß im Falle kein Licht reflektiert wird.

Bei spiegelnder Reflexion reflektiert eine Oberfläche Licht wie ein Spiegel. Folglich hat die Oberfläche eine „glänzende" oder „polierte" Erscheinung. Bei einem perfekten Spiegel wird das unter einem bestimmten Winkel einfallende Licht unter genau dem gleichen Winkel reflektiert. Die meisten Materialien streuen Licht jedoch zu einem gewissen Teil und führen so zu reflektiertem Licht, das über einen Bereich von Winkeln verteilt ist. In Mathematica können Sie angeben, wie breitgefächert die Verteilung ist, indem Sie einen Spiegelexponenten angeben, der entsprechend dem Phong-Beleuchtungsmodell definiert ist. Bei einem Spiegelexponenten wird angenommen, daß sich bei einem Winkel zur Spiegelreflexionsrichtung eine Lichtintensität von ergibt. Für verhält sich deshalb die Oberfläche wie ein perfekter Spiegel. So wie kleiner wird, wird die Oberfläche jedoch weniger „glänzend", und bei ist die Oberfläche ein vollständig diffuser Reflektor. Typische Werte von für reale Materialien reichen von ungefähr 1 bis zu einige Hundert.

Die meisten echten Materialien zeigen eine Mischung von diffuser und spiegelnder Reflexion. Zusätzlich verhalten sie sich so, als wenn sie eine bestimmte Eigenfarbe hätten. Ist das einfallende Licht weiß, so hat das reflektierte Licht die Farbe des Materials. Wenn das einfallende Licht nicht weiß ist, ist jede Farbkomponente des reflektierten Lichtes ein Produkt der entsprechenden Komponenten des einfallenden Lichtes und der Eigenfarbe des Materials.

In Mathematica können Sie Reflexionseigenschaften spezifizieren, indem Sie eine Eigenfarbe verbunden mit diffuser Reflexion und eine andere in Verbindung mit spiegelnder Reflexion angeben. Um keine Reflexion einer bestimmten Art zu erhalten, müssen Sie die entsprechende Eigenfarbe als schwarz oder GrayLevel[0] angeben. Bei Materialien, die im Grunde „weiß" sind, können Sie die Eigenfarben in der Form GrayLevel[a] angeben, wobei a die Rückstrahlung oder die Albedo der Oberfläche ist.

Am Ende der Grafikgalerie in diesem Buch werden Beispiele für Ergebnisse gezeigt, die mit verschiedenen Reflexionsparametern erhalten wurden.

Spezifizierung der Oberflächeneigenschaften von beleuchteten Polygonen

Dies lädt ein Paket, das verschiedene Grafik-Objekte enthält.

In[5]:= <<Graphics`Shapes`

Sphere erzeugt ein Grafik-Objekt, das eine Kugel repräsentiert.

In[6]:= s = Sphere[ ] ;

Dies zeigt die Kugel mit der voreingestellten mattweißen Oberfläche.

In[7]:= Show[Graphics3D[s]]

Out[7]=

So erhält die Kugel eine leicht diffuse aber stark spiegelnde Reflexionseigenschaft. Daher hat die Kugel in der Nähe der Lichtquellen ein „spiegelndes Glanzlicht" und ist sonst ziemlich dunkel.

In[8]:= Show[Graphics3D[{
SurfaceColor[GrayLevel[0.2],
GrayLevel[0.8], 5], s}]]

Out[8]=

Wenn Sie Lichtquellen und Oberflächenfarben einsetzen, ist es wichtig, sicherzustellen, daß die gesamte Lichtintensität, die von einem bestimmten Polygon reflektiert wird, nie größer als 1 wird. Sie werden seltsame Effekte erhalten, wenn die Intensität größer als 1 ist.

Zeichnen dreidimensionaler OberflächenBeschriftung dreidimensionaler Grafik