3D - Licht und Schatten
#1
3D - Licht und Schattenvon Bernd Schiedl

Licht und Schatten sind die Grundessenz jeder 3D-Szene. Ohne Licht bleibt alles im Dunkeln und die richtige Ausleuchtung entscheidet oft über die Qualität des gesamten Bilds. Durch den Schatten entfaltet sich die räumliche Tiefe - fehlt er, wirkt das Bild sehr unnatürlich.

Dieser Teil der Reihe 3D Know how beschäftigt sich mit den einzelnen Lichtquellen- und Schattentypen. Durch geschickten Einsatz spezieller Lichtquellen kann sich jeder Webkünstler viel Arbeit und auch Rechenzeit sparen. Auf die richtige Ausleuchtung einer Szene werde ich in einem späteren Teil eingehen.



Zu den Lichtquellen ist grundsätzlich zu sagen, dass jedes moderne Raytracing-Programm die folgenden Lichtquellentypen vorweisen kann. Bei manchen Softwarepaketen fehlt der eine oder andere Typ, doch dies ist in der Regel nicht weiter schlimm. Alle Lichtquellen sind prinzipiell immer unsichtbar und sie strahlen lediglich unsichtbares Licht ab. Erst wenn dieses ausgesandte Licht auf ein Objekt trifft, erleuchtet es die Oberfläche. Daraus folgt, dass Birnen, Scheinwerfer, Flammen und Ähnliches immer gesondert vom Benutzer erstellt werden müssen.

In der Realität entsteht durch jedes Licht auch Schatten, doch dies ist in der Computergrafik nicht der Fall. Eine Lichtquelle erzeugt nicht zwingend einen Schatten. Erst wenn die entsprechende Option eingeschaltet wird, wird auch der Schattenwurf aktiviert. Um die Handhabung der Szenenausleuchtung zu vereinfachen, wurden im Lauf der Jahre immer mehr unterschiedliche Lichtquellentypen entwickelt. Diese sind hier nun im Einzelnen aufgelistet.


[IMG]3d/punktlicht.jpg[/IMG]
Punktlicht (Omnilight)



Das Punktlicht gleicht am ehesten der Sonne. Es strahlt gleichförmig in alle Richtungen. Allerdings besitzt es keine räumliche Ausdehnung! Es ist sozusagen eine Singularität. Im Weltraum noch nicht vollständig bewiesen, kann jeder Benutzer Tausende davon auf Knopfdruck erstellen.
Daraus resultiert, dass diese Lichtquelle eigentlich nur harte Schatten erzeugen könnte. Nur durch einen Trick ist es möglich, auch Flächenschatten zu berechnen. Prinzipiell eignet sich diese Lichtquelle für alle Arten von Lichtern und Lampen in einer 3D-Szene. Sie sollten allerdings bedenken, dass sie in jede Richtung Licht abstrahlt – doch ist dies immer nötig? Wenn nicht, sind Sie mit einem Spotlicht besser bedient, da es feiner eingestellt werden kann und weniger Rechenzeit verbraucht.

Außerdem ist zu bedenken, dass für ein Punktlicht mit Schatten sechs Shadowmaps (oben, unten, links, rechts, vorne, hinten) berechnet werden müssen, für ein Spotlicht nur eine! Dies kann sehr viel Speicherplatz sparen.




[IMG]3d/spot-rund.jpg[/IMG]
Spotlicht, rund (Spotlight)



Diese Lichtquelle strahlt ihr Licht kegelförmig ab. Daher lassen sich damit sehr gut alle möglichen Arten von Scheinwerfern, Taschenlampen u. ä. simulieren. Das Licht kann genau auf den Punkt gerichtet werden, an dem es benötigt wird. Da das Licht nur im eingestellten Kegel berechnet wird, rendert es in der Regel schneller als ein Punktlicht und wie schon beschrieben, wird nur eine Shadowmap benötigt.

Der Kegelwinkel kann gezielt über zwei Parameter beeinflusst werden. Parameter 1 bestimmt den Winkel des Kegels, in dem immer die volle Lichtstärke abgestrahlt wird. Parameter 2 bestimmt den Winkel des Kegels, in dem das Licht bis auf Null-Intensität abfällt. Hier wird das Licht auch wieder aus einer Singularität abgestrahlt.




[IMG]3d/spot-eckig.jpg[/IMG]
Spotlicht, eckig (Spotlight)



Diese Lichtquelle ist dem runden Spotlicht sehr ähnlich. Jedoch strahlt es das Licht in einem Rechteck und nicht kreisförmig ab. Dieser Lichttyp findet nur selten Anwendung.


[IMG]3d/spot-par-rund.jpg[/IMG]
Spotlicht, parallel rund



Dieses Licht ist dem runden Spotlicht wieder sehr ähnlich, jedoch strahlt es das Licht nicht punktförmig in einem Kegel, sondern von einem Kreis ausgehende in parallelen Strahlen ab.

Die parallele Lichtquelle erzeugt ein Licht, das in der Realität nicht vorkommt, da sich das Licht immer punktförmig ausbreitet. Einzig ein Laserstrahl ist damit vergleichbar und dies ist wohl auch das Hauptanwendungsgebiet. Auch denkbar ist die Simulierung von Sonnenlicht - doch dazu später mehr.




[IMG]3d/spot-par-eckig.jpg[/IMG]
Spotlicht, parallel eckig



Diese Lichtquelle entspricht wieder dem runden Parallellicht, jedoch strahlt es das Licht aus einem Rechteck ab. Eine Anwendung dieses Licht ist wohl eher selten, da es fernab aller natürlichen Lichtquellen ist. Zuweilen gibt es aber spezielle Situationen, in denen auch diese Lichtquelle unschätzbare Vorteile bringen kann.



[IMG]3d/parallel.jpg[/IMG]
Parallellicht



Auch diese Lichtquelle wirft ihr Licht in parallelen Strahlen in die Szene, allerdings gibt es hier keine räumliche Begrenzung des Abstrahlpunkts. Das Licht wird von einer unendlichen Fläche, die durch den Abstrahlpunkt verläuft, ausgesandt. Somit eignet sich dieser Lichtquellentyp vorzüglich für die Ausleuchtung ganzer Szenen. Hauptanwendungsgebiet ist hier die Erzeugung von Sonnenlicht.

Durch den Umstand, dass sich die Sonne acht Lichtminuten von der Erde entfernt befindet, trifft das Sonnenlicht annähernd Parallel bei uns auf der Erde ein. Natürlich kann dieser Effekt auch mit einem Punktlicht erzeugt werden, allerdings müsste es sehr weit von den übrigen Objekten platziert werden, was die Szene eher unhandlich macht. Manche Raytracer besitzen statt eines simplen Parallellichts auch einen eigenen Objekt- bzw. Lichtquellentyp Sonne.




[IMG]3d/zylinder.jpg[/IMG]
Zylinderlicht



Wie der Name bereits andeutet, wird hier das Licht aus einer zylinderförmigen Röhre ausgesandt. Und wie sie wohl auch schon vermuten ist es prädestiniert dafür, Leuchtstoffröhren zu simulieren. Den besten Effekt erzielt man, wenn dieses Licht mit einem Flächenschatten verwendet wird, da nur so der natürliche Schattenwurf exakt nachgeahmt werden kann.




[IMG]3d/area.jpg[/IMG]
Flächenlicht



Das Flächenlicht stellt ein Rechteck variabler Größe dar und es war lange Zeit die einzige Möglichkeit echte Flächenschatten zu generieren. Der große Vorteil gegenüber den anderen Lichtquellen ist, das das Licht von der ganzen Fläche abgestrahlt wird. Das Zylinderlicht und das Flächenlicht stellen die einzigen Lichtquellen dar, die das Licht aus einem größeren Bereich (Linie, Fläche) aussenden und nicht nur aus einem Punkt. Wie Sie wahrscheinlich schon ahnen, benötigt diese Lichtquelle mehr Rechenzeit als die anderen. Aber besonders in Verbindung mit Radiosity läuft sie zu wahrer Größe auf. Außerdem lassen sich damit auch Radiosity-ähnliche Effekte erzielen, indem die Wände eines Raums mit Flächenlichtern bestückt werden und so dezent das Zimmer ausleuchten.


Hauptanwendungsgebiet sind große, diffuse Lichtquellen – sehr gut geeignet ist es auch um diffuses Licht, das durch ein Fenster in einen Raum dringt, zu erzeugen.


[IMG]3d/volume.jpg[/IMG]
Sichtbares Licht



Wie bereits erwähnt, ist das abgestrahlte Licht der Lichtquellen im Raum nicht sichtbar, sondern zeigt sich erst durch die Beleuchtung der Objekte. Anders verhält es sich, wenn das Licht auf winzige Staub- oder Nebel-Partikel in der Luft trifft. Da die einzelnen Partikel aber zu klein sind, um einzeln mit den Augen wahrgenommen zu werden, erscheint zum Beispiel ein Lichtkegel im Raum. Diesen Umstand macht sich eine Rendertechnologie zunutze, um sichtbares Licht zu erzeugen. Dabei unterscheiden wir grundsätzlich zwei Techniken.

Herkömmlicher Nebelalgorithmus
Dabei wird der Lichtkegel (abhängig von Lichttyp auch Zylinder usw.) erleuchtet. Über diverse Parameter kann auf die Lichtverteilung Einfluss genommen werden. Soll das Licht über die Entfernung zum Rand des Lichts abnehmen oder nicht? Auch die Dichte des “Nebels“ kann beeinflusst werden.
Dieses Verfahren rendert sehr schnell und ist für die meisten Situationen zu brauchbar. Egal ob Spotlights auf einem Konzert oder in der Disco, alles kann damit erzeugt werden.
Doch dieses Verfahren hat auch Grenzen, und diese liegen im Schatten-Rendering. Es ist hier nicht möglich, Schatten in den Nebel hinein zu berechnen. Der Schatten der Objekte wird weiterhin nur auf der Oberfläche der umliegenden Objekte sichtbar werden.

Volumenrendering
Und genau hier setzt das Volumenrendering an. Das oben beschriebene Verfahren blendet die Objekte nur in einen virtuellen Nebel hinein. Es ist aber kein wirklicher Nebel vorhanden, sofern man bei Dingen, die sich nur im Computer abspielen, von "wirklich" sprechen kann. Beim Volumenrendering ist die aber anders. Hier erhält der Nebel wirklich Substanz, doch dies fordert Rechenzeit. Der Renderer muss hier Schritt für Schritt in den Nebel hinein, um einzelne Positionen zu errechnen. Je kleiner die Schrittweite eingestellt wird, desto feiner und genauer wird das Volumenlicht gerendert, desto länger dauert aber auch die Berechnung. Hier ist Feintuning gefragt, will man nicht tagelang auf sein Bild warten!

Lichtparameter
Jede Lichtquelle weist eine Vielzahl von Parametern auf, die alle beeinflusst werden können. Einige haben wir hier kurz erklärt.

Stärke
Damit wird die Lichtstärke unabhängig von der Lichtfarbe eingestellt. Wenigen ist bekannt, dass die meisten Raytracer auch negative Lichtstärken verarbeiten. Somit ist es möglich, aus einem bestimmten Gebiet Licht abzuziehen, zum Beispiel für eine besonders dunkle Ecke in einem Raum.

Lichtabnahme
Kein Licht in der Realität strahlt ewig weit, doch im Computer ist dies kein Problem. Normalerweise nimmt die Leuchtkraft eines Licht invers quadratisch ab. Doch diese Einstellung sorgt bei Computerbildern, die nicht mit Radiosity beleuchtet werden, zu sehr dunklen Bildern. Dieser Effekt tritt auf, da das diffuse Licht, das für die Beleuchtung nicht unerheblich ist, nicht berücksichtigt wird. Es gibt kein Patentrezept, um die Lichtabnahme einzustellen. Sie muss immer den entsprechenden Szenengegebenheiten angepasst werden.

Kontrast
Wie in einer Bildbearbeitung lassen sich für die Lichter Kontrastwerte einstellen. Diese bewirken eine Kontrastveränderung auf der beleuchteten Oberfläche. Das heißt, der Übergang von beleuchteter zu unbeleuchteter Seite wird weicher oder schärfer begrenzt: sehr gut geeignet für Weltraumszenen mit Planeten oder Bildern mit dramatischen Effekten.

Beleuchtung
In den meisten Programmen gibt es Optionen, um die Lichtabstrahlung zu regulieren. Dies sind meist Umgebung, Diffus- und Glanzlicht. Mit diesen Optionen ist es möglich, eine Lichtquelle nur Glanzlichter oder Umgebungsbeleuchtung erzeugen zu lassen. Damit lassen sich zum Beispiel zusätzliche Glanzlichter auf ein Objekt zaubern, ohne die Helligkeit zu beeinflussen.

Schatten
Grundsätzlich gibt es zwei Arten von Schatten.
Schattenmaps (Shadowmaps) und Raytrace-Schatten.
Programme, deren Renderengine ein Raytracer (Lightwave, Realsoft 4D, Cinema 4D) ist, können sehr gut mit Raytrace-Schatten umgehen. Die Schatten werden sehr schnell berechnet und in Punkto Geschwindigkeit besteht kein großer Unterschied zu den Shadowmaps. Bis vor einigen Jahren konnten sie noch gar keine Shadowmaps berechnen. Man war auf harte Schatten beschränkt.

Im Gegensatz dazu stehen die Rayshader. Shadowmaps sind ihre Domäne, doch die meisten von ihnen beherrschen Heute auch die Berechnung von Raytrace-Schatten, allerdings ist die Geschwindigkeit nicht immer berauschend (z.B. 3ds max).





[IMG]3d/shadowmap.jpg[/IMG]
Shadowmap



Die Shadowmap ist ein Bild, das eine Projektion der Szene aus Sicht der Lichtquelle darstellt. Für jede Lichtquelle wird vor dem Rendern eine eigene Map berechnet, für das Punktlicht sogar sechs. Da die Qualität der Map sehr stark von der eingestellten Bildgröße abhängt, wirken kleine Maps oft ausgefranst und eckig. Große Maps hingegen verbrauchen sehr viel Speicherplatz.


Der größte Vorteil ist, dass Shadowmaps sehr schnell rendern, hier kommt keine andere Schattenart mit. Der größte Nachteil war bisher, dass es nicht möglich war, transparente Shadowmaps zu erzeugen. Es gab keinen Unterschied zwischen dem Schatten eines transparenten und soliden Objekts. Es gibt drei Parameter, die für die Shadowmap entscheidend sind:

Die Größe gibt die Bildgröße in Pixel an. Hier gilt es zu experimentieren, welcher Wert sinnvoll ist. Er sollte nicht zu groß sein, um RAM zu sparen, dennoch sollte er nicht so klein sein, dass die Map ausgefranst wirkt.

Die Sample Rate gibt an, wie stark das Bild weichgezeichnet wird. Große Werte erzeugen eine stark verwischte Map. Bei zu kleinen Werten wirkt die Map wiederum ausgefranst.

Zu guter Letzt bestimmt der Bias-Wert den Abstand der Map vom Objekt. Da die Shadowmap nur eine Projektion eines Bildes ist, wird sie in einem bestimmten Abstand (Bias) vom Objekt projiziert. Zu kleine Werte erzeugen seltsame Muster auf den Objekten, da die Map auf jede Oberfläche gelegt wird. Bei zu großen Werten hingegen bildet sich eine Lücke zwischen Objekt und Schatten. Auch kann es passieren, dass sehr kleine Objekte gar keinen Schatten werfen. Hier sollte man einen guten Kompromiss finden.




[IMG]3d/transshadowmap.jpg[/IMG]
Transparente Shadowmaps



Einige Raytracer (etwa Cinema 4D) beherrschen die Erzeugung von transparenten Shadowmaps. Dies trägt viel zu einem realistischeren Rendering bei, jedoch steigt der Speicherverbrauch hier nochmals deutlich an.




[IMG]3d/raytrace.jpg[/IMG]
Raytrace-Schatten



Die Raytrace-Schatten der herkömmlichen Art können nur scharfe Kanten darstellen. Da in der Natur aber nur sehr selten scharf begrenzte Schatten vorkommen, wirken sie nicht realistisch. Shadowmaps sind hier meist die bessere Wahl. Für technische Illustrationen können sie aber durchaus geeignet sein. Die Renderzeit liegt bei optimierten Systemen nur noch geringfügig über der von Shadowmaps.




[IMG]3d/areashadows.jpg[/IMG]
Flächenschatten



Die Areashadows sind eine erweiterte Art der Raytrace-Schatten. Nur mit ihrer Hilfe ist es möglich, realistische, weiche Schatten zu berechnen. Ursprünglich war diese Schattenart aber nur mit den Flächenlichtern zu verwenden. Punktlichtquellen konnten noch keine Flächenschatten produzieren. Heute wird aus den Punktlichtern eine virtuelles Flächenlicht generiert. Die Lichtabstrahlung erfolgt auch weiterhin aus einem Punkt, aber die Schatten werden aus einem Gebiet mit wählbarer Große berechnet.

Die Samplingrate gibt hier an, wie viele Strahlen für ein Pixel ausgesandt werden. Hohe Werte liefern sehr weiche Schatten, benötigen aber sehr viel Rechenzeit. Kleine Werte Rendern schnell, leifern aber eher grobkörnige Bilder.


Leider liegt der Rechenzeitverbrauch sehr viel höher als bei den beiden anderen Schattenarten. Deshalb sind sie für Animationen nur eingeschränkt zu gebrauchen. Wer aber ein Bild mit maximalem Realitätsgrad erschaffen will, wird um die Areashadows nicht herumkommen. (bs)

Raytracing-Programme:
3ds max - http://www.discreet.de/
Cinema 4D XL 7 / ART 7 / XL 6 - http://www.maxon.de/
Lightwave 3D - http://www.newtek.com/
Softimage XSI / 3D - http://www.softimage.com/
Maya - http://www.softimage.com/

Quelle: Online Magazin Dr. Web
http://www.drweb.de
  Zitieren


Nachrichten in diesem Thema
3D - Licht und Schatten - von pattex - 07.05.2003, 15:27

Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste