PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Mit welchen zukünftigen 3D-Techniken wird man in Zukunft Gras & Sträucher darstellen?


Gast
2004-10-25, 05:37:17
Ich frage mich manchmal, wann der Zeitpunkt kommt,
bei dem man in einem Computerspiel
wirklich viele Gräser und Sträucher zu sehen bekommt.


Momentan macht man das ja aus Performancegründen noch alles mit simplen Sprites, welche immer quer zur Blickrichtung des Betrachters gedreht werden.

In einer wirklich ferner Zukunft könnte man natürlich jeden einzelnen Grasshalm auch aus echten Vertex Objekten darstellen, aber soweit sind die Grafikkarten
noch nicht, wenn man wirklich eine große Wiese darstellen möchte.


Deswegen meine Frage, gibt es da zwischen diesen beiden Extremen
in naher Zukunft irgendeine Zwischenlösung?


Könnte man z.B. mit Displacement Maps Grass darstellen?
Und wen ja, wie?
Weil meines Wissens nach kann man bei den Displacement Maps ja nur
Höhenunterschiede darstellen, das reicht vielleicht für ne Moosoberfläche
aus, aber bei Grass welche unten Lücken hat kann ich mir das recht schwer vorstellen.
Also gibt es irgendwelche zukünftigen Möglichkeiten außer herkömmliche Sprites um Grass möglichst Performanceschonend darzustellen?

RLZ
2004-10-25, 10:56:51
Deswegen meine Frage, gibt es da zwischen diesen beiden Extremen
in naher Zukunft irgendeine Zwischenlösung?
Es gibt einen Ansatz von einem französischen Wissenschaftler, bei dem in Nähe echtes 3d-Gras verwendet wird, etwas weiter weg 2,5d (alles wird in Tiles unterteilt und an den Grenzen eine Textur verwendet) und in grosser Entfernung einfach nur noch eine Textur, die die Bewegung vom Gras simuliert.
Video (http://www-imagis.imag.fr/Publications/2003/GPRFC03/prairie-recover_mp1.mpg)


Könnte man z.B. mit Displacement Maps Grass darstellen?
Und wen ja, wie?
Weil meines Wissens nach kann man bei den Displacement Maps ja nur
Höhenunterschiede darstellen, das reicht vielleicht für ne Moosoberfläche
aus, aber bei Grass welche unten Lücken hat kann ich mir das recht schwer vorstellen.

Würde nur gehen, wenn alle Grasshalme senkrecht nach oben stehen.
Sieht wohl etwas seltsam aus ;)

Also gibt es irgendwelche zukünftigen Möglichkeiten außer herkömmliche Sprites um Grass möglichst Performanceschonend darzustellen?
Volumetrische Daten sind in der Forschung in letzter Zeit wieder relativ beliebt, vielleicht kommt da irgendwann was in der Richtung raus. Aber wohl noch nicht allzu schnell...

Fragman
2004-10-25, 11:29:17
naja, man ja auch die richtung der displacement festlegen, ueber eine textur gesteuert geht es auch in verschiedene richtungen. nur hat man halt das problem, das dann keine dynamik drin ist, also man nicht durchgehen kann und das gras reagiert entsprechend drauf. fuer kurze rasen allerdings reicht die displacement technik aus.

aber grass wird sicherlich als geometrie einzug halten, schon wegen der dynamik her. die frage ist halt nur wann, viele feine sturkturen, die untereinander kollidieren...

RLZ
2004-10-25, 12:05:17
Selbst für kurzes Gras ist DisplacementMapping nichts...
Mal abgesehen, dass die DisplacementLeistung wohl auch in den nächsten 2-3 Jahren dafür nicht ausreichen würde.
Die Anzahl von Grashalmen darf man nicht unterschätzen.
Für eine kleine Wiese sind da schon schnell ein paar Millionen zusammen. Die dann noch zu animieren überfordert jede Hardware in den nächsten Jahren. Ohne Faken geht da nix.

Gast
2004-10-25, 22:20:41
Selbst für kurzes Gras ist DisplacementMapping nichts...
Mal abgesehen, dass die DisplacementLeistung wohl auch in den nächsten 2-3 Jahren dafür nicht ausreichen würde.
Die Anzahl von Grashalmen darf man nicht unterschätzen.
Für eine kleine Wiese sind da schon schnell ein paar Millionen zusammen. Die dann noch zu animieren überfordert jede Hardware in den nächsten Jahren. Ohne Faken geht da nix.

Nun, die hauptsäche wäre doch, das man etwas erreicht das halbwegs bessera aussieht
als herkömmliche Sprites.

Ailuros
2004-10-26, 01:14:20
Also gibt es irgendwelche zukünftigen Möglichkeiten außer herkömmliche Sprites um Grass möglichst Performanceschonend darzustellen?

Womoeglich ne bloede Antwort, aber wieso nicht via geometry instancing?

DanMan
2004-10-26, 02:40:11
Also ich finde, dass z.B. FarCry und JointOps das mit dem Gras schon ganz gut hinbekommen. Die blenden es ja auch in weiter Ferne aus.

Sprites würden sogar (ohne SSAA) prima aussehen, wenn anstatt Index-Alpha endlich mal öfter ein Alpha-Kanal benutzt würde (Alphablending statt Alphatest).

Xmas
2004-10-26, 03:08:39
Womoeglich ne bloede Antwort, aber wieso nicht via geometry instancing?
Ich denke auch, dass man "Flicken" von Gras in beliebigen Winkeln zusammensetzt, so dass die gesamte Fläche etwa einheitlich belegt ist.

Übrigens, deutsches Gras ist immer noch Gras, nicht Grass ;)

Ailuros
2004-10-26, 03:34:16
Ich denke auch, dass man "Flicken" von Gras in beliebigen Winkeln zusammensetzt, so dass die gesamte Fläche etwa einheitlich belegt ist.

Übrigens, deutsches Gras ist immer noch Gras, nicht Grass ;)

Wie waere es mit nem Rassen? :D

Spass beiseite; DanMan´s Post erinnerte mich gerade daran dass wenn man sprites in FC "abstellt" (e_vegetation_sprites....=100), erhoeht sich aliasing erheblich.

hmx
2004-10-26, 05:30:57
Im Mother Nature test vom 3DM03 ist ja das Gras auch ein echtes 3D Objekt. Wird sich sowas vllt durchsetzten? Man muss aber auch sagen das der Test immer ziemlich niedrige frameraten hat, wenn viel Gras zu sehen ist...

Aqualon
2004-10-26, 07:21:52
Bei ferner Zukunft denke ich an einen Post von Asmodeus (http://www.forum-3dcenter.org/vbulletin/showthread.php?p=1890561#post1890561).

Aqua

OBrian
2004-10-28, 01:03:16
Es gab ja schon gutes Gras, in DeltaForce2:

http://edomekuvat.soneraplaza.fi/deltatesti3b.jpg
http://www.speedy3d.com/previews/delta_force2/images/df2c.jpg
http://www.activewin.com/reviews/software/games/d/images/delta_force_2_3.jpg

"gut" im Vergleich zu Grafik der gleichen Zeit natürlich. Das Gras ging einem etwa bis zum Knie, man konnte sich reinlegen und war sowohl auf kurze als auch über weiteste Entfernungen vor Blicken geschützt (also kein Mipmapping wie bei Söldner z.B.). Also wirklich für das Spielgeschehen "brauchbares" Gras, nicht nur ein optischer, aber im Grunde nutzloser Effekt.

Die Engine ("Voxel Space" von Novalogic) hat das alles in Software-Rendering gemacht, deswegen ging das auch extremst auf die CPU (800x600 hat selbst auf einem fetten 600MHz Athlon geruckelt ;) ). Ist im Grunde auch so eine Art Displacement-Mapping, allerdings hat das wenig mit dem heutigen DM zu tun.

Ich denke mal, wenn DM wirklich zum Levelbau eingesetzt wird, dann erst, wenn es alle Karten können - man kann es ja nicht abschalten, weil dann alles platt ist, keine Berge, kein Gras, nix. Also wird es Jahre dauern, bis dahin gibt es aber wahrscheinlich bessere Methoden.

Wer sagt, daß das Gras wirklich Geometrie haben muß? Eigentlich würde z.B. sowas wie Fur reichen.

Gast
2004-10-28, 03:30:29
Es gab ja schon gutes Gras, in DeltaForce2:

http://edomekuvat.soneraplaza.fi/deltatesti3b.jpg
http://www.speedy3d.com/previews/delta_force2/images/df2c.jpg
http://www.activewin.com/reviews/software/games/d/images/delta_force_2_3.jpg

"gut" im Vergleich zu Grafik der gleichen Zeit natürlich. Das Gras ging einem etwa bis zum Knie, man konnte sich reinlegen und war sowohl auf kurze als auch über weiteste Entfernungen vor Blicken geschützt (also kein Mipmapping wie bei Söldner z.B.). Also wirklich für das Spielgeschehen "brauchbares" Gras, nicht nur ein optischer, aber im Grunde nutzloser Effekt.

Die Engine ("Voxel Space" von Novalogic) hat das alles in Software-Rendering gemacht, deswegen ging das auch extremst auf die CPU (800x600 hat selbst auf einem fetten 600MHz Athlon geruckelt ;) ). Ist im Grunde auch so eine Art Displacement-Mapping, allerdings hat das wenig mit dem heutigen DM zu tun.


Das ist Voxelgras, sieht man auch, geht alles senkrecht nach oben und hat die Größe von den in Delta Force typischen Voxeln.

Was ist eigentlich der Unterschied zwischen der Voxelgrafik in Novalogic und Displacement-Mapping, ist das nicht das gleiche?

Schrotti
2004-10-28, 10:41:46
Also ich finde die Bäume und das Gras aus Star Wars Battelfront sehr schön.

Könnt ja mal den Screen anschauen (http://home.arcor.de/j4fschrotti/bilder/screen.bmp)

Mfg Schrotti

Xmas
2004-10-28, 18:33:12
Was ist eigentlich der Unterschied zwischen der Voxelgrafik in Novalogic und Displacement-Mapping, ist das nicht das gleiche?
Voxel sind keine Polygone, und auch nicht auf Height Fields beschränkt (wobei das bei Delta Force wohl keine "echten" Voxel sind).


Schrotti:
http://www.forum-3dcenter.org/vbulletin/showthread.php?t=122205

Matti
2004-11-02, 21:03:41
auf meiner hp kann man Grass-Mark runterladen. Die Demo stellt Gras als echte 3D-Objekte dar ... was natürlich eine gute Grafikkarte benötigt, um noch FPS und nicht SPF zu erreichen ;)

Wegen der hohen Geometrie-Auflösung braucht man auch einen hohen AA-Modus, damit kein Geometrie-Flimmern auftritt. Jedenfalls läufts auf meiner Radeon 9600 unter 4xAA mit 9 FPS.

ethrandil
2004-11-03, 15:59:55
Also ich finde die Bäume und das Gras aus Star Wars Battelfront sehr schön.

Könnt ja mal den Screen anschauen (http://home.arcor.de/j4fschrotti/bilder/screen.bmp)
Ich find das ehrlich gesagt ziemlich schwach - viel zu wenig und 2D

- Eth

Asmodeus
2004-11-03, 16:25:15
Ich find das ehrlich gesagt ziemlich schwach - viel zu wenig und 2D

- Eth

Auf absehbare Zeit wird man um diese Tricks nicht herumkommen. Im Nahbereich Geometrie, dann Billboards und für noch weiter entfernte Bereiche dann z.B. Farmaps oder Slicetechniken. Alles andere ist eher unrealistisch.
Ich hatte im Rahmen meiner Arbeit mal Versuche gemacht, wie viel Geometrie überhaupt nötig wäre, um ein Terrain glaubhaft mit Gras zu bedecken.

Auf dem ersten Bild sind die "Graspflanzen" 1m hoch, und die Framerate ist albtraumhaft niedrig.

http://www.inf.uni-konstanz.de/~colditz/Test01.jpg

Auf dem zweiten Bild ist die Anzahl gleich, aber die Pflanzen sind nur noch 10cm hoch. Man sieht leicht, wie viel mehr Pflanzen es da im Nahbereich noch brauchen würde.

http://www.inf.uni-konstanz.de/~colditz/Test02.jpg

Nur Geometrie zu verwenden ist also auch auf Jahre hinaus noch nicht machbar.

Gruss, Carsten.

Spasstiger
2004-11-04, 20:30:58
auf meiner hp kann man Grass-Mark runterladen. Die Demo stellt Gras als echte 3D-Objekte dar ... was natürlich eine gute Grafikkarte benötigt, um noch FPS und nicht SPF zu erreichen ;)

Wegen der hohen Geometrie-Auflösung braucht man auch einen hohen AA-Modus, damit kein Geometrie-Flimmern auftritt. Jedenfalls läufts auf meiner Radeon 9600 unter 4xAA mit 9 FPS.

Lustig, mit meiner Radeon 9700 läufts mit 4xAA auch nur mit 9 fps. Und ohne AA mit 10 fps. CPU-Limitierung?

EDIT: Hab jetzt noch auf dem Rechner meines Bruders getestet, Athlon 64 3000+ und GeForce 6800 Non Ultra @16 pipes/ 6 vertex. 59 fps kamen dabei raus mit 4xAA. Die Auflösung war 1280x1024. Bei mir müsste sie 1600x1200 gewesen sein, da dein Programm offenbar immer die höchste mögliche Auflösung verwendet. Ich hab übrigens nen P4 2,53.

Cyphermaster
2004-11-05, 08:18:25
Nur Geometrie zu verwenden ist also auch auf Jahre hinaus noch nicht machbar.

So drastisch würde ich das nicht behaupten wollen. Schon mal dran gedacht, wieviel weniger so eine Grasfläche in echter Geometrie einem Tile-based deferred Renderer abverlangen würde? Mit den bisherigen "schwachen" HSR-Techniken und großteils "Brute-Force"-Karten wäre das sicher kaum vorstellbar, aber die müssen ja nun nicht auf Ewigkeiten die einzig verwendete Technik sein.
Vielleicht gibt's ja mal Alternativen.

Xmas
2004-11-05, 15:02:28
Wie soll ein TBDR bei Geometrie-Limitierung helfen?

Cyphermaster
2004-11-05, 19:09:54
Nun, ich bin zwar definitiv kein 3D-Experte, aber ein TBDR verringert doch schon vorneweg die Polygonzahl bei Overdraw um ein mehr als deutliches Maß. Wenn ich mir dann ansehe, wie viel (oder eher wenig) bei einer solchen Graslandschaft an wirklich zu berechnender Geometrie übrig bleibt, und daß SSAA auch eher machbar ist, dann wäre das doch zumindest ein grober Fingerzeig, daß man über neue Techniken vielleicht so etwas doch erreichen kann.

Oder wo lieg ich da genau daneben :confused:

Coda
2004-11-07, 14:51:23
Mit Instancing (und mit WGF Constant Buffers) kann man sehr viele Dinge mit einem Batch rendern und dann ist das mit dem vielen Polygon-Gras wirklich kein großen Problem mehr.
Füllrate ist genügend vorhanden, wenn man front-to-back rendert und der Vertexprozessor einer Next-Gen-Karte wird drüber lachen :)

Klar braucht man irgendwann LOD, weil in "5km" entfernung sieht man das Gras eh nicht mehr, aber man kann es schon recht weit treiben dann.

TBDR bringt in diesem Fall wirklich nur beim Overdraw was, aber das ist auch mit normalem Hier-Z recht gut machbar.

Xmas
2004-11-07, 15:47:53
Nun, ich bin zwar definitiv kein 3D-Experte, aber ein TBDR verringert doch schon vorneweg die Polygonzahl bei Overdraw um ein mehr als deutliches Maß. Wenn ich mir dann ansehe, wie viel (oder eher wenig) bei einer solchen Graslandschaft an wirklich zu berechnender Geometrie übrig bleibt, und daß SSAA auch eher machbar ist, dann wäre das doch zumindest ein grober Fingerzeig, daß man über neue Techniken vielleicht so etwas doch erreichen kann.

Oder wo lieg ich da genau daneben :confused:
TBDR verringert den Overdraw, aber die Zahl der Polygone wird, wenn überhaupt, erst beim Ermitteln der Z-Werte verringert. Da kann man sich kaum Verarbeitungsschritte sparen.

RLZ
2004-11-07, 16:01:42
Mit Instancing (und mit WGF Constant Buffers) kann man sehr viele Dinge mit einem Batch rendern und dann ist das mit dem vielen Polygon-Gras wirklich kein großen Problem mehr.
Füllrate ist genügend vorhanden, wenn man front-to-back rendert und der Vertexprozessor einer Next-Gen-Karte wird drüber lachen :)

Das finde ich aber eine arg optimistische Einschätzung.
Man wird weder 10 Millionen Grashalme (wohl noch zu wenig) sortieren wollen (Blöcke werden nicht allzuviel nutzen, da immer nur benachbarte sich verdecken), noch kann eine Grafikkarten in nächsten Jahren so eine Geometrieleistung in der Praxis aufbringen. Ganz abgesehen von dem ganzen Speicherverbrauch und dem Problem mit dem geometrischen Aliasing.

Asmodeus
2004-11-07, 16:49:37
Das finde ich aber eine arg optimistische Einschätzung.
Man wird weder 10 Millionen Grashalme (wohl noch zu wenig) sortieren wollen (Blöcke werden nicht allzuviel nutzen, da immer nur benachbarte sich verdecken), noch kann eine Grafikkarten in nächsten Jahren so eine Geometrieleistung in der Praxis aufbringen. Ganz abgesehen von dem ganzen Speicherverbrauch und dem Problem mit dem geometrischen Aliasing.

Vorallem vergessen viele, dass "echtes" Gras auch nicht wie heute in Spielen üblich immer nur ein oder zwei Sorten von Modellen entspricht. Wenn man eine richtige Graswiese darstellen will dann hat man es locker mit dutzenden verschiedenen Modellen zu tun, die in sehr heterogenen Verteilungen vorkommen. Bei jetziger Grasdarstellung hat man hingegen meist eine total homogene Zusammensetzung von meist immer dem gleichen Modell, was sich natürlich für die Echtzeitdarstellung auch viel besser optimieren lässt.

Gruss, Carsten

Matti
2004-11-10, 19:47:23
Das finde ich aber eine arg optimistische Einschätzung.
Man wird weder 10 Millionen Grashalme (wohl noch zu wenig) sortieren wollen (Blöcke werden nicht allzuviel nutzen, da immer nur benachbarte sich verdecken), noch kann eine Grafikkarten in nächsten Jahren so eine Geometrieleistung in der Praxis aufbringen. Ganz abgesehen von dem ganzen Speicherverbrauch und dem Problem mit dem geometrischen Aliasing.

Geometrie-Leistung ist bei High-End-Karten schon ausreichend vorhanden, vorausgesetzt man blendet das Geometrie-Gras in einiger Entfernung aus und ersetzt es durch Texturen. Meine Radeon 9600 schafft (bei langen Strips) schon 70 Mio Dreiecke / sec, eine Radeon X800 wahrscheinlich das 4-fache.

Speicherverbrauch ist ÜBERHAUPT KEIN Problem :) Meine Grass-Mark-Demo setzt die Wiese aus 50 verschiedenen Gras-Kacheln zusammen, die zufällig verteilt sind. Das sind nur 50 Kacheln * 50 Halme pro Kachel * 5 Vertexen pro Halm = 12500 Vertexen.

Das Aliasing ist ein Problem. Bei weniger als 4xAA sieht Geometrie-Gras nicht gut aus. Außerdem hat man einen sehr großen Overdraw, den man nur durch einen Deferred Renderer umgehen kann ... oder man muß entsprechende Roh-Leistung aufbringen. Auch von der Bandbreite und Füllrate braucht man also auf jeden Fall eine High-End-Karte für akzeptable Performance.

Asmodeus
2004-11-10, 20:03:41
Geometrie-Leistung ist bei High-End-Karten schon ausreichend vorhanden, vorausgesetzt man blendet das Geometrie-Gras in einiger Entfernung aus und ersetzt es durch Texturen. Meine Radeon 9600 schafft (bei langen Strips) schon 70 Mio Dreiecke / sec, eine Radeon X800 wahrscheinlich das 4-fache.

Speicherverbrauch ist ÜBERHAUPT KEIN Problem :) Meine Grass-Mark-Demo setzt die Wiese aus 50 verschiedenen Gras-Kacheln zusammen, die zufällig verteilt sind. Das sind nur 50 Kacheln * 50 Halme pro Kachel * 5 Vertexen pro
Halm = 12500 Vertexen.

...



Leider haben natürlich wirkende, heterogene Pflanzenverteilungen die Angewohnheit nur schwer durch lange Dreiecksstrips darstellbar zu sein.

Eine echte Wiese lässt sich leider auch nicht durch 50 Kacheln beschreiben, die zufällig angeordnet werden.

Ich will damit nur sagen, alle Ansätze, auch deine Grass-Mark-Demo sind computergrafisch sicher überzeugend, haben aber mit der Darstellung realer Pflanzenverteilungen nichts zu tun und wirken deshalb auf die ein oder andere Weise immer "künstlich".

Und das ist eben leider der Punkt, um wirklich "real wirkende" Pflanzenszenarien darstellen zu können braucht es soviel mehr an Rechenleistung, sowohl auf Seiten der CPU als auch auf Seiten der GPU, dass es noch einige Zeit dauern wird, bis so etwas in Spielen Einzug hält.

Und bis dahin wird in Spielen Bewuchs eben designt (es soll gut aussehen und wenig Performance kosten) und nicht virtuell angepflanzt (das sieht dann zwar perfekt aus, kostet aber viel viel mehr Leistung).

Vergleich einfach mal mit den ersten paar Screenshots des Links in meiner Signatur. Daran wird der Unterschied zwischen für heutige Spiele angemessen und "natürlich korrekt" gut deutlich. Und performancemäßig liegen dazwischen leider Welten.

Gruss, Carsten.

Matti
2004-11-11, 11:50:55
stimmt, richtig natürlich sieht's nicht aus. Denn dafür braucht man nicht nur höher aufgelöste Modelle mit 10-30 Vertexen pro Halm, sondern vor allem eine realistische Beleuchtung ... also Echtzeit-Raytracing mit mehrfach rekursiven Licht-Berechnungen! ...und bei sowas braucht heutige Hardware mehrere Minuten pro Frame, deshalb denke ich, daß bis zum wirklichen Foto-Realismus noch 20-30 Jahre vergehen werden.

Trotzdem ist mit heutiger Hardware schon viel möglich, wenn sie nur von den Game-Engines richtig ausgenutzt werden würde. Denn in Techdemos kann man oft Grafik bewundern, wie sie in Spielen noch lange nicht zu sehen ist.