PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Tesselation von wo kommt die Information her?


Gast
2009-08-21, 20:27:08
Laut dem Artikel in der neuen Gamestar ist Tesselation ein Verfahren mit dem man relativ simple gestaltete Objekte bei Bedarf in wesentlich komplexere Strukturen aufspalten kann.
Desweiteren heißt es dort:
[QUOTE]
So erscheint beispielsweise ein aus der Ferne nur grob berechnetes und damit ressourcensparendes Gebirge bei naher Betrachtung zunehmend detailreicher und plastischer. Da das Drahtgittermodell des Gebriges nur in relativ einracher Ausführung auf der Festplatte liegen muss, reduziert sich die über den PCI-Express-Bus fließende Datenmenge erheblich und Leistung wird für andere Aufgaben frei.
[QUOTE]

So weit so gut.
Auch habe ich verstanden, daß man z.b. mit Tesselation ein Dreieck in 2 oder mehr Dreiecke auspalten kann.

Was ich aber nun nicht verstehe ist folgendes.
Wenn das Ursprungsdreick in einer Ebene liegt und auf der Festplatte als Information nur dieses Dreieck als Information vorhanden ist und nun durch die Tesselation dieses in eine Vielzahl von Dreiecken aufgespalten wird die nicht mehr in der gleichen Ebene liegen um einen besseren räumlichen Eindruck herzustellen, von wo kommen dann deren Informationen für das Höhenprofil bzw. für den räumlichen Eindruck?
Selbst eine Vielzahl von Dreiecken müßte ja weiterhin in der gleichen Ebene liegen, es sei denn man fügt dem Objekt Informationen hinzu welches dann auch die Höhe ändert.

Aber von wo kommen diese Informationen, von der Festplatte ja wohl nicht wenn im Gamestar Artikel steht, daß es genügt dort Objekte mit nur wenigen Polygonen zu speichern.

Gast
2009-08-21, 21:14:36
http://de.wikipedia.org/wiki/Displacement_Mapping ?

Gast
2009-08-21, 22:18:00
http://de.wikipedia.org/wiki/Displacement_Mapping ?

Danke.
D.h. die Information liegt in Form einer High-Map auf der Festplatte vor.
Und da Texturen i.d.R. mehrfach verwendet werden ist diese Lösung für
Landschaften nur eingeschränkt brauchbar.

Tesseract
2009-08-22, 01:07:20
da gibt es verschiedene varianten. darunter:
- errechnen der oberfläche durch die normalvektoren, die sowieso jeder vertex hat.
- errechnen einer oberfläche aufgrund von kontrollpunkten. (ähnlich wie bei splines; das ist die erweitere variante der ersten)
- über hightmaps.
usw.

Gast
2009-08-22, 13:06:37
da gibt es verschiedene varianten. darunter:
- errechnen der oberfläche durch die normalvektoren, die sowieso jeder vertex hat.

Die ergeben aber keinen Informationsgewinn, da dieser Normalenvektor in der gleichen Ebene liegt.



- errechnen einer oberfläche aufgrund von kontrollpunkten. (ähnlich wie bei splines; das ist die erweitere variante der ersten)

Ok, das klingt interessant, aber man muß die Daten (hier Kontrollpunkte) dann dennoch auf der Festplatte vorliegen haben.


- über hightmaps.
usw.
Ja.

Aquaschaf
2009-08-22, 13:48:11
Die ergeben aber keinen Informationsgewinn, da dieser Normalenvektor in der gleichen Ebene liegt.

Um einen Informationsgewinn geht es ja nicht in dem Sinne. Vergleiche eine magnifizierte Textur ohne Filterung gegen eine mit Filterung. Mehr Informationen sind in der gefilterten nicht, aber es sieht doch besser aus. Genauso muss das tesselierte Mesh nicht mehr Informationen enthalten als das kantige untesselierte damit die tesselierte Variante besser aussieht.

Tesseract
2009-08-22, 13:54:01
Die ergeben aber keinen Informationsgewinn, da dieser Normalenvektor in der gleichen Ebene liegt.
wenn vertices nur eine ebene sein sollen gibt es auch nichts sinnvolles zu tessellieren. tessellation ist nicht nur dazu da neue information zu erzeugen sondern vorhandene information besser darzustellen. z.B. freiformflächen an berghängen usw.

Ok, das klingt interessant, aber man muß die Daten (hier Kontrollpunkte) dann dennoch auf der Festplatte vorliegen haben.

ja aber du kannst theoretisch unendlich viele polygone mit nur wenigen kontrollpunkten erzeugen. je nach dem wie genau du es haben willst.

Gast
2009-08-22, 15:54:32
Um einen Informationsgewinn geht es ja nicht in dem Sinne. Vergleiche eine magnifizierte Textur ohne Filterung gegen eine mit Filterung. Mehr Informationen sind in der gefilterten nicht, aber es sieht doch besser aus. Genauso muss das tesselierte Mesh nicht mehr Informationen enthalten als das kantige untesselierte damit die tesselierte Variante besser aussieht.

Das ist nicht das gleiche.

Beim Texturfiltering wird eine Textur einfach schön verwischt, damit sie nicht mehr nach Klötzchen aussieht.


Bei Tesselation geht es aber eher darum, dem Objekt eine dreidimensionale Oberfläche ähnlich Bump-Mapping zu geben.
Daher braucht man auch Informationen wie die 3d Struktur hinterher nach der Tesselation aussehen soll, denn ohne Information bleibt sie flach.

Gast
2009-08-22, 15:55:33
wenn vertices nur eine ebene sein sollen gibt es auch nichts sinnvolles zu tessellieren. tessellation ist nicht nur dazu da neue information zu erzeugen sondern vorhandene information besser darzustellen. z.B. freiformflächen an berghängen usw.

Sie ist vorwiegend dazu da, Effekte wie Bump Mapping & Co zu ersetzen.

Coda
2009-08-22, 16:00:18
Und da Texturen i.d.R. mehrfach verwendet werden ist diese Lösung für
Landschaften nur eingeschränkt brauchbar.
He? :|

Tesseract
2009-08-22, 16:16:54
Sie ist vorwiegend dazu da, Effekte wie Bump Mapping & Co zu ersetzen.
wie kommst du da drauf? das ist natürlich eine möglichkeit. allerdings kostet das im gegensatz zu guten shadern meistens jede menge performance und der sichtbare vorteil ist eher gering.

der hype um displacementmapping an stelle von bumpmapping stammt aus einer zeit, aus der man noch nicht die heutigen möglichkeiten mit shadern hatte.

andererseits kann z.B. eine mehrstufige kontrollpunktbasierte tessellation für große außenareale pures gold wert sein weil genau das eines der größten probleme ist: die polygone werden in der entfernung zu klein und zahlreich und damit die rasterisierung ineffizient.

Coda
2009-08-22, 16:49:06
wie kommst du da drauf?
Weil das in zig Papern zu D3D11 vorgeschlagen wird und sehr wohl auch in der Praxis deutlich besser aussieht? Nuhr und so...

Tesseract
2009-08-22, 16:57:34
Weil das in zig Papern zu D3D11 vorgeschlagen wird und sehr wohl auch in der Praxis deutlich besser aussieht? Nuhr und so...
was besser aussieht hängt von der implementierung ab und zwischen aussehen und aussehen pro performance gibt es auch einen großen unterschied.

Gast
2009-08-22, 18:15:56
displacement sieht 1000 mal besser aus als doofes bump/normal mapping...

http://666kb.com/i/bbqox6tz8nysw5y1i.gif

Gast
2009-08-22, 18:26:27
He? :|

Hast du noch nie in einem Spiel gesehen das die ein und selbe Textur an verschiedenen Stellen noch einmal verwendet wurde?

Tesseract
2009-08-22, 18:26:49
displacement sieht 1000 mal besser aus als doofes bump/normal mapping...

ich spreche aber nicht von doofem bumpmapping sondern von frei programmierbaren shadern.
das was dein bild zeigt bekommt man, abgesehen von der silhouette bzw. generell den zur sichtrichtung flachen stellen, mit shadern nahezu genau so hin ohne dafür zusätzliche polygone zu benötigen.

selbst wenn die oberflächen nicht konvex sind geht das bis zu einem gewissen grad.

Hast du noch nie in einem Spiel gesehen das die ein und selbe Textur an verschiedenen Stellen noch einmal verwendet wurde?
was hat das mit hightmaps zutun?

Gast
2009-08-22, 18:28:03
wie kommst du da drauf? das ist natürlich eine möglichkeit. allerdings kostet das im gegensatz zu guten shadern meistens jede menge performance und der sichtbare vorteil ist eher gering.

Steht in der neuen Gamestar und wegen der Performance wird sowas mit DirectX 11 gemacht.

Gast
2009-08-22, 18:34:06
ich spreche aber nicht von doofem bumpmapping sondern von frei programmierbaren shadern.
das was dein bild zeigt bekommt man, abgesehen von der silhouette bzw. generell den zur sichtrichtung flachen stellen, mit shadern nahezu genau so hin ohne dafür zusätzliche polygone zu benötigen.


Displacement Mapping durch Tesselation wird mit Compute Shadern aus DirectX 11 gemacht und ist allen Shadern Varianten aus den Vorgänger DirectX Versionen überlegen weil es nach der Tesselation nunmal echte 3d Modelle sind.


selbst wenn die oberflächen nicht konvex sind geht das bis zu einem gewissen grad.


Eben, ab nem bestimmten steilen Winkel sieht's scheiße aus.
Aber bei Tesselation gibt's das Problem nicht, weil auch aus nem kleinen Winkel es noch gut aussieht, immerhin ist das Modell nach der Tesselation echt 3d Dimensional und nicht flach.



was hat das mit hightmaps zutun?

Glaubst du ernsthaft, daß man für ne lange Mauer ständig neue Highmaps verwendet?

Tesseract
2009-08-22, 18:52:02
Displacement Mapping durch Tesselation wird mit Compute Shadern aus DirectX 11 gemacht und ist allen Shadern Varianten aus den Vorgänger DirectX Versionen überlegen weil es nach der Tesselation nunmal echte 3d Modelle sind.

ändert nix daran, dass die effizienz von "erschummelter" geometrie in vielen fällen um einiges effizienter ist als echte geometrie. vor allem wenn dann noch schatten und andere dinge dazu kommen.
wenn du theoretisch unendlich rechenpower hättest ist echte geometrie natürlich "sauberer" aber das ist bei echtzeitgrafik nunmal nicht der fall.

und wenn du dafür an anderen stellen (z.B. objektanzahl) massiv einsparen musst stellt sich die frage wie sinnvoll eine saubere silhouette ist wenn die spielewelt dafür wesentlich leerer aussieht.

das lässt sich pauschal einfach nicht beantworten sondern hängt immer von der situation ab.

Gast
2009-08-22, 19:34:09
jeah Tesseract

nieder mit dem fortschritt!...

wozu gibt es dann tesselation? um es nicht zu benutzen weil andere methoden zwar schlechter aussehen aber effizienter sind?

bong!

Tesseract
2009-08-22, 19:48:53
wozu gibt es dann tesselation? um es nicht zu benutzen weil andere methoden zwar schlechter aussehen aber effizienter sind?

wie gesagt: das schlechter aussehen ist immer eine frage des gesamtkonzeptes.

wenn du z.B. bei selber performance entweder displacementmapping mit statischer fixed-function beleuchtung oder nicht ganz so perfektes shading statt displacementmapping nimmst und dafür mit den restlichen resourcen noch ausgefeilte schattenberechnungen durchführen kannst wird letzteres sicher das bessere gesamtbild ergeben.

genau nach diesem konzept arbeitet die computergrafik seit jahren. deswegen haben wir heute polygone und shading anstatt z.B. freiformflächen, punktwolken und raytracing. die sind zwar alle schön in der theorie, allerdings oft so ineffizient, dass man mit anderer technik wesentlich bessere gesamtergebnisse erziehlt.

außerdem hab ich nie gesagt, dass man tessellation nicht nutzen soll. ich hab nur geschrieben, dass man mit shadern in vielen (nicht allen!) fällen sehr ähnliche ergebnisse mit deutlich weniger aufwand erziehlen kann.
oder mit einer guten kombination daraus.

Gast
2009-08-22, 20:19:43
fällen sehr ähnliche ergebnisse mit deutlich weniger aufwand erziehlen kann.

he! begründen!

Tesseract
2009-08-22, 20:30:40
he! begründen!

hab ich vorhin schon geschrieben: durch tesselation werden die polygone auf den pixelraster bezogen tendenziell sehr klein - damit büsst die rasterisierung aber unglaublich viel seiner effizienz ein.
dieses problem hat man mit shadern in der form so nicht gegeben. wenn ein polygon etwas weiter weg ist werden weniger fragments berechnet, die polygone aber trotzdem noch "relativ" groß und man kann trotzdem noch verhältnismäßig gut von der rasterisierung profitieren.

zusätzlich ist der aufwand von echter geometrie ansich schon deutlich größer als der pseudo-3d-ansatz. deswegen werden auch seit ewigkeiten texturen verwendet anstatt alles auszumodellieren. die shader knüpfen an den ansatz der texturen an, nur eben mit deutlich mehr möglichkeiten.
um eine oberfläche wirklich im detail darzustellen (also komplett ohne texturen usw.) benötigt man eine unglaublich hohe polygonmenge. überproportional viele. und der ansatz von displacement mapping geht in diese richtung.
man muss immer den optimalen kompromiss aus polygonzahl und trickserei finden wenn man effizient gute bildqualität bekommen will.

Gast
2009-08-29, 23:18:21
Hmmm, die Diskussion hier ist glaube ich etwas abgedriftet.
Tesselierung, wie sie z.B. ATI nun schon einige Jahre bietet, dient(e) eigentlich einem anderen Zweck, als Landschaften schöner zu machen, oder Bump-Mapping zu ersetzen.

Es ging/geht da erstmal um die ent-Eckigung von Spielfiguren etc.
In vielen Spielen sind die Figuren/Monster etc. meist nur aus paar tausend Polygonen aufgebaut. Das schaut häufig sehr "eckig" aus.

Mittels Tesselierung kann man diese Ecken relativ leicht "quasi" verrunden, das schaut oftmals deutlich besser aus, und wirkt "organsicher".
Die Information dafür liegt in der Vertex-Normalen.
Bei Dreiecken mit identischen Normalen pro Vertex hat das natürlich keinen Effekt.

Gutes Beispiel eine Kugel bzw. ein Kreis. Sieht in praktisch allen Spielen ab einer gewissen Größe immer eckig aus, man spart halt an Polygonen.
Mittels Tesselierung kann man das praktisch immer schön rund machen, und das mit sehr geringem Aufwand für die Entwickler.
Leider hats bisher kaum ein Spieleentwickler genutzt, schade auch, ich ärgere mich immer über so eckige Figuren.