PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Displacement Mapping = Polynome Flächen


egdusp
2002-08-12, 00:25:50
Habe mir gerade das nVidia Interview auf http://www.within3d.ch/index.php?show=articles&type=showarticle&id=28&page=2&usr=a8bef81cfa58d6f90c5216a5b0440edf angsehen. Dabei wurde auf die Nachteile von N-Patches eingegangen. Bezieht sich das auch auf Displacement Mapping?
Ich dachte Polynome Flächen wären so ähnlich wie DM, d.h. unendliche (sofern man die Farbübergänge der DM Textur bilinear betrachtet, sind sie auch unendlich fein) Genauigkeit und adaptive Polygonerzeugung, je nach Entfernung.

Kann mir bitte jemand den Unterschied zwischen beiden Verfahren erklären.
Gibt es schon Anwendnugsbeispiele für Polynome Flächen in Spielen oder zumindest Techdemos?

mfg
egdusp

Xmas
2002-08-12, 01:18:16
Erst mal vorweg, N-Patches sind auch polynomiale Flächen. Nur werden die Kontrollpunkte eben nicht direkt vorgegeben, sondern aus den Eckpunkten und den zugehörigen Normalen errechnet. Ist das erst mal geschehen, ist der weitere Ablauf eigentlich identisch (wobei N-Patches aber nur dreiecksbasiert sind).

Polynomiale Fläche heißt dabei, dass die Oberfläche durch ein Polynom n-ter Ordnung festgelegt wird.

Vereinfacht für eine Kurve (keine Fläche) dritter Ordnung (kubisch) sieht das so aus:

X(t) = A t³ + B t² + C t + D

A, B, C und D sind Vektoren, Kontrollpunkte, die das Aussehen der Kurve bestimmen. t wird zwischen 0 und 1 betrachtet. Für jedes t ergibt sich ein Punkt X(t), der auf der Kurve liegt.
Das Problem bei dieser Darstellung ist, dass A, B und C nicht "intuitiv" die Kurve beschreiben (D ist ein Endpunkt), d.h. aus ihrer Lage kann man nicht den Verlauf der Kurve "ersehen", was natürlich zum modellieren absolut notwendig ist. Deshalb gibt es Umformungen dieser Gleichung, z.B. Hermite- oder Bézier-Form.

Je mehr t-Werte man nimmt, desto feiner kann man die Kurve darstellen. Allerdings erhält man nur weitere Rundung, nicht mehr Details. Mit kubischen Kurven kann man maximal eine S-Form darstellen, mehr "Bögen" bekommt man nicht hin.

Displacement Mapping setzt hier an, statt eine Formel zum Berechnen der Fläche zu verwenden, werden Displacement-Werte aus einer Wertetabelle (=Textur) entnommen. Damit sind natürlich ganz andere Details möglich, die man mathematisch kaum vernünftig Ausdrücken könnte (versuch mal die Form eines Gesichts mathematisch darzustellen ;))

Um mal ein Vergleich zu finden: In Bildbearbeitungsprogrammen gibt es oft die Möglichkeit, Farbverläufe mit mehreren Punkten (Farben) zu definieren. Das wären die Polynomialen Flächen: schnell erzeugt, wenige Werte, lassen sich beliebig fein auflösen.

Dem gegenüber steht die Variante, Flächen mit Bitmaps zu füllen. Das ist natürlich aufwändiger, aber als Ergebnis hat man auch mehr Details.

Hmm. Mir fällt gerade auf dass ich auch Gouraud-Shading (vielleicht auch Phong) und Texturing als Vergleich hätte nehmen können :D
Dann würde das "normale" Dreiecksrendern dem Flat-Shading entsprechen.

Xmas
2002-08-12, 01:32:15
Also diese Analogie ist wirklich absolut passend :D

Flat Shading -- normales Rendern
Gouraud Shading -- N-Patches
Phong Shading -- Polynomial Surfaces
Texturing -- Displacement Mapping

Und wie man Texturen mit Shading kombinieren kann, so kann man auch DM mit HOS kombinieren.