Ich versuche zu verstehen, warum Netze, die in 3D Studio (Modifikatoren / Glättung) geglättet werden, vor oder nach diesem Prozess dieselbe Anzahl von Scheitelpunkten / Flächen sowie genau dieselbe Geometrie aufweisen.
Im folgenden Beispiel haben beide Netze 32 Eckpunkte und 60 Flächen.
Obwohl ich Erfahrung in der Programmierung (c ++ und c #) habe, bin ich ein ziemlicher Anfänger in der Computergrafik. Daher erwartete ich, dass das geglättete Aussehen eines geglätteten Netzes zusätzliche Eckpunkte erfordern würde, dh eine Unterteilung von Dreiecken, um ein detaillierteres endgültiges Netz zu erhalten. Dies scheint jedoch nicht der Fall zu sein.
Deshalb frage ich:
1) Wie ist die Glättung möglich, ohne die Detaillierung der Netzgeometrie zu erhöhen?
2) Erhöht die Glättung zumindest den zum Speichern des neuen Netzes zugewiesenen / verwendeten Speicher im Vergleich zum ursprünglichen?
Erklärungen sind sehr willkommen, aber auch Referenzen (akademisch oder nicht) sind willkommen.
Antworten:
Glatt in diesem Fall lassen die Oberflächennormalen an Scheitelpunkten auf die gleiche Weise zeigen, wenn sie interpoliert werden, sehen sie glatt aus. Meshsmooth würde Eckpunkte hinzufügen.
1) Wie ist die Glättung möglich, ohne die Detaillierung der Netzgeometrie zu erhöhen?
Menschliche Augen können die Krümmung nur an den Rändern von Objekten sehen. Sie können lediglich die Glätte approximieren und die Gradientensteigung verarbeiten. Ein kontinuierliches Feld verleiht also einen Hauch von Glätte. Das Auge ist jedoch äußerst empfindlich gegenüber plötzlichen Farbveränderungen und interpretiert dies als harte Falte.
Durch Interpolation der Scheitelpunktnormalen erhält Ihre Oberfläche das Aussehen eines reibungslosen Fließens. Da diese Normale zur Berechnung der endgültigen reflektierten Farbe verwendet wird, erhalten Sie ein glattes Farbfeld.
Bild 1 : Eine flach schattierte Normalen im Vergleich zu den Normalen einer glatten Interplation. Die schwarzen Normalen liegen auf einem Scheitelpunkt. Die farbigen werden interpoliert.
Es gibt nichts, was besagt, dass wir eine lineare Interpolation durchführen müssen. In der Tat können wir durch Störung der Normalen dazu führen, dass die flache Oberfläche ihr Aussehen ändert. So funktionieren Bump Mapping und normales Mapping. Der Effekt kann überzeugend sein, es sei denn, die Oberflächenkante spielt eine zu große Rolle an der Stelle, an der die Illusion bricht.
Bild 2 : eine flache schattierte Oberfläche (Rückseite), eine glatte schattierte Oberfläche (Mitte) und eine abgebildete glatte Normalen. Die Illusion einer welligen Oberfläche bricht, weil die Kante im Bild eine so herausragende Rolle spielt, dass Sie stattdessen die Normalen erhöhen könnten
2) Erhöht die Glättung zumindest den zugewiesenen Speicher
Schwer zu sagende Dinge über die zugrunde liegende Grafik-Engine. Die Normalen müssen ohnehin auf die Grafikkarte übertragen werden. Diese Daten werden höchstwahrscheinlich zwischengespeichert, können jedoch (in beiden Fällen) im laufenden Betrieb berechnet werden.
Da Max Glättungsgruppen verwendet, scheint mir die Speichernutzung unabhängig davon konstant zu sein. Schwer zu sagen, selbst wenn es nicht zwischengespeichert ist, würde es keinen großen Unterschied machen. Es macht den Shader winzig ein bisschen komplizierter, aber nur höchstwahrscheinlich ist diese Komplexität vorhanden, ob Sie ihn verwenden oder nicht.
quelle