Jump to content

Blender: Unterschiede zwischen Smooth- und Flat-Shading


Empfohlene Beiträge

Hallo,

bei der Prüfung aktueller 3D-Modelle zur Freigabe in den Online-Katalog ist mir bei manchen Modellen aufgefallen, dass kein Smooth-Shading verwendet wird:

Blender.jpg.60b748d85e3afc64867d93e5b3ecf430.jpg

Da diese Einstellung nicht nur einen Effekt auf die Optik, sondern auch auf die Geometrie und somit auf die Performance hat, möchte ich mit diesem Beitrag auf die Thematik aufmerksam machen.

5a13308a3182d_Smoothvs_Flat.thumb.jpg.567d3931a8cfcda6c34d2eb331d867de.jpg

Im Bild oben ist beides mal die gleiche Kugel zu sehen, links mit Shading "Smooth" und rechts mit Shading "Flat". Während die Polygonanzahl identisch ist, unterscheidet sich die Anzahl der Eckpunkte (Vertices) stark.

Warum ist das so? Das liegt an der Art, wie Grafikkarten mit geometrischen Daten arbeiten. Ein Vertex besteht auf der Grafikkarte immer aus der Summe der Einzelkomponenten, in diesem Fall sind das die Position und der Normalenvektor, der für die Lichtberechnung herangezogen wird. Im Smooth-Fall wird der Normalenvektor für einen Eckpunkt als Mittelwert der angrenzenden Flächen berechnet, im Flat-Fall bekommt jede Fläche einen eigenen Normalenvektor. Da ein Eckpunkt immer nur einen Normalenvektor besitzen kann, müssen bei einer Kugel alle Eckpunkte dupliziert werden, die die gleiche Position, aber unterschiedliche Normalenvektoren besitzen.

Blender selbst zeigt diese Duplizierung nicht an, weil Blender intern die Positionen und Normalenvektoren trennt. Erst beim Export findet die Duplizierung statt.

Was bedeutet das für euch?

  • Entgegen dem ersten Eindruck führt die Option "Smooth" immer zu weniger Eckpunkten als die Option "Flat"
  • Besitzt ein Objekt sowohl runde als auch eckige Geometrie, ist es sinnvoll, das Objekt in zwei Objekte aufzutrennen, eines mit Smooth-Shading und eines mit Flat-Shading. Alternativ kann auch der "Edge Split"-Modifikator zu guten Ergebnissen führen.

Probiert es bitte einmal bei euren Modellen aus. Diese Smooth/Flat-Logik gibt es auch in anderen 3D-Programmen, bei 3D Studio Max heißt sie z.B. "Smoothing Groups", der technische Hintergrund ist dabei der gleiche. Eventuell spart ihr dadurch einige Eckpunkte ein, was für die Performance des Studios förderlich wäre.

Viele Grüße,

Neo

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo Neo,

das ist  so gesehen eine überraschende Erkenntnis, danke dafür.

Problem: es wird wohl kaum nur runde oder nur eckige Modelle geben, und leider kann man die "smoothen" nicht immer von den "flachen" trennen. Wenn man aber genau dafür dann die Funktion (Modifier) "Edge Split" einsetzt, damit die flachen Bereiche im "smoothen" Objekt wieder flach dargestellt werden, erhöht sich die Zahl der Eckpunkte, genau genommen wird die Zahl der betroffenen Eckpunkt verdoppelt, glaube ich.

Aber da Blender die Zahl tatsächlich nicht anzeigt, werde ich das mal probieren, auch mit der strikten AUfteilung in flache und smoothe Bereiche...

Gruß
Porrey61

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo Porrey61,

habe bisher sehr wenig mit Blender gearbeitet und habe ein kleines Problem mit 'Flat' und 'Smooth'. Wenn ich einen Quader mit runden Ecken (5-6 Flächen) auf 'Smooth' setze, bekomme ich häßliche Schatten, auch wenn mit Edge-Split die runden Ecken vom übrigen Objekt trenne.
Arbeite momentan mit Blender 2.79. Wenn ich mich recht erinnere, war in den sehr alten Blender-Versionen der Smooth-Effekt durch Parameter-Eingabe steuerbar. Suche in der 2.79er bisher vergeblich danach.

Wäre hier um einen Rat sehr verlegen.

Gruß Seehund

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo @seehund,

kann hier (vom Arbeitsrechner) nur gedanklich mitmachen, genauer erst heute abend: Dass der Smooth-Effekt steuerbar wäre, ist mir neu. Steuerbar ist der Edge-Split-Effekt - der dafür sorgt, was trotz Smooth-Effekt flach bleiben soll, dem kannst du sagen (direkt in den Einstellungen des Modifiers) ab welchem Winkel die Split-Funktion wirken soll. Ich glaube voreingestellt ist 30° - die muss ich aber auch in der Regel höher ziehen.

Übrigens macht dieser Edge-Split-Modifier genau das, was @Neo oben beschrieben hat mit "die runden von den flachen Meshes trennen". Nachdem du den Edge-Split-Modifier angewendet hast (apply), stellst du fest, dass sich z.B. mit der Taste <L> nicht mehr alle Meshes auswählen lassen, weil der Modifier tatsächlich die flachen und die zu "smoothenden" Flächen voneinander getrennt hat. Deshalb erhöht sich dabei auch die Anzahl der Eckpunkte, weil die sich genau an den "aufgetrennten" Nähten versdoppeln. Wenn du mit <A> alles markierst und dann "doppelte Eckpunkte entfernen" (remove doubles - oder so) dann siehst du ganz oben in der Leiste, wie viele Eckpunkte gelöscht wurden. Dann ist auch der gesamte Körper wieder "smooth".

Sollte ich da jetzt nicht ganz richtig beschrieben haben, melde ich mich heute abend nochmal vom Heim-PC.

Gruß
Porrey61

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo Porrey61,

hatte ich mir fast schon so gedacht. Leider sind die Flächen nicht immer 100% plan. Dadurch kommen ja diese blöden Schatten bei 'Smooth'. Bei AC3D und Max treten diese Probleme nicht auf, das die Schattierung beim Smooth-Effekt abschaltbar ist. Werde versuchen die Rundungen als Extra-Objekt einzubauen.

Gruß Seehund

..... habe die abgerundeten Ecken als Extra-Objekt in den Fahrstand eingefügt und auf 'Smooth' gesetzt. Funktioniert, aber ist ein Menge Extraarbeit an dem Modell.

Bearbeitet von seehund
Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo @seehund,

nun wird es ja sehr speziell, vlt. sollten wir da für Blender noch ein neues Thema aufmachen, auch wäre es vlt. hilfreich, wenn man das betreffende Objekt mal "sehen" könnte.

Falls das für dich nicht neu ist, dann sorry, aber folgendes: wenn eine Fläche nicht plan ist (aber in einer der Achsen gut ausgerichtet), dann im Edit-Modus alle Punkte der Fläche markieren (also die ganze Fläche) und dann in der entsprechenden Achse auf 0 skalieren <S> dann <X, Y, oder Z> dann <0>. Dann ist die Fläche in der Ausrichtung garantiert plan.

Gruß
Porrey61

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo Porrey61,

eine Triangulation aller Flächen brachte auch kein zufriedenstellendes Ergebnis, obwohl ein Dreieck immer eben sein sollte. Auch eine Ausrichtung der Flächen exakt auf 4 Stellen hinterm Komma hilft nicht viel. Um bei einem sehr kompliziertem Modell alle Flächen auf Achse auszurichten und wieder passend zusammenzuführen, ist zwar nicht unmöglich, jedoch käme dann noch nicht einmal 1 Modell im Jahr zustande.
Der Schalter 'ohne Schatte darstellen' ist zwar noch vorhanden, zeigt aber keine Funktion on gesetzt oder nicht.

Habe jetzt die 10 runden Ecken ausgeklinkt, und als neues Objekt mit 'Smooth' eingesetzt. Nun sieht es gut aus.

Diese Probleme hätte ich mit dem Max nicht, aber mit dessen Exportergebnis entspräche mein jetzt in Arbeit befindliches Modell nicht mehr den Anforderungen vom MBS V4.

Gruß Seehund

Link zu diesem Kommentar
Auf anderen Seiten teilen

  • 4 Wochen später...

Hallo Easy,

klasse gemacht, die ersten Entwürfe gefallen mir, auch wenn ich sie mir erst einmal nur grob angeschaut habe. Eventuell bekommen noch mehr Leute Lust zum Testen, wenn du eine kleine Beispielanlage als Entwurf veröffentlichst, auf der alle deine Test-Modelle bereits vorliegen.

Eine Frage zu deinem Modell habe ich, verwendest du in Blender die Smooth-Option, da die Lok noch einige sichtbare Abstufungen besitzt?

Smooth.thumb.jpg.a772e9dbe6fd19dee496aaaf9e64e90d.jpg

Viele Grüße,

Neo

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo Neo,

... die Lok sieht mit "smooth" (rechts) schon glatter aus...
5a36919ac8962_Bild2.thumb.jpg.ba652e13becfb4d4d6982fef3bacb656.jpg

... allerdings wenn ich sie um 90 Grad drehe gibt es einen Schatten, der mir nicht so gehr gefällt...
5a3691ed06189_Bild2a.thumb.jpg.1f77bf8f9bdaffa64eab63f45cceb3ba.jpg

... in Blender kann ich den den Winkel für "smooth" ("Objektdaten" -> "Normalien" -> "Auto Weichzeichnen" -> "Winkel") zwar einstellen...
5a3695997dde3_Bild2b.jpg.769c6e334065847e030b570e67d32fc2.jpg

...aber der . x Exporter berücksichtigt diese Einstellung irgendwie nicht (oder das MBS versteht es nicht?)... egal was ich einstelle, es sieht immer so aus als ob die "Grundeinstellung" übertragen wird (die liegt leider bei 180 Grad)...
5a3695ad7759a_Bild2c.jpg.a25ec82ffb82471f54c41d408b03c461.jpg

Gruß
EASY

 

Bearbeitet von EASY
Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo @EASY,

die EInstellung, die du unter "Objectdata" benutzt ("AutuSmooth" - Autoweichzeichnen) ist ausschließlich eine (vorab-) Ansichtssache in Blender. Damit der Smooth-Effect auch exportiert wird, musst du ihn hier auf das gesamte Object anwenden

Bild3.jpg.9cbfe3447ce83dcc606fbf79112fc480.jpg

Um nun die Teile davon auszuschließen, welche doch flach bleiben sollen, gibt es 2 Wege. Den einen schlägt dir @SputniKK vor, der "Edge Split Modifier"

Bild4.jpg.21a175e759aee8dcce793ee60e1e5cf2.jpg

Hier kannst du dann auch den Winkel angeben, ab wann der Modifier wirken soll - dies würde auch beim Export mit berücksichtigt (vor dem Export unbedingt die Taste "Apply" - "Anwenden", damit der Modifier auch exportiert wird).

Bild5.jpg.535bd8b7f755213c0f4e85eeae7580c1.jpg

Ich bevorzuge aber inzwischen die Version, die @Neo vorgeschlagen hat: Alle Flächen eines Objects, welche weichgezeichnet werden sollen, markieren, mit Taste <P> ein eigenständiges Object erstellen und dieses Object komplett smoothen. Das übrig gebliebene Object komplett auf flat lassen. Genau genommen macht der "Edge Split Modifier" nichts anderes, aber mit der eigenen Auswahl der zu smoothenden Flächen entfällt die nervige Einstellung des richtigen Winkels, was oft auch gar nicht zufriedenstellend funktioniert.

Gruß
Porrey61

 

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo SputniKK, Hallo Porrey61,

... danke für Eure Hinweise.

Mit dem "Edge Split Modifier" muß ich noch etwas experimentieren... hab bei mir bisher keine Auswikungen auf die Darstellung... egal ob ich ihn direkt ausführe oder beim Export...
 

vor 23 Stunden schrieb Porrey61:

Ich bevorzuge aber inzwischen die Version, die @Neo vorgeschlagen hat: Alle Flächen eines Objects, welche weichgezeichnet werden sollen, markieren, mit Taste <P> ein eigenständiges Object erstellen und dieses Object komplett smoothen. Das übrig gebliebene Object komplett auf flat lassen.

... nach einigen Experimenten habe ich festgestellt, daß es auch im Edit-Mode geht Teilflächen weich darzustellen... so bleibt das Modell "am Stück" erhalten und ich muß die Teilobjekte bei eventuellen Änderungen nicht erst wieder zusammenführen...
5a381cd130a09_Bild11.thumb.jpg.1f09bb7c0603c25a569295a2be306903.jpg

... mit ganz brauchbarem Ergebnis... (im Bild rechts)
5a381d00bf69b_Bild10.thumb.jpg.43d7dd889cda230e68de50490a0353da.jpg

Ich habe mal noch eine halben Versuch dazu gemacht...
5a381d4db67b5_Bild12.thumb.jpg.f950601a20a27d36a7020b56e1c396d3.jpg

... dann wird auch der Übergang zum Dach weicher dargestellt...(Im Bild rechts)
5a381d9f15807_Bild13.thumb.jpg.3ae78d9382a06fe2a2f27bf28b97a980.jpg

... das einzige was ich nicht verstehe... warum gibt es unter bestimmten Betrachtungswinkeln den unschönen Schatten auf dem Dach...
... und vor allen... warum immer nur auf der Dachfläche???
... selbst wenn ich das Modell vorher in Blender oder hinterher im MBS auf die Seite lege...

5a381e27b97a5_Bild14.thumb.jpg.e1c8d539d2b72c6cf173c77e69da5aa2.jpg

Anmerkung an Neo oder einen Moderator:

Da es nun doch etwas speziell geworden ist, würde ich es für sinnvoll erachten, wenn die letzten Beiträge (etwa ab der Frage von Neo) nach "Modellbau mit externen Programmen" unter einem neuen Thema "Weiche Flächen in Blender" oder so ähnlich ausgelagert würden... wäre so für interessierte Anwender leichter zu finden...

Gruß
EASY

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo @EASY,

einen Vorschlag habe ich noch: Beim Bahnsteig des Bahnhof Tannau hatte ich auch mit einer Fläche ein Problem, welches ich nicht beseitigen konnte, weil ich nicht wusste, woran es lag. (Obwohl alle Punkte auf einer Ebene lagen und die Fläche mit Untersteilungen absolut plan war, zeigte sie im Modell an den Unterteilungen Falten). Ich habe lange und viel ausprobiert und bin am Ende zu folgendem Gedanken gekommen: Wenn nichts hilft, dann lösche das "defekte" Element und erstelle es neu (man kann ja verschieden Versionen des Modells speichern).

Im Fall deiner Magnetschwebebahn würde ich die in Fahrtrichtung rechts liegende komplette Hälfte des Modells (hier ist ja das schattierte Dach) löschen (Bearbeitung der Vertices, von vorn gesehen gesamte linke Hälfte - außer die direkt auf der Mittellinie befindlichen Vertices löschen). Auf den verbleibenden rechten Körper deines Modells den Mirror-Modifier (spiegeln auf der X-Achse) anwenden. Taste <Apply> "Anwenden" nicht vergessen.

Ich baue meine Modelle immer mit dem Mirror-Modifier, im Falle des VT 2.09 sogar in X- und Y-Richtung, das geht bei deinem Modell natürlich nicht.

Gruß
Reinhard "Porrey61" Porazik

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo Neo,

habe den gleichen Effekt wie Easy und dies sogar bei einer Fläche( siehe Cockpit-Ansicht der V60 vordere, untere Fläche). Normalen sind überprüft. die Wände des Cockpits haben alle die gleiche Textur und trotzdem ist der Farbunterschied (oder Schatten)  rechts und links des Steuerpults doch sehr deutlich.

Es liegt wohl an Blender und dem MBS X-Eporter. Siehe hier:

Vergleich.thumb.jpg.494f84273dff71d430215c57b7ef3ef6.jpg

Links Blender, rechts AC3D oder Max. Es handelt sich hier um das gleiche Modell ohne irgendeine Änderung. Auch sind alle Normalen nach aussen.

Erst nach einer sehr, sehr  aufwendigen Nachbearbeitung in Blender war ein zufriedenstellendes Ergebnis zu erreichen.

Gruß Seehund

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo,

vor 13 Stunden schrieb Neo:

im Edit-Mode kannst du dir die Normalen anzeigen lassen:

Normals.jpg.5c28452c1d6240cd0be1bf692f6e4f61.jpg

Es macht den Eindruck, als würden am hinteren Ende die Normalen nicht mehr nach oben zeigen, wodurch so ein Farbverlauf zu erklären wäre.

... richtig! :) (Aha-Moment)...
...allerdings muß man nicht die Normalien der Flächen sondern die Normalien der Eckpunke die zu einer Fläche gehören zueinander betrachten.


5a396b1921999_Bild20.jpg.6aab5fb08f51d2f0cd69466abc83bfdb.jpg

... und nun weiß ich auch warum der "Edge Split" Modifikator micht funktioniert hat... geht (natürlich) nur in Verbindung mit "Smooth":$

... also habe ich mal die Kanten geteilt... und der Schatten ist tatsächlich weg:)
5a396c5fae45c_Bild22.jpg.a51e536eedac4f6f76ab8065b9e08ee3.jpg

... und im Vergleich ist das Modell schon viel glatter...
5a396ca00ffd7_Bild21.thumb.jpg.71f720e04d2190dec8618cc636b273f5.jpg

nebenher bin ich noch von 8808auf 5628 Eckpunkte gekommen... ist ja schon fast schon so gut wie eine LOD-Stufe...9_9
... und das ohne irgend etwas am Modell zu ändern...;)

Gruß
EASY

 

 

Bearbeitet von EASY
Link zu diesem Kommentar
Auf anderen Seiten teilen

Erstelle ein Benutzerkonto oder melde dich an, um zu kommentieren

Du musst ein Benutzerkonto besitzen, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen.

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde dich hier an.

Jetzt anmelden
×
×
  • Neu erstellen...