Blender Tutorial
 Spiegelungen (EnvMaps) Intermediate Learn how to use environment maps 2000 12 06 
>> zurück zu www.psycho3d.de << Predrag Kurtovic
Einführung
Blender benutzt eine Karte der Umgebung (environment mapping), um reflektierende Oberflächen zu erzeugen. Da es auf der Blender Webseite viele Fragen zum Thema "Wie mache ich Reflektionen" gibt, habe ich mich dazu entschieden, ein kleines Tutorial über Reflektionen zu schreiben. Ich werde beschreiben, wie man Spiegelungen auf einem oder mehreren Objekten erzeugt. Und los geht's.

     Download:  download intro.zip
Spiegelung auf einer Fläche
Die Fläche ist das Standardobjekt in der Blenderszene. Eine Fläche spiegelnd zu machen ist einfach. Ihr braucht: zwei Lampen, die Fläche, eine Kamera und ein paar Objekte über der Fläche (z.B. ein Text, eine Kugel, ...). Weist allen Objekten außer der Fläche ein Material zu. Geht zur Seitenansicht nimpad3, wählt die Kamera und drückt n. Ihr seht die x, y und z Position der Kamera. Die Z-Position ist für uns wichtig - merkt sie euch. [die anderen aber auch]

Jetzt erzeugt ein Empty und platziert es unter der Kamera. Wählt das Empty und drückt n. Als X und Y Koordinaten benutzt ihr dieselben wie für die Kamera. Die Z-Koordinate muss die Selbe sein wie bei der Kamera, aber negativ. Die Fläche sollte in der Mitte sein (z = 0).
Dann erzeugt ihr ein neues Material f5 für die Fläche. Erzeugt eine Textur und wählt als Texturtyp "EnvMap". Im "Ob" Feld gebt ihr "Empty" ein (das ist der Objektname des Emptys - ihr könnt ihn in der Titelleiste der EditButtons sehen - f9). Legt den Texturmodus [MaterialButtons Mitte oben] auf "Refl" fest.

Wenn ihr die Szene jetzt rendert, werdet ihr gar keine Reflektion erhalten; ihr werdet einen schwarzen Boden sehen. Warum?

Das ist ganz einfach: Blender berechnet die Reflektion, indem es eine virtuelle Kamera an der Position des Emptys platziert, und die Fläche blockiert die Sicht des Emptys. Um das zu beheben verschiebe ich die Fläche auf die zweite Ebene. Wählt die Fläche aus und drückt m 2. In den TexturButtons drückt ihr den zweiten Button in der Gruppe "Don't render layer" (damit wird die zweite Ebene für die Spiegelung nicht gerendert). Dann macht ihr die zweite Ebene auch noch sichtbar, indem ihr shift2 im 3D Fenster drückt. Wenn ihr jetzt rendert, werdet ihr einen reflektierenden Boden erhalten (vergesst nicht, zuerst "Free Data" anzuklicken - Erklärung unten).

     Download:  download plane.zip
!
Environment Maps können "Static" oder "Anim" sein. Das Erste heißt, dass Blender die Spiegelung nur einmal pro Animation rendert; das ist nützlich, wenn sich in einer Szene nur die Position der Kamera ändert - es wird viel Zeit gespart.

Das Zweite heißt, dass die Spiegelung für jedes Bild eurer Animation neu gerendert wird.

Wenn ihr statische Spiegelungen verwendet und in eurer Szene etwas ändert, müsst ihr auf "Free Data" klicken, damit Blender beim nächsten Rendern die Spiegelung neu berechnet.
Reflektion in einer Kugel
Wenn nur ein Objekt (in unserem Fall eine Kugel) in der Szene eine spiegelnde Oberfläche hat, ist die Sache schnell erledigt. Macht euch eine neue Szene und gebt allen Objekten eine Textur [Material reicht auch]. Jetzt brauchen wir noch unsere reflektierende Kugel.

Erzeugt eine mesh-Kugel. In den EditButtons f9 klickt ihr auf "Set Smooth". So erhält unsere Kugel eine glatte Oberfläche. Gebt der Kugel ein neues Material und Textur "EnvMap". Im "Ob" Feld gebt ihr den Namen des Kugel (in unserem Fall "Sphere"; ihr könnt den Namen wieder in den EditButtons sehen - f9) ein. Wie oben platziert Blender eine virtuelle Kamera in der Mitte der Kugel und benutzt das entstehende Bild, um die Reflektion zu simulieren.

Der Button "CubeRes" wird benutzt, um die Spiegelung schärfer zu machen, indem man die Auflösung ändert. Wenn der Wert des Buttons groß ist, wird unsere Spiegelung schärfer, braucht aber mehr Zeit zum rendern.
Zurück bei den MaterialButtons f5 wählt ihr "Refl" als Texturmodus [Mapping-Typ, "Map Input"]. Nur mit dieser Einstellung wird die Reflektion richtig dargestellt. Ihr müsst außerdem die Buttons "Csp" und "Cmir" [beide rechts] aktivieren, damit die Spiegelung die richtigen Farben bekommt. Wenn ihr das nicht tut, wird die Spiegelung zu dunkel.

     Download:  download sphere.blend
Mehrere Reflektionen
Wenn ihr mehr als ein spiegelndes Objekt benutzt, wird das mit der obigen Anleitung keine korrekten Ergebnisse geben. Nach den physikalischen Gesetzen haben n spiegelnde Oberflächen n-1 Spiegelungen [?]. Blender kann zur Zeit nicht n-1 Spiegelungen berechnen. [Doch, ab Blender 2.3: "Depth:" gibt an, wie oft die Spiegelung neu berechnet werden soll] Wenn ihr zwei reflektierende Kugeln habt, müsst ihr jede EnvMap zweimal berechnen. Warum?

Wenn die erste Kugel ihre EnvMap erzeugt, macht sie sechs Schnappschüsse der Szene. Die Spiegelungen der anderen Kugeln wurden noch nicht berechnet, deshalb sieht sie die erste Kugel ohne Spiegelungen. Wenn die zweite Kugel ihre eigenen Bilder macht, hat unsere erste Kugel eine "spiegelnde", aber nicht wirklich spiegelnde Oberfläche. Nur die dritte Kugel hat eine echt spiegelnde Oberfläche, aber mit falschen Texturen [auf den anderen Kugeln]. Deshalb müsst ihr die EnvMap der dritten Kugel auch neu berechnen.
Wir fangen wieder mit einer neuen Szene an. Drückt ctrlx um alles in eurer Szene zu löschen und die Standardszene zu laden. Erzeugt eine Kugel und ohne den 3D-Cursor zu bewegen auch noch ein Empty. Bewegt den Cursor irgendwo anders hin und wiederholt das Ganze noch zwei Mal. Jetzt habt ihr drei Kugeln in verschiedenen Positionen. Alle Kugeln haben ein Empty in ihrer Mitte. Macht noch ein paar Lichter und verschiebt sie zusammen mit der Fläche, der Kamera und allen anderen (nicht spiegelnden) Objekten in die vierte Ebene, indem ihr alle auswählt (a) und m, 4, enter drückt. Gebt der Fläche noch eine Textur.

Ihr könnt auch ein paar "Wolken" erzeugen, indem ihr in den WorldButtons eine Textur einstellt. Stellt World dann auf "Real", sonst bekommt ihr falsche Spiegelungen auf euren Objekten. Auf den ersten drei Ebenen habt ihr nur Kugeln. In der vierten Ebene habt ihr die Emptys der Kugeln, Kamera, Licht und andere Objekte

[warum der hier die emptys verwendet, weiß ich nicht. müsste auch ohne gehen, wie bei nur einer kugel]
Echte Spiegelung erzeugen
Jetzt gebt ihr der ersten Kugel ein neues Material (f5) und auch noch eine Textur. Stellt eine "Static" EnvMap ein. In den "Ob" Button gebt ihr "Empty" ein. Aktiviert den ersten Button in der Gruppe "Don't render layer". Wiederholt diese Schritte für die zweite und dritte Kugel, aber ändert die Namen der Emptys (benutzt die Titelleiste der EditButtons oder klickt dort auf "Name", um den Namen des Emptys im 3D Fenster anzuzeigen). Drückt den zweiten Button bei "Don't render layer" für die zweite Kugel und den dritten für die dritte Kugel. [Die Kugeln müssen sich auch in der entsprechenden Ebene befinden. Außerdem sollten sie nicht alle auf einer Ebene liegen.]
Drückt f12 und das rendern beginnt. Dann wählt ihr die erste Kugel, geht zu den TextureButtons f6 und löscht die EnvMap mit dem "FreeData" Button. Drückt f12. Blender rendert die EnvMap der ersten Kugel. Jetzt wählt die zweite Kugel und wiederholt das Löschen und rendert dann noch Mal f12. Löscht die EnvMap der dritten Kugel. Drückt zum letzten Mal f12. Blender berechnet die Spiegelung der dritten Kugel. Jetzt haben alle Kugeln eine wirklich spiegelnde Oberfläche. [wenigstens soweit das mit EnvMaps geht]
Animiert es!
EnvMaps sind nichts weiter als Schnappschüsse der aktuellen Szene. Deshalb könnt ihr die Kamera (aber nur die Kamera) in der Szene bewegen, und alle Spiegelungen werden richtig dargestellt. Wenn ihr irgendein Objekt bewegt, stimmen die Spiegelungen nicht mehr, weil die EnvMaps statisch sind.

     Download:  download reflect.zip
Diese kleine Animation zeigt das Ergebnis einer animierten Szene mit einer statischen EnvMap auf einem Objekt. Vergesst nicht, dass ihr nur die Kamera bewegen dürft, nicht die Objekte.

     Download:  download reflec.mpg
Zusammenfassung/letzte Bemerkungen/....
Am Ende des Tutorials hoffe ich, dass ihr wisst, wie man in Blender Reflektionen macht. Natürlich könnt ihr mich immer Fragen, wenn ihr bei meinem Tutorial Fragen habt. E-Mail ist pkurtovic@inet.hr. Alle Teile des Tutorials haben .blend Dateien, und ihr müsst nur F12 drücken, um das Ergebnis zu sehen. So, dass war's - Happy Blendering.
übersetzt von:  pat  -  www.psycho3d.de  -  29.01.2004  -  überarbeitet 04.05.05