Modelleinstellungen: Unterschied zwischen den Versionen
HW1 (Diskussion | Beiträge) |
|||
(43 dazwischenliegende Versionen von einem anderen Benutzer werden nicht angezeigt) | |||
Zeile 1: | Zeile 1: | ||
− | + | [[Datei:Redaktioneller_Hinweis.png]] | |
+ | |||
+ | == Modelleinstellungen == | ||
Über die Modelleinstellungen haben wir die Möglichkeit, Einstellungen und Parameter auf eine komplette *.kon-Datei anzuwenden. Im Dialog der Modelleinstellungen werden immer alle *.kon-Dateien angezeigt, die sich aktuell in unserem Objekt befinden. (vgl. Kapitel 2, Objekte). Die Modelleinstellungen rufen wir uns über die Schaltfläche [[Datei:4.modelleinstellungen-aufruf-button.jpg]] in der oberen Leiste auf. | Über die Modelleinstellungen haben wir die Möglichkeit, Einstellungen und Parameter auf eine komplette *.kon-Datei anzuwenden. Im Dialog der Modelleinstellungen werden immer alle *.kon-Dateien angezeigt, die sich aktuell in unserem Objekt befinden. (vgl. Kapitel 2, Objekte). Die Modelleinstellungen rufen wir uns über die Schaltfläche [[Datei:4.modelleinstellungen-aufruf-button.jpg]] in der oberen Leiste auf. | ||
− | [[Datei:4.modelleinstellungen.jpg]] | + | <center>[[Datei:4.modelleinstellungen.jpg]]</center> |
− | + | === Liste der KON-Dateien === | |
Wie oben bereits erwähnt werden im Dialog der Modelleinstellungen stets alle .kon-Dateien angezeigt, welche sich aktuell in unserem Objekt befinden. Welche .kon-Datei gerade in unserem Objekt aktiv und somit im 3D-Betrachter zu sehen ist, erkennen wir am gesetzten Haken links neben der Bezeichnung unserer jeweiligen .kon-Datei. | Wie oben bereits erwähnt werden im Dialog der Modelleinstellungen stets alle .kon-Dateien angezeigt, welche sich aktuell in unserem Objekt befinden. Welche .kon-Datei gerade in unserem Objekt aktiv und somit im 3D-Betrachter zu sehen ist, erkennen wir am gesetzten Haken links neben der Bezeichnung unserer jeweiligen .kon-Datei. | ||
− | [[Datei:4.modelleinstellungen-haken-setzen.jpg]] | + | <center>[[Datei:4.modelleinstellungen-haken-setzen.jpg]]</center> |
Durch Herausnahme des Hakens mit der LMT deaktivieren wir unsere jeweilige .kon und schließen sie somit aus der 3D-Darstellung aus. Rechts neben dem schwarzen Häkchen sehen wir in chronologischer Reihenfolge folgende Informationen zur jeweiligen *.kon. | Durch Herausnahme des Hakens mit der LMT deaktivieren wir unsere jeweilige .kon und schließen sie somit aus der 3D-Darstellung aus. Rechts neben dem schwarzen Häkchen sehen wir in chronologischer Reihenfolge folgende Informationen zur jeweiligen *.kon. | ||
Zeile 37: | Zeile 39: | ||
− | + | === Einstellungen der KON-Dateien === | |
− | |||
In "Einstellungen der KON-Dateien" sehen wir die Eingabefelder "Einheitliche Normals", "Id", "Reflektion", und Einstellungen zum spekularen und diffusen Licht. Gehen wir nun der Reihe nach auf die einzelnen Eingabemöglichkeiten ein. | In "Einstellungen der KON-Dateien" sehen wir die Eingabefelder "Einheitliche Normals", "Id", "Reflektion", und Einstellungen zum spekularen und diffusen Licht. Gehen wir nun der Reihe nach auf die einzelnen Eingabemöglichkeiten ein. | ||
− | + | == Einheitliche Normals == | |
− | |||
− | |||
Unter "Einheitlich Normals" verstehen wir die Möglichkeit, Flächen, die in unseren .kon-Dateien in gewissen Winkeln zueinander stehen zu "vereinheitlichen" - d.h. die Winkel der einzelnen Konstrukte bzw...... Flächen innerhalb einer *.kon-Datei miteinander verrechnen zu lassen. Wir sehen uns dies nun an einem Beispiel an. In der Abb.1 sehen wir die Grundflächen eines Kegels bestehend aus 16 Außenflächen. | Unter "Einheitlich Normals" verstehen wir die Möglichkeit, Flächen, die in unseren .kon-Dateien in gewissen Winkeln zueinander stehen zu "vereinheitlichen" - d.h. die Winkel der einzelnen Konstrukte bzw...... Flächen innerhalb einer *.kon-Datei miteinander verrechnen zu lassen. Wir sehen uns dies nun an einem Beispiel an. In der Abb.1 sehen wir die Grundflächen eines Kegels bestehend aus 16 Außenflächen. | ||
− | [[Datei:4.modelleinstellungen-einheitlichenormals-2d.jpg]] | + | <center>[[Datei:4.modelleinstellungen-einheitlichenormals-2d.jpg]]</center> |
<b>Abb.1:</b> Kegel bestehend aus 16 einzelnen Dreiecken. Jedes Dreieck mit einem Öffnungswinkel von 22.5° ( 16 x[mal] 22.5° = 360°). Die Seitenlänge eines Dreiecks sei 100cm und die Höhe=h des Kegels im Mittelpunkt sei ebenfalls 100cm. Für den Kreis bekommen wir somit einen Durchmesser(d)von d=2 x r (Radius=Seitenlänge eines Dreiecks) = 2 x 100cm = 200cm. | <b>Abb.1:</b> Kegel bestehend aus 16 einzelnen Dreiecken. Jedes Dreieck mit einem Öffnungswinkel von 22.5° ( 16 x[mal] 22.5° = 360°). Die Seitenlänge eines Dreiecks sei 100cm und die Höhe=h des Kegels im Mittelpunkt sei ebenfalls 100cm. Für den Kreis bekommen wir somit einen Durchmesser(d)von d=2 x r (Radius=Seitenlänge eines Dreiecks) = 2 x 100cm = 200cm. | ||
Zeile 53: | Zeile 52: | ||
In der nachfolgenden 3D-Ansicht sehen wir nun die einzelnen Flächen (der Dreiecke), die die Form des Kegels bilden. Wir können hier noch nicht von einem runden Kegel, sondern vielmehr von einem kantigen Gebilde sprechen, das man als 16-seitige Pyramide bezeichnen könnte. Da die Normale der Dreiecke noch nicht vereinheitlicht wurden, behandelt die Grafikengine jedes einzelne Dreieck als eine absolut eigenständige geometrische Figur. | In der nachfolgenden 3D-Ansicht sehen wir nun die einzelnen Flächen (der Dreiecke), die die Form des Kegels bilden. Wir können hier noch nicht von einem runden Kegel, sondern vielmehr von einem kantigen Gebilde sprechen, das man als 16-seitige Pyramide bezeichnen könnte. Da die Normale der Dreiecke noch nicht vereinheitlicht wurden, behandelt die Grafikengine jedes einzelne Dreieck als eine absolut eigenständige geometrische Figur. | ||
− | [[Datei:4.modelleinstellungen-einheitlichenormals-3d-nichtverrechnet.jpg]] | + | <center>[[Datei:4.modelleinstellungen-einheitlichenormals-3d-nichtverrechnet.jpg]]</center> |
<b>Abb.2:</b> 3D-Ansicht des Kegels. Die Funktion "Einheitliche Normals" ist noch nicht aktiv, d.h. die Normals bzw. die Winkel werden noch nicht miteinander verrechnet bzw. vereinheitlicht. | <b>Abb.2:</b> 3D-Ansicht des Kegels. Die Funktion "Einheitliche Normals" ist noch nicht aktiv, d.h. die Normals bzw. die Winkel werden noch nicht miteinander verrechnet bzw. vereinheitlicht. | ||
Zeile 64: | Zeile 63: | ||
Es müssten demnach nur 17 Vertices sein! Was also geht hier vor?! | Es müssten demnach nur 17 Vertices sein! Was also geht hier vor?! | ||
− | [[Datei:4.modelleinstellungen-einheitlichenormals-3d-nichtverrechnet-normals-sichtbar_a.jpg]] | + | <center>[[Datei:4.modelleinstellungen-einheitlichenormals-3d-nichtverrechnet-normals-sichtbar_a.jpg]]</center> |
<b>Abb.3:</b> 3D-Ansicht des Kegels mit sichtbargemachten Normals. Der Öffnungswinkel zwischen den Normalen ist nun erkennbar, in welchem die 16 Dreiecke jeweils zueinander stehen. | <b>Abb.3:</b> 3D-Ansicht des Kegels mit sichtbargemachten Normals. Der Öffnungswinkel zwischen den Normalen ist nun erkennbar, in welchem die 16 Dreiecke jeweils zueinander stehen. | ||
Zeile 71: | Zeile 70: | ||
Nun…, des Rätsels Lösung liegt in der Berechnungsart des Kegels, die in unserem Fall <b>einseitig</b> ist (und wir diese in unserem Tutorial weiterhin so belassen wollen). | Nun…, des Rätsels Lösung liegt in der Berechnungsart des Kegels, die in unserem Fall <b>einseitig</b> ist (und wir diese in unserem Tutorial weiterhin so belassen wollen). | ||
− | [[Datei:4.modelleinstellungen-einheitlichenormals-modelleinstellung-einseitig.jpg]] | + | <center>[[Datei:4.modelleinstellungen-einheitlichenormals-modelleinstellung-einseitig.jpg]]</center> |
− | Was heißt es aber konkret: eine <b><font color="blue">einseitige Ausleuchtung"</font></b>? Eine einseitige Ausleuchtung bedeutet, dass nur die Vorderseiten der Polygone auf das Licht reagieren und deren Rückseiten immer dunkel bleiben - auch für den Fall, dass die Lichtquelle so ausgerichtet ist, dass die Rückseiten bestrahl werden. Wann ist es der Fall? Nun, eigentlich ist es auch beim Kegel der Fall, weil ein typischer Kegel einen Boden, also eine Grundfläche besitz und von unten geschlossen ist. Ich habe den Boden aber absichtlich weggelassen, damit man in den | + | Was heißt es aber konkret: eine <b><font color="blue">einseitige Ausleuchtung"</font></b>? Eine einseitige Ausleuchtung bedeutet, dass nur die Vorderseiten der Polygone auf das Licht reagieren und deren Rückseiten immer dunkel bleiben - auch für den Fall, dass die Lichtquelle so ausgerichtet ist, dass die Rückseiten bestrahl werden. Wann ist es der Fall? Nun, eigentlich ist es auch beim Kegel der Fall, weil ein typischer Kegel einen Boden, also eine Grundfläche besitz und von unten geschlossen ist. Ich habe den Boden aber absichtlich weggelassen, damit man in den Hohlraum des Kegels hineinschauen kann, ansonsten würden wir ja nicht sehen was im Inneren passiert. Da die "einseitige Ausleuchtung" erklärt wurde, sollten zugleich die anderen Arten der Ausleuchtung erklärt werden: |
− | Eine <b><font color="blue">"zweiseitige Ausleuchtung"</font></b> bedeutet, dass sowohl die | + | Eine <b><font color="blue">"zweiseitige Ausleuchtung"</font></b> bedeutet, dass sowohl die Aussenseiten, als auch die Innenseiten der Polygone auf das Licht reagieren. Dies funktioniert natürlich nur dann, wenn die Polygone beide Seiten besitzen, also nicht "backfacegecullt" sind. Diese Ausleuchtung eignet sich für alle offenen Flächen, die man sowohl von hinten, als auch von vorne betrachten kann. Ob das nun eine Gitterkonstruktion, ein Zaun, eine dünne Wand, oder ein Geländer ist - deren Konstruktion nur aus flachen Polygonen besteht – man kann sie alle von beiden Seiten betrachten und demnach auch beiderseitig ausleuchten. |
Die dritte Art des Renderings heißt <b><font color="blue">"Normal"</font></b>. Nun…, so ganz normal ist sie nicht und faktisch existiert sie im HomeNos nur deswegen, weil wir teilweise mit älteren Konstruktionen und Modellen zutun haben, die nicht nach der linkshändischen Formel gebaut wurden. Bei dieser Art der Ausleuchtung richtet sich das Licht nicht nach der Seite des Polygons (also vorne, oder hinten), vielmehr nach dessen Normalen. Das besondere dabei ist, dass wir (aufgrund der Bauweise der alten Modelle) der Grafikengine mitteilen können, dass sie – obwohl es sich eigentlich um die Rückseite des Polygons handelt – die Normale auf die gegenüberliegende Seite umlegen soll. Dabei werden die Normale umgepolt und sind auf der Rückseite zu sehen, obwohl sie laut der strengen Definition eines Normals dort nicht hingehören. (Die Vorderseite eines Polygons wird durch seinen Normal-Vektor bestimmt, drum kann man auch behaupten, dass wir in diesem Fall absichtlich gegen die Definition verstoßen – allerdings können wir dadurch Hunderte, wenn nicht Tausende von EEP-Konstruktionen retten...) | Die dritte Art des Renderings heißt <b><font color="blue">"Normal"</font></b>. Nun…, so ganz normal ist sie nicht und faktisch existiert sie im HomeNos nur deswegen, weil wir teilweise mit älteren Konstruktionen und Modellen zutun haben, die nicht nach der linkshändischen Formel gebaut wurden. Bei dieser Art der Ausleuchtung richtet sich das Licht nicht nach der Seite des Polygons (also vorne, oder hinten), vielmehr nach dessen Normalen. Das besondere dabei ist, dass wir (aufgrund der Bauweise der alten Modelle) der Grafikengine mitteilen können, dass sie – obwohl es sich eigentlich um die Rückseite des Polygons handelt – die Normale auf die gegenüberliegende Seite umlegen soll. Dabei werden die Normale umgepolt und sind auf der Rückseite zu sehen, obwohl sie laut der strengen Definition eines Normals dort nicht hingehören. (Die Vorderseite eines Polygons wird durch seinen Normal-Vektor bestimmt, drum kann man auch behaupten, dass wir in diesem Fall absichtlich gegen die Definition verstoßen – allerdings können wir dadurch Hunderte, wenn nicht Tausende von EEP-Konstruktionen retten...) | ||
Zeile 84: | Zeile 83: | ||
Da wir es mit 16 Dreiecken zutun haben, so müsste der Normalisierungsprozess bei 22,5. gut zu sehen sein, denn 360°/ 16 = 22,5. Nun, wir versuchen es aber mit einem kleineren Wert und schauen uns an, ob etwas passiert… | Da wir es mit 16 Dreiecken zutun haben, so müsste der Normalisierungsprozess bei 22,5. gut zu sehen sein, denn 360°/ 16 = 22,5. Nun, wir versuchen es aber mit einem kleineren Wert und schauen uns an, ob etwas passiert… | ||
− | [[Datei:4.modelleinstellungen-einheitlichenormals-2d_1grad.jpg]] | + | <center>[[Datei:4.modelleinstellungen-einheitlichenormals-2d_1grad.jpg]]</center> |
In der Tat, bereits bei der Eingabe von 1. fängt der Pixelshader damit an, die Dreiecke miteinander zu verrechnen und spätestens bei der Eingabe von 23. muss der Fall eintreten, dass die Normale im unteren Bereich des Kegels miteinander verschmelzen, also einen Durchschnitt der Ausleuchtung von zwei benachbarten Dreiecken bilden (es sind nach wie vor 48 Vertices). | In der Tat, bereits bei der Eingabe von 1. fängt der Pixelshader damit an, die Dreiecke miteinander zu verrechnen und spätestens bei der Eingabe von 23. muss der Fall eintreten, dass die Normale im unteren Bereich des Kegels miteinander verschmelzen, also einen Durchschnitt der Ausleuchtung von zwei benachbarten Dreiecken bilden (es sind nach wie vor 48 Vertices). | ||
− | [[Datei:4.modelleinstellungen-einheitlichenormals-3d_1grad.jpg]] | + | <center>[[Datei:4.modelleinstellungen-einheitlichenormals-3d_1grad.jpg]]</center> |
Unser Kegel sieht schon ganz rund aus, allerdings ist es uns noch nicht gelungen alle Normale des Kegels miteinander zu verrechnen, da der Winkel (23°) noch viel zu klein ist, damit die 16 Vertices an der Spitze einen Durchschnitt-Normal ergeben. Der Grund dafür liegt darin, dass wir bei unserem Kegel gegenüberliegende Dreiecke haben, deren Winkel zueinander etwas kleiner als 100° ist. | Unser Kegel sieht schon ganz rund aus, allerdings ist es uns noch nicht gelungen alle Normale des Kegels miteinander zu verrechnen, da der Winkel (23°) noch viel zu klein ist, damit die 16 Vertices an der Spitze einen Durchschnitt-Normal ergeben. Der Grund dafür liegt darin, dass wir bei unserem Kegel gegenüberliegende Dreiecke haben, deren Winkel zueinander etwas kleiner als 100° ist. | ||
Zeile 94: | Zeile 93: | ||
Wir rufen den Instanzen-Dialog auf und tragen beim Wert der Normal-Vereinheitlichung einen Winkel von 100°. | Wir rufen den Instanzen-Dialog auf und tragen beim Wert der Normal-Vereinheitlichung einen Winkel von 100°. | ||
− | [[Datei:4.modelleinstellungen-einheitlichenormals-2d-3d_100grad.jpg]] | + | <center>[[Datei:4.modelleinstellungen-einheitlichenormals-2d-3d_100grad.jpg]]</center> |
Durch die Winkelvereinheitlichung von 100° ist es uns endlich gelungen, sämtliche Normale des Kegels zu verschmelzen, womit an der Spitze nur noch ein, gemeinsamer Normal errechnet wird. | Durch die Winkelvereinheitlichung von 100° ist es uns endlich gelungen, sämtliche Normale des Kegels zu verschmelzen, womit an der Spitze nur noch ein, gemeinsamer Normal errechnet wird. | ||
− | + | == Id- Gruppenzuordnung == | |
− | + | Im Feld Id können wir verschiedene *.kon-Dateien durch Vergabe derselben Identifikationsnummer einer gemeinsame Gruppen zuordnen. Gleiche Id`s vergeben wir in dem Fall, wenn mehrere *.kon-Dateien programmseitig als eine homogene Gruppe dargestellt und berechnet werden sollen. Nehmen wir als Bsp. an wir haben einen äußeren Kastenaufbau einer Lokomotive, der aus mehreren einzelnen *.kon-Dateien besteht. Für eine gute und einheitliche Darstellung des Kastenaufbaus möchten wir nun aber, dass die Einzel-*.kon`s programmseitig als eine, gemeinsame Datei behandelt werden. Um das zu erreichen versehen wir alle Einzel-*.kon-Dateien nun mit derselben Id-Nummer. Wir sehen uns dies nun an einem Beispiel an: | |
− | |||
− | Im Feld Id können wir verschiedene *.kon-Dateien durch Vergabe derselben Identifikationsnummer einer gemeinsame Gruppen zuordnen. Gleiche Id`s vergeben wir in dem Fall, wenn mehrere *.kon-Dateien programmseitig als eine homogene Gruppe dargestellt und berechnet werden sollen. Nehmen wir als Bsp. an wir haben einen äußeren Kastenaufbau einer Lokomotive, der aus mehreren einzelnen *.kon-Dateien besteht. Für eine gute und einheitliche Darstellung des Kastenaufbaus möchten wir nun aber, | ||
In den nachfolgenden Abbildungen sehen wir die 3D-Ansicht eines Kegels bestehend aus vier einzelnen .kon-Dateien | In den nachfolgenden Abbildungen sehen wir die 3D-Ansicht eines Kegels bestehend aus vier einzelnen .kon-Dateien | ||
− | [[Datei:a_pyramide-metall_4-kons_ohne.jpg]] | + | <center>[[Datei:a_pyramide-metall_4-kons_ohne.jpg]]</center> |
<b>Abb.4.:</b> Kegel <b>ohne</b> vereinheitlichte Normals und <b>ohne</b> einheitliche ID-Gruppen | <b>Abb.4.:</b> Kegel <b>ohne</b> vereinheitlichte Normals und <b>ohne</b> einheitliche ID-Gruppen | ||
− | [[Datei:a_pyramide-metall_4-kons_mit_ids200.jpg]] | + | <center>[[Datei:a_pyramide-metall_4-kons_mit_ids200.jpg]]</center> |
<b>Abb.5.:</b> Kegel, <b>gleiche ID-Gruppe</b> (Id=200) vergeben an alle einzelnen .kon-Dateien des Würfels | <b>Abb.5.:</b> Kegel, <b>gleiche ID-Gruppe</b> (Id=200) vergeben an alle einzelnen .kon-Dateien des Würfels | ||
− | [[Datei:a_pyramide-metall_4-kons_mit_ids200-u-einh-normals.jpg]] | + | <center>[[Datei:a_pyramide-metall_4-kons_mit_ids200-u-einh-normals.jpg]]</center> |
<b>Abb.6.:</b> Kegel, <b>gleiche ID-Gruppe</b> (Id=200) vergeben an alle einzelnen .kon-Dateien des Würfels und Normals mit einem Winkel von 90Grad vereinheitlicht. | <b>Abb.6.:</b> Kegel, <b>gleiche ID-Gruppe</b> (Id=200) vergeben an alle einzelnen .kon-Dateien des Würfels und Normals mit einem Winkel von 90Grad vereinheitlicht. | ||
Zeile 119: | Zeile 116: | ||
<b><font color="red">WICHTIG: Für Flächen nehmen wir für die Bildung von einheitlichen Id-Gruppen die Id = 200</font></b> | <b><font color="red">WICHTIG: Für Flächen nehmen wir für die Bildung von einheitlichen Id-Gruppen die Id = 200</font></b> | ||
+ | == Reflexion == | ||
+ | |||
+ | Das Phänomen der Reflexion lässt sich am anschaulichsten an einem Spiegel beobachten. Trifft Licht auf einen Spiegel (Medium 2), wird sämtliches Licht reflektiert, wobei der Einfallswinkel (α alpha) des Lichts immer dem Ausfallwinkel entspricht. Dies ist der Idealfall einer Reflexion, den wir in Abb.1 am Lichteinfallwinkel und reflektierten Strahl beobachten können. Trifft Licht nun auf ein flüssiges (z.B. Wasser) oder ein lichtdurchlässiges Medium (wie z.B. eine Fensterscheibe), wird der Lichtstrahl abgelenkt bzw. gebrochen. Wenn Licht auf Gegenstände trifft, die für unsere Augen farbig erscheinen, tritt noch ein anderes spezielleres Phänomen auf. Die Oberfläche eines z.B blauen Pigments absorbiert bestimmte Anteile des Lichts. Ein Teil des Lichts wird remittiert und in unserem System Auge-Gehirn entsteht der Farbeindruck Blau. Hier haben wir es mit dem Phänomen der Remission zu tun. | ||
+ | |||
+ | <center>[[Datei:7.licht-einf-ausfsall-winkel.jpg]]</center> | ||
+ | <center>[[Datei:7.licht-diffuse-reflektion_zoom67.png]]</center> | ||
+ | |||
+ | Abb.1: Gerichtete Reflexion (Licht - reflektierter Strahl) und Abb.2: Diffuse Reflexion auf rauhen Oberflächen<br> | ||
+ | Lichtablenkung in Glas od. flüssigen Medien (gebrochener Strahl) | ||
+ | |||
+ | |||
+ | Die Intensität der Reflexion, also die Menge des remittierten Lichts hängt von dem Medium (Medium 2) ab auf die das Licht trifft. Grenzflächen mit einer großen Rauheit relativ zur Wellenlänge reflektieren diffus. Dies ist in Abb.2 dargestellt. Enthält das Material nun auch viele Streuzentren, folgt die Reflexion dem Lambertschen Gesetz. Die Hauptrückstreuung erfolgt dann senkrecht zum Material, unabhängig von der Einstrahlungsrichtung. Beispiele sind Milch, Wandfarbe oder Papier. Bei diesen Medien würden wir umgangssprachlich von komplett matten Gegenständen bzw. Materialien sprechen. Bei Milch haben die Fetttropfen im Wasser die Größenordnung der Wellenlänge des sichtbaren Lichtes und bilden die Streuzentren für Lichtwellen, gleiches gilt für die Lufteinschlüsse zwischen den Fasern bei Papier. | ||
+ | |||
+ | <b>Werte der Reflexion im HomeNos</b> | ||
+ | |||
+ | Wie wir eben besprochen haben, ist die Menge des reflektierten Lichts und somit die Intensität der Reflexion vom jeweiligen Medium abhängig, auf die der Lichtstrahl trifft. Des Weiteren haben wir gehört, dass Gegenstände bzw. Materialien, die eine rauhe Oberflächenstruktur aufweisen, den einfallenden Lichtstrahl diffus zurückwerfen bzw. reflektieren. Sehen wir uns nun an einem Beispiel an, wie sich die Einstellungen im HomeNos auf das Reflexionsverhalten unserer Modelle bzw. Objekte auswirken. | ||
+ | |||
+ | Im nachfolgenden Beispiel sehen wir ein Modell eines Fasses welches von 1 bis 4 mit verschiedenen <b><font color="blue">Reflexionseinstellungen</font></b> belegt wurde, die Werte sind für Glanz = 0 und <b>Intensität =0</b>.<br> Die Buchstaben <b><font color="blue"> M: M: E:</font></b> stehen jeweils für die Werte <b><font size="3"><font color="blue">M=Min: - M:=Max: - E:=Edging</font></font></b> | ||
+ | |||
+ | <center>[[Datei:hmfile_hash_43497e98.png]]</center> | ||
+ | |||
+ | |||
+ | <b><font size="3">Reflektionswinkel:</font></b> | ||
+ | |||
+ | <center>[[Datei:defaultfresnelterms.jpg]]</center> | ||
+ | |||
+ | |||
+ | |||
+ | <b>Zuweisung der Reflektionswerte</b> | ||
+ | |||
+ | Im Auswahlfeld der "Reflektion" weisen wir unsere zuvor in den Grundeinstellungen vergebenen "Intensitätsstufen" (Min/Max/Edging) der Reflektion auf die ausgewählten .kon-Dateien zu: | ||
− | < | + | <center>[[Datei:4.modelleinstellungen-reflektion-auswahl.jpg]]</center> |
+ | == Specular == | ||
− | Das | + | Das spekulare Licht ist sozusagen der krönende Abschluss der Lichtberechnung. Jeder kennt die Glanzpunkte auf glatten Oberflächen (z.B. auf einer Billardkugel). Die Formel ähnelt der für diffuses Licht, allerdings streuen glatte Oberflächen weniger das Licht als stumpfe. Dadurch entsteht der bekannte Glanzpunkt. Mit dem Schieberegler können wir zunächst die Intensität des spekularen Lichtes bestimmen, um die Art des Materials (unbehandeltes Holz, Stein, Metall, Plastik, Glas usw.) auszudrücken. Die Standard-Einstellung des HomeNos liegt bei 0%. In diesem Fall wirken die Modelle absolut matt, weil der Dämpfungswert der Lichtstreuung extrem hoch ist. |
− | + | == Glanz == (Lichtkonzentration des Glanzpunktes) | |
− | |||
− | + | Beim Eingabefeld des Glanzes haben wir es mit dem sogenannten Beleuchtungsexponent zu tun, dessen Wert zwischen 0 und 255 liegen kann. Die geometrische Wirkung des Exponenten kann man sich ungefähr so vorstellen: Je größer der Glanzexponent wird, desto kleiner und deutlicher wird der Glanzpunkt und desto glatter wirkt die Oberfläche. Allgemein kann man sagen: Je größer der Glanz wird, desto mehr Licht wird direkt zum Auge gespiegelt und nicht gestreut. | |
− | + | ||
+ | == Intensität == | ||
+ | Prozentuale Einstellung der Intensität des Glanzpunktes. Diese verringern wir über das Verkleinern des Wertes bzw. vergrößern diese, indem wir größere Werte hinterlegen. Als Ergebnis sehen wir eine große (mattere) Ausdehnung des Glanzpunktes bzw. einen kleinen (stark reflektierenden) Glanzpunkt. | ||
+ | |||
+ | Die Einstellungen Glanz | ||
+ | |||
+ | <center>[[Datei:hmfile_hash_7a8bf67d.png]]</center> | ||
+ | |||
+ | == Diffuse == | ||
+ | |||
+ | Diffuses Licht wird auf alle Vertexe angewandt. Der Unterschied zu ambienten Licht ist, dass bei der Berechnung auch die Position des zu beleuchtenden Punktes eine Rolle spielt. Dadurch entsteht dann auch der räumliche Eindruck, die Plastizität. Das wichtigste an unserer Einstellung ist aber, dass wir eigentlich nicht die Diffusion des Lichts, vielmehr die Eigenschaften des Materials, hier explizit die Vertex-Helligkeit des Gitternetzes beeinflussen können. Worum geht es: Als die Essentials zu EEP entstanden sind und wir uns auch relativ sicher waren, dass die neue Grafik-Engine kommen wird, haben wir die Standard-Einstellung der Vertexfarbe beim RGB-Wert 200, 200, 200 angesiedelt, um die Polygone eines Modells überhaupt erst aufhellen, also ausleuchten zu können. Aus der Konstrukteurspraxis wissen wir jedoch, dass viele alte Modelle mit absolut weißen Vertexen gebaut wurden (RGB = 255, 255, 255) und auf die externe Ausleuchtung nicht mehr regieren können, weil man den absoluten Helligkeitswert von 255 nicht mehr aufhellen kann. Mit dem Schieberegler für das diffuse Licht können wir also die Helligkeit der Grundfarbe der Vertexe verändern, um das Modell zu exponieren, also der Lichteinwirkung auszusetzen. | ||
+ | |||
+ | Im nachfolgenden Bild sehen wir nun einen Teil des Fasses. Die Grundvertexfarben der Einzelpunkte des Fasses betragen R (Rot)=200, G(Gelb)=200, B(Blau)=200. Die Fässer sind nun mit dem Schieberegler "Diffuse" in der Reihenfolge: Links: -30% abgedunkelt 255 -(255x30) = ~ 170 Mitte: 0 (RGB=200) und Rechts: +30% aufgehellt 255 +(255x30) = ~ [339 theoretisch] -> Max ist allerdings 255. (Rahmen von 0= tiefschwarz bis 255=weiß) | ||
+ | |||
+ | <center>[[Datei:hmfile_hash_e6487907.png]]</center> | ||
+ | |||
+ | |||
+ | |||
+ | <b><font size="4"><font color="red">C) PP-Helligkeitsfaktor, Normals, DirectX</font></font></b> | ||
+ | |||
+ | |||
+ | === PP-Helligkeitsfaktor === | ||
+ | |||
+ | Bevor wir zur Helligkeit der Post-Processing-Methode kommen, sollte ansatzweise erklärt werden, was und wozu ein Post-Processing überhaupt gut ist. Die Grafikengine ab EEP 7.0 wird nur von modernen Grafikkarten dargestellt, die den Pixelshader 3.0 (und höher) unterstützen, womit man auch vereinfacht sagen kann: Je schneller, neuer, besser (und teurer) die Grafikkarte, umso schneller das Rendern in EEP - umgekehrt aber: Je älter und langsamer die Hardware, umso ernüchternder die Ergebnisse. Um dieser Zwickmühle zu entkommen gibt es seit EEP 7.0 mehre Optionen, die die Renderingmethode maßgeblich beeinflussen, darunter auch das sogenannte Post-Processing, welches viele optische Effekte steuert, oder gar ausschalten kann. Hierbei Spielen zwei, nachfolgende Faktoren eine große Rolle: | ||
+ | |||
+ | ::1. Der Pixelshader (wie der Name schon sagt) ist in der Lage die komplette Lichtberechnung für jeden einzelnen Pixel der Szenerie zu verarbeiten und auszugeben, womit er je nach eingestellter Auflösung eine ganze Menge an Daten zu verarbeiten hat. Um die Performance zu steigern (besser gesagt: um die zu berechnende Datenmenge zu reduzieren), kann man das Post-Processing ausschalten und die Rendering-Methode quasi auf einen Vertex-Shader umschalten, der das Licht nicht mehr für jeden Pixel, vielmehr für jede Polygonfläche errechnet. Hierbei muss man betonen, dass bei dieser Berechnung alle Normals (der teilnehmenden Vertexe des Polygons) gemittelt werden, wodurch die Modelle wesentlich kantiger erscheinen.<br> <font color="blue"><b>''WICHTIG:</b> Wenn das 3DFenster im HomeNos aktiv ist und Sie die [P]-Taste auf der Computertastatur drücken, wird das Post-Processing ausgeschaltet und die Ausleuchtung per Vertex berechnet!''</font> | ||
+ | |||
+ | ::2. Bei unserer neuen Grafikengine wird standardmäßig der sogenannte Bloom-Effekt verwendet (pseudo-HDR). Kurz angeschnitten: Es hat mit der Hintergrundbeleuchtung, dem Kontrastverhältnis und dem Einfluss der Lichteigenschaften auf die menschliche Pupille zutun, die hiermit simuliert werden. Durch die Ausschaltung der Postprozess-Methode werden mehrere Effekte, wie hier erwähntes Bloom-Effekt ausgeschaltet, was mitunter dazu führt, dass die Hintergrundstrahlung nicht gemittelt wird, die emitiven Lichtquellen ihre typische Aura verlieren, oder die nachgebildeten Lichtkegel die ausgeleuchteten Flächen nicht aufhellen. | ||
+ | |||
+ | Beim Rendering der Objekte mit, oder ohne das Post-Processing, kann es zu deutlichen Helligkeits- bzw. Kontrastunterschieden kommen. Das Erscheinungsbild der Modelle ohne der Verwendung der Post-Prozessing-Methode (wenn die Taste [P] gedrückt wurde), kann je nach Situation entweder überbelichtet, oder unterbelichtet wirken. Sollten Sie zwischen den beiden Renderingarten große Unterschiede bemerken (vor allem bei hellen und dunklen Elementen, die dicht beieinander stehen), können Sie diese mit dem „<b>P-P Helligkeitsfaktor</b>“ abmildern (dämpfen) und aufeinander abgleichen. Die Skala zur Abgleichung der Helligkeitskontraste reicht hier von 0.0 bis 1.0. Zur Veranschaulichung des Sachverhaltes (der Kontrastverhältnisse) möchte ich den Vergleich zwischen den digitalen Medien (links) und der tatsächlichen, menschlichen Wahrnehmung (rechts) zeigen, die durch die Verwendung zusätzlicher Post-Prozesse abgemildert werden. | ||
+ | |||
+ | <center>[[Datei:4.modelleinstellungen-pp-helligkeit.jpg]]</center> | ||
+ | |||
+ | <b>Abb.:</b> Extreme Kontrastunterschiede beim Einsatz von 256 Helligkeitsstufen (8 Bit) | ||
+ | |||
+ | |||
+ | |||
+ | === Optimalisiere nach Direct-X === | ||
+ | |||
+ | Bei dieser Option, die eigentlich immer benutzt werden sollte, werden die Vertexlisten des Objektes nach den allgemeinen Vorgaben von Direct-X optimiert, was die Verarbeitungsgeschwindigkeit der Daten in den Grafikkarten beschleunigen sollte. Bisher haben wir keine negativen Auswirkungen auf das Aussehen der konvertierten Modelle feststellen können, sollte jedoch beobachtet werden, dass mit der Geometrie, oder der Ausleuchtung der Modelle etwas nicht stimmt, k.nnte die Optimalisierung weggelassen werden. Zu der Funktionsweise der Optimalisierung bleibt soviel zu berichten, dass die Vertexlisten so umgebaut werden, dass die gemeinsamen Vertexe des Gitternetzes zusammengefasst werden können | ||
+ | |||
+ | |||
+ | === Einheitliche Normals === | ||
+ | Durch Setzen des Häkchens bei Vereinheitliche Normals wird die Funktion aktiv und unsere Einstellungen im Dialogfeld "Einheitliche Normals" werden ausgeführt. | ||
+ | |||
+ | |||
+ | |||
+ | <b><font color="red"><font size="4">D) Modell aktualisieren</font></font></b> | ||
+ | |||
+ | Durch klicken dieser Schaltfläche werden alle im Dialog der Modelleinstellungen vorgenommenen Änderungen im Modell aktiv und im 3D-Betrachter aktualisiert. | ||
+ | |||
+ | |||
+ | |||
+ | [http://wiki.eepshopping.de/index.php?title=Hauptseite_EEP_Wiki&redirect=no Zurück zur Startseite] |
Aktuelle Version vom 27. April 2017, 15:51 Uhr
Inhaltsverzeichnis
Modelleinstellungen
Über die Modelleinstellungen haben wir die Möglichkeit, Einstellungen und Parameter auf eine komplette *.kon-Datei anzuwenden. Im Dialog der Modelleinstellungen werden immer alle *.kon-Dateien angezeigt, die sich aktuell in unserem Objekt befinden. (vgl. Kapitel 2, Objekte). Die Modelleinstellungen rufen wir uns über die Schaltfläche in der oberen Leiste auf.
Liste der KON-Dateien
Wie oben bereits erwähnt werden im Dialog der Modelleinstellungen stets alle .kon-Dateien angezeigt, welche sich aktuell in unserem Objekt befinden. Welche .kon-Datei gerade in unserem Objekt aktiv und somit im 3D-Betrachter zu sehen ist, erkennen wir am gesetzten Haken links neben der Bezeichnung unserer jeweiligen .kon-Datei.
Durch Herausnahme des Hakens mit der LMT deaktivieren wir unsere jeweilige .kon und schließen sie somit aus der 3D-Darstellung aus. Rechts neben dem schwarzen Häkchen sehen wir in chronologischer Reihenfolge folgende Informationen zur jeweiligen *.kon.
#00[fortlaufende Nummer]
Id:01[aktuell der .kon zugeordnete Id.-Nummer]
I:01[aktuelle Anzahl an Instanzen]
T:018[aktuelle Anzahl an Dreiecken (von englisch T=Triangle)]
V:016[aktuelle Anzahl an Vertexen (Einzelpunkten)]
"Objekt01-Kon_005-...." [aktueller Name der .kon-Datei]
Im Feld Instanzen können wir die Einstellungen der jeweiligen Unterinstanz unserer .kon aufrufen Die Verwendung der Taste "Strg" und der "Hochtaste" in Verbindung mit der LMT lassen uns mehrere .kon Dateien gleichzeitig auswählen und somit für Einstellungsänderungen aktivieren.
Das Z-Offset (z-Buffering)
Durch den Modus des Z-Offset wird garantiert, das Flächen, die sehr eng voreinander liegen, auch in größerer Entfernung immer noch in der richtigen Reihenfolge gezeichnet werden. D.h., dass z.B. Fenster vor der Hauswand bleiben und nicht ganz oder teilweise dahinter verschwinden.
Dabei muss die vorne liegende Fläche im Dialog "Modelleinstellungen" mit Z-Offset versehen werden.
Einstellungen der KON-Dateien
In "Einstellungen der KON-Dateien" sehen wir die Eingabefelder "Einheitliche Normals", "Id", "Reflektion", und Einstellungen zum spekularen und diffusen Licht. Gehen wir nun der Reihe nach auf die einzelnen Eingabemöglichkeiten ein.
Einheitliche Normals
Unter "Einheitlich Normals" verstehen wir die Möglichkeit, Flächen, die in unseren .kon-Dateien in gewissen Winkeln zueinander stehen zu "vereinheitlichen" - d.h. die Winkel der einzelnen Konstrukte bzw...... Flächen innerhalb einer *.kon-Datei miteinander verrechnen zu lassen. Wir sehen uns dies nun an einem Beispiel an. In der Abb.1 sehen wir die Grundflächen eines Kegels bestehend aus 16 Außenflächen.
Abb.1: Kegel bestehend aus 16 einzelnen Dreiecken. Jedes Dreieck mit einem Öffnungswinkel von 22.5° ( 16 x[mal] 22.5° = 360°). Die Seitenlänge eines Dreiecks sei 100cm und die Höhe=h des Kegels im Mittelpunkt sei ebenfalls 100cm. Für den Kreis bekommen wir somit einen Durchmesser(d)von d=2 x r (Radius=Seitenlänge eines Dreiecks) = 2 x 100cm = 200cm.
In der nachfolgenden 3D-Ansicht sehen wir nun die einzelnen Flächen (der Dreiecke), die die Form des Kegels bilden. Wir können hier noch nicht von einem runden Kegel, sondern vielmehr von einem kantigen Gebilde sprechen, das man als 16-seitige Pyramide bezeichnen könnte. Da die Normale der Dreiecke noch nicht vereinheitlicht wurden, behandelt die Grafikengine jedes einzelne Dreieck als eine absolut eigenständige geometrische Figur.
Abb.2: 3D-Ansicht des Kegels. Die Funktion "Einheitliche Normals" ist noch nicht aktiv, d.h. die Normals bzw. die Winkel werden noch nicht miteinander verrechnet bzw. vereinheitlicht.
In der nächsten 3D-Ansicht sehen wir nun die Normalen eingeblendet und erkennen, daß sämtliche Normale einer jeweiligen Fläche in eine Richtung zeigen und somit innerhalb eines Dreiecks parallel zueinander stehen. Wir können zwar nicht alle Normale der Oberflächenpunkte sehen (dies würde auch keinen großen Sinn machen), dafür aber die Normale der Vertices (also der Eckpunkte der Dreiecke) anzeigen. Hierzu wird aus dem Menü des 3D-Betrachters "Anzeige-->Normals" ausgewählt.
Wenn wir uns die Normale des Kegels anschauen und durchzählen (man kann die angezeigten Normale verlängern, in dem die [SHIFT]- und die [F5]-Taste gleichzeitig gedrückt werden), so stellen wir fest, dass die Grafikengine tatsächlich 16 unabhängige Dreiecke mit insgesamt 48 Vertices berechnet, obwohl in der KON-Datei alle Dreiecke verbunden sind und in der Mitte einen gemeinsamen Vertex besitzen.
Es müssten demnach nur 17 Vertices sein! Was also geht hier vor?!
Abb.3: 3D-Ansicht des Kegels mit sichtbargemachten Normals. Der Öffnungswinkel zwischen den Normalen ist nun erkennbar, in welchem die 16 Dreiecke jeweils zueinander stehen.
Nun…, des Rätsels Lösung liegt in der Berechnungsart des Kegels, die in unserem Fall einseitig ist (und wir diese in unserem Tutorial weiterhin so belassen wollen).
Was heißt es aber konkret: eine einseitige Ausleuchtung"? Eine einseitige Ausleuchtung bedeutet, dass nur die Vorderseiten der Polygone auf das Licht reagieren und deren Rückseiten immer dunkel bleiben - auch für den Fall, dass die Lichtquelle so ausgerichtet ist, dass die Rückseiten bestrahl werden. Wann ist es der Fall? Nun, eigentlich ist es auch beim Kegel der Fall, weil ein typischer Kegel einen Boden, also eine Grundfläche besitz und von unten geschlossen ist. Ich habe den Boden aber absichtlich weggelassen, damit man in den Hohlraum des Kegels hineinschauen kann, ansonsten würden wir ja nicht sehen was im Inneren passiert. Da die "einseitige Ausleuchtung" erklärt wurde, sollten zugleich die anderen Arten der Ausleuchtung erklärt werden:
Eine "zweiseitige Ausleuchtung" bedeutet, dass sowohl die Aussenseiten, als auch die Innenseiten der Polygone auf das Licht reagieren. Dies funktioniert natürlich nur dann, wenn die Polygone beide Seiten besitzen, also nicht "backfacegecullt" sind. Diese Ausleuchtung eignet sich für alle offenen Flächen, die man sowohl von hinten, als auch von vorne betrachten kann. Ob das nun eine Gitterkonstruktion, ein Zaun, eine dünne Wand, oder ein Geländer ist - deren Konstruktion nur aus flachen Polygonen besteht – man kann sie alle von beiden Seiten betrachten und demnach auch beiderseitig ausleuchten.
Die dritte Art des Renderings heißt "Normal". Nun…, so ganz normal ist sie nicht und faktisch existiert sie im HomeNos nur deswegen, weil wir teilweise mit älteren Konstruktionen und Modellen zutun haben, die nicht nach der linkshändischen Formel gebaut wurden. Bei dieser Art der Ausleuchtung richtet sich das Licht nicht nach der Seite des Polygons (also vorne, oder hinten), vielmehr nach dessen Normalen. Das besondere dabei ist, dass wir (aufgrund der Bauweise der alten Modelle) der Grafikengine mitteilen können, dass sie – obwohl es sich eigentlich um die Rückseite des Polygons handelt – die Normale auf die gegenüberliegende Seite umlegen soll. Dabei werden die Normale umgepolt und sind auf der Rückseite zu sehen, obwohl sie laut der strengen Definition eines Normals dort nicht hingehören. (Die Vorderseite eines Polygons wird durch seinen Normal-Vektor bestimmt, drum kann man auch behaupten, dass wir in diesem Fall absichtlich gegen die Definition verstoßen – allerdings können wir dadurch Hunderte, wenn nicht Tausende von EEP-Konstruktionen retten...)
Nun kommen wir aber zu der eigentlichen Kuriosität: Warum haben wir plötzlich 48 anstatt 17 Vertices, wo man sie doch nachweislich abzählen kann? In der KON-Datei sind nur 17! Auch hierbei liegt der Grund in der möglichen (aber nicht korrekten) Bauweise der Modelle, bei der die Polygone nicht gedreht, sondern durch die Skalierung in der Z-Ebene um Minus Eins (-1) gestülpt werden können. Da die Normale der Dreiecke noch nicht normalisiert, also nicht vereinheitlicht wurden, so kann es durchaus passieren, dass eine KON-Datei (mit zwei, oder mehr Instanzen) Dreiecke aufweist, deren Normale (durch die Skalierung mit -1) in die "falsche" Richtung zeigen. Um dies herauszufinden, muss die Grafikengine jedes Dreieck einzeln abfragen und die Ausrichtung des Normalen untersuchen. Und hier fiel schon die konkrete Antwort: "Jedes Dreieck einzeln!"
Da wir es mit 16 Dreiecken zutun haben, so müsste der Normalisierungsprozess bei 22,5. gut zu sehen sein, denn 360°/ 16 = 22,5. Nun, wir versuchen es aber mit einem kleineren Wert und schauen uns an, ob etwas passiert…
In der Tat, bereits bei der Eingabe von 1. fängt der Pixelshader damit an, die Dreiecke miteinander zu verrechnen und spätestens bei der Eingabe von 23. muss der Fall eintreten, dass die Normale im unteren Bereich des Kegels miteinander verschmelzen, also einen Durchschnitt der Ausleuchtung von zwei benachbarten Dreiecken bilden (es sind nach wie vor 48 Vertices).
Unser Kegel sieht schon ganz rund aus, allerdings ist es uns noch nicht gelungen alle Normale des Kegels miteinander zu verrechnen, da der Winkel (23°) noch viel zu klein ist, damit die 16 Vertices an der Spitze einen Durchschnitt-Normal ergeben. Der Grund dafür liegt darin, dass wir bei unserem Kegel gegenüberliegende Dreiecke haben, deren Winkel zueinander etwas kleiner als 100° ist.
Wir rufen den Instanzen-Dialog auf und tragen beim Wert der Normal-Vereinheitlichung einen Winkel von 100°.
Durch die Winkelvereinheitlichung von 100° ist es uns endlich gelungen, sämtliche Normale des Kegels zu verschmelzen, womit an der Spitze nur noch ein, gemeinsamer Normal errechnet wird.
Id- Gruppenzuordnung
Im Feld Id können wir verschiedene *.kon-Dateien durch Vergabe derselben Identifikationsnummer einer gemeinsame Gruppen zuordnen. Gleiche Id`s vergeben wir in dem Fall, wenn mehrere *.kon-Dateien programmseitig als eine homogene Gruppe dargestellt und berechnet werden sollen. Nehmen wir als Bsp. an wir haben einen äußeren Kastenaufbau einer Lokomotive, der aus mehreren einzelnen *.kon-Dateien besteht. Für eine gute und einheitliche Darstellung des Kastenaufbaus möchten wir nun aber, dass die Einzel-*.kon`s programmseitig als eine, gemeinsame Datei behandelt werden. Um das zu erreichen versehen wir alle Einzel-*.kon-Dateien nun mit derselben Id-Nummer. Wir sehen uns dies nun an einem Beispiel an:
In den nachfolgenden Abbildungen sehen wir die 3D-Ansicht eines Kegels bestehend aus vier einzelnen .kon-Dateien
Abb.4.: Kegel ohne vereinheitlichte Normals und ohne einheitliche ID-Gruppen
Abb.5.: Kegel, gleiche ID-Gruppe (Id=200) vergeben an alle einzelnen .kon-Dateien des Würfels
Abb.6.: Kegel, gleiche ID-Gruppe (Id=200) vergeben an alle einzelnen .kon-Dateien des Würfels und Normals mit einem Winkel von 90Grad vereinheitlicht.
WICHTIG: Für Flächen nehmen wir für die Bildung von einheitlichen Id-Gruppen die Id = 200
Reflexion
Das Phänomen der Reflexion lässt sich am anschaulichsten an einem Spiegel beobachten. Trifft Licht auf einen Spiegel (Medium 2), wird sämtliches Licht reflektiert, wobei der Einfallswinkel (α alpha) des Lichts immer dem Ausfallwinkel entspricht. Dies ist der Idealfall einer Reflexion, den wir in Abb.1 am Lichteinfallwinkel und reflektierten Strahl beobachten können. Trifft Licht nun auf ein flüssiges (z.B. Wasser) oder ein lichtdurchlässiges Medium (wie z.B. eine Fensterscheibe), wird der Lichtstrahl abgelenkt bzw. gebrochen. Wenn Licht auf Gegenstände trifft, die für unsere Augen farbig erscheinen, tritt noch ein anderes spezielleres Phänomen auf. Die Oberfläche eines z.B blauen Pigments absorbiert bestimmte Anteile des Lichts. Ein Teil des Lichts wird remittiert und in unserem System Auge-Gehirn entsteht der Farbeindruck Blau. Hier haben wir es mit dem Phänomen der Remission zu tun.
Abb.1: Gerichtete Reflexion (Licht - reflektierter Strahl) und Abb.2: Diffuse Reflexion auf rauhen Oberflächen
Lichtablenkung in Glas od. flüssigen Medien (gebrochener Strahl)
Die Intensität der Reflexion, also die Menge des remittierten Lichts hängt von dem Medium (Medium 2) ab auf die das Licht trifft. Grenzflächen mit einer großen Rauheit relativ zur Wellenlänge reflektieren diffus. Dies ist in Abb.2 dargestellt. Enthält das Material nun auch viele Streuzentren, folgt die Reflexion dem Lambertschen Gesetz. Die Hauptrückstreuung erfolgt dann senkrecht zum Material, unabhängig von der Einstrahlungsrichtung. Beispiele sind Milch, Wandfarbe oder Papier. Bei diesen Medien würden wir umgangssprachlich von komplett matten Gegenständen bzw. Materialien sprechen. Bei Milch haben die Fetttropfen im Wasser die Größenordnung der Wellenlänge des sichtbaren Lichtes und bilden die Streuzentren für Lichtwellen, gleiches gilt für die Lufteinschlüsse zwischen den Fasern bei Papier.
Werte der Reflexion im HomeNos
Wie wir eben besprochen haben, ist die Menge des reflektierten Lichts und somit die Intensität der Reflexion vom jeweiligen Medium abhängig, auf die der Lichtstrahl trifft. Des Weiteren haben wir gehört, dass Gegenstände bzw. Materialien, die eine rauhe Oberflächenstruktur aufweisen, den einfallenden Lichtstrahl diffus zurückwerfen bzw. reflektieren. Sehen wir uns nun an einem Beispiel an, wie sich die Einstellungen im HomeNos auf das Reflexionsverhalten unserer Modelle bzw. Objekte auswirken.
Im nachfolgenden Beispiel sehen wir ein Modell eines Fasses welches von 1 bis 4 mit verschiedenen Reflexionseinstellungen belegt wurde, die Werte sind für Glanz = 0 und Intensität =0.
Die Buchstaben M: M: E: stehen jeweils für die Werte M=Min: - M:=Max: - E:=Edging
Reflektionswinkel:
Zuweisung der Reflektionswerte
Im Auswahlfeld der "Reflektion" weisen wir unsere zuvor in den Grundeinstellungen vergebenen "Intensitätsstufen" (Min/Max/Edging) der Reflektion auf die ausgewählten .kon-Dateien zu:
Specular
Das spekulare Licht ist sozusagen der krönende Abschluss der Lichtberechnung. Jeder kennt die Glanzpunkte auf glatten Oberflächen (z.B. auf einer Billardkugel). Die Formel ähnelt der für diffuses Licht, allerdings streuen glatte Oberflächen weniger das Licht als stumpfe. Dadurch entsteht der bekannte Glanzpunkt. Mit dem Schieberegler können wir zunächst die Intensität des spekularen Lichtes bestimmen, um die Art des Materials (unbehandeltes Holz, Stein, Metall, Plastik, Glas usw.) auszudrücken. Die Standard-Einstellung des HomeNos liegt bei 0%. In diesem Fall wirken die Modelle absolut matt, weil der Dämpfungswert der Lichtstreuung extrem hoch ist.
== Glanz == (Lichtkonzentration des Glanzpunktes)
Beim Eingabefeld des Glanzes haben wir es mit dem sogenannten Beleuchtungsexponent zu tun, dessen Wert zwischen 0 und 255 liegen kann. Die geometrische Wirkung des Exponenten kann man sich ungefähr so vorstellen: Je größer der Glanzexponent wird, desto kleiner und deutlicher wird der Glanzpunkt und desto glatter wirkt die Oberfläche. Allgemein kann man sagen: Je größer der Glanz wird, desto mehr Licht wird direkt zum Auge gespiegelt und nicht gestreut.
Intensität
Prozentuale Einstellung der Intensität des Glanzpunktes. Diese verringern wir über das Verkleinern des Wertes bzw. vergrößern diese, indem wir größere Werte hinterlegen. Als Ergebnis sehen wir eine große (mattere) Ausdehnung des Glanzpunktes bzw. einen kleinen (stark reflektierenden) Glanzpunkt.
Die Einstellungen Glanz
Diffuse
Diffuses Licht wird auf alle Vertexe angewandt. Der Unterschied zu ambienten Licht ist, dass bei der Berechnung auch die Position des zu beleuchtenden Punktes eine Rolle spielt. Dadurch entsteht dann auch der räumliche Eindruck, die Plastizität. Das wichtigste an unserer Einstellung ist aber, dass wir eigentlich nicht die Diffusion des Lichts, vielmehr die Eigenschaften des Materials, hier explizit die Vertex-Helligkeit des Gitternetzes beeinflussen können. Worum geht es: Als die Essentials zu EEP entstanden sind und wir uns auch relativ sicher waren, dass die neue Grafik-Engine kommen wird, haben wir die Standard-Einstellung der Vertexfarbe beim RGB-Wert 200, 200, 200 angesiedelt, um die Polygone eines Modells überhaupt erst aufhellen, also ausleuchten zu können. Aus der Konstrukteurspraxis wissen wir jedoch, dass viele alte Modelle mit absolut weißen Vertexen gebaut wurden (RGB = 255, 255, 255) und auf die externe Ausleuchtung nicht mehr regieren können, weil man den absoluten Helligkeitswert von 255 nicht mehr aufhellen kann. Mit dem Schieberegler für das diffuse Licht können wir also die Helligkeit der Grundfarbe der Vertexe verändern, um das Modell zu exponieren, also der Lichteinwirkung auszusetzen.
Im nachfolgenden Bild sehen wir nun einen Teil des Fasses. Die Grundvertexfarben der Einzelpunkte des Fasses betragen R (Rot)=200, G(Gelb)=200, B(Blau)=200. Die Fässer sind nun mit dem Schieberegler "Diffuse" in der Reihenfolge: Links: -30% abgedunkelt 255 -(255x30) = ~ 170 Mitte: 0 (RGB=200) und Rechts: +30% aufgehellt 255 +(255x30) = ~ [339 theoretisch] -> Max ist allerdings 255. (Rahmen von 0= tiefschwarz bis 255=weiß)
C) PP-Helligkeitsfaktor, Normals, DirectX
PP-Helligkeitsfaktor
Bevor wir zur Helligkeit der Post-Processing-Methode kommen, sollte ansatzweise erklärt werden, was und wozu ein Post-Processing überhaupt gut ist. Die Grafikengine ab EEP 7.0 wird nur von modernen Grafikkarten dargestellt, die den Pixelshader 3.0 (und höher) unterstützen, womit man auch vereinfacht sagen kann: Je schneller, neuer, besser (und teurer) die Grafikkarte, umso schneller das Rendern in EEP - umgekehrt aber: Je älter und langsamer die Hardware, umso ernüchternder die Ergebnisse. Um dieser Zwickmühle zu entkommen gibt es seit EEP 7.0 mehre Optionen, die die Renderingmethode maßgeblich beeinflussen, darunter auch das sogenannte Post-Processing, welches viele optische Effekte steuert, oder gar ausschalten kann. Hierbei Spielen zwei, nachfolgende Faktoren eine große Rolle:
- 1. Der Pixelshader (wie der Name schon sagt) ist in der Lage die komplette Lichtberechnung für jeden einzelnen Pixel der Szenerie zu verarbeiten und auszugeben, womit er je nach eingestellter Auflösung eine ganze Menge an Daten zu verarbeiten hat. Um die Performance zu steigern (besser gesagt: um die zu berechnende Datenmenge zu reduzieren), kann man das Post-Processing ausschalten und die Rendering-Methode quasi auf einen Vertex-Shader umschalten, der das Licht nicht mehr für jeden Pixel, vielmehr für jede Polygonfläche errechnet. Hierbei muss man betonen, dass bei dieser Berechnung alle Normals (der teilnehmenden Vertexe des Polygons) gemittelt werden, wodurch die Modelle wesentlich kantiger erscheinen.
WICHTIG: Wenn das 3DFenster im HomeNos aktiv ist und Sie die [P]-Taste auf der Computertastatur drücken, wird das Post-Processing ausgeschaltet und die Ausleuchtung per Vertex berechnet!
- 1. Der Pixelshader (wie der Name schon sagt) ist in der Lage die komplette Lichtberechnung für jeden einzelnen Pixel der Szenerie zu verarbeiten und auszugeben, womit er je nach eingestellter Auflösung eine ganze Menge an Daten zu verarbeiten hat. Um die Performance zu steigern (besser gesagt: um die zu berechnende Datenmenge zu reduzieren), kann man das Post-Processing ausschalten und die Rendering-Methode quasi auf einen Vertex-Shader umschalten, der das Licht nicht mehr für jeden Pixel, vielmehr für jede Polygonfläche errechnet. Hierbei muss man betonen, dass bei dieser Berechnung alle Normals (der teilnehmenden Vertexe des Polygons) gemittelt werden, wodurch die Modelle wesentlich kantiger erscheinen.
- 2. Bei unserer neuen Grafikengine wird standardmäßig der sogenannte Bloom-Effekt verwendet (pseudo-HDR). Kurz angeschnitten: Es hat mit der Hintergrundbeleuchtung, dem Kontrastverhältnis und dem Einfluss der Lichteigenschaften auf die menschliche Pupille zutun, die hiermit simuliert werden. Durch die Ausschaltung der Postprozess-Methode werden mehrere Effekte, wie hier erwähntes Bloom-Effekt ausgeschaltet, was mitunter dazu führt, dass die Hintergrundstrahlung nicht gemittelt wird, die emitiven Lichtquellen ihre typische Aura verlieren, oder die nachgebildeten Lichtkegel die ausgeleuchteten Flächen nicht aufhellen.
Beim Rendering der Objekte mit, oder ohne das Post-Processing, kann es zu deutlichen Helligkeits- bzw. Kontrastunterschieden kommen. Das Erscheinungsbild der Modelle ohne der Verwendung der Post-Prozessing-Methode (wenn die Taste [P] gedrückt wurde), kann je nach Situation entweder überbelichtet, oder unterbelichtet wirken. Sollten Sie zwischen den beiden Renderingarten große Unterschiede bemerken (vor allem bei hellen und dunklen Elementen, die dicht beieinander stehen), können Sie diese mit dem „P-P Helligkeitsfaktor“ abmildern (dämpfen) und aufeinander abgleichen. Die Skala zur Abgleichung der Helligkeitskontraste reicht hier von 0.0 bis 1.0. Zur Veranschaulichung des Sachverhaltes (der Kontrastverhältnisse) möchte ich den Vergleich zwischen den digitalen Medien (links) und der tatsächlichen, menschlichen Wahrnehmung (rechts) zeigen, die durch die Verwendung zusätzlicher Post-Prozesse abgemildert werden.
Abb.: Extreme Kontrastunterschiede beim Einsatz von 256 Helligkeitsstufen (8 Bit)
Optimalisiere nach Direct-X
Bei dieser Option, die eigentlich immer benutzt werden sollte, werden die Vertexlisten des Objektes nach den allgemeinen Vorgaben von Direct-X optimiert, was die Verarbeitungsgeschwindigkeit der Daten in den Grafikkarten beschleunigen sollte. Bisher haben wir keine negativen Auswirkungen auf das Aussehen der konvertierten Modelle feststellen können, sollte jedoch beobachtet werden, dass mit der Geometrie, oder der Ausleuchtung der Modelle etwas nicht stimmt, k.nnte die Optimalisierung weggelassen werden. Zu der Funktionsweise der Optimalisierung bleibt soviel zu berichten, dass die Vertexlisten so umgebaut werden, dass die gemeinsamen Vertexe des Gitternetzes zusammengefasst werden können
Einheitliche Normals
Durch Setzen des Häkchens bei Vereinheitliche Normals wird die Funktion aktiv und unsere Einstellungen im Dialogfeld "Einheitliche Normals" werden ausgeführt.
D) Modell aktualisieren
Durch klicken dieser Schaltfläche werden alle im Dialog der Modelleinstellungen vorgenommenen Änderungen im Modell aktiv und im 3D-Betrachter aktualisiert.