ZFX
ZFX Neu
Home
Community
Neueste Posts
Chat
FAQ
IOTW
Tutorials
Bücher
zfxCON
ZFXCE
Mathlib
ASSIMP
NES
Wir über uns
Impressum
Regeln
Suchen
Mitgliederliste
Membername:
Passwort:
Besucher:
4442160
Jetzt (Chat):
13 (0)
Mitglieder:
5239
Themen:
24223
Nachrichten:
234554
Neuestes Mitglied:
-insane-

ZFX
Coding-Foren
Algorithmen und Datenstrukturen
Re: Echtzeitdarstellung von Wald
Normal
AutorThema
Vitamin C Bin ich drin ? NEEEEEE!!!! -> Offline
ZFX'ler


Registriert seit:
22.10.2003

Niedersachsen
Echtzeitdarstellung von WaldNach oben.
Hallo Leute,

ich hab mal eine einfache Frage. Mit welchen Techniken würdet ihr einen Wald darstellen? Die gängige Variante mittels High-Res -> Low-Res -> Imposter Abstufung zu arbeiten, scheint mir etwas in die Jahre gekommen zu sein. Kennt jemand neue Ansätze, bzw. welche Technik ist heutzutage "State-of-the-art"? Über Vorschläge, Anregeungen Erfahrungen wär ich dankbar.

Gruß
03.03.2009, 11:12:58 Uhr
dv Offline
ZFX'ler


Registriert seit:
15.09.2002

Österreich
89159988
Re: Echtzeitdarstellung von WaldNach oben.
Ich würde nicht sagen, dass das in die Jahre gekommen ist. Anders ist diese Datenmenge nicht zu bewältigen. Es wären zwar irgendwelche Raytracing-im-Pixel-Shader-Ansätze denkbar (ähnlich zu Interior Mapping, wie in http://interiormapping.oogst3d.net/ ), aber ich glaube nicht, dass das viel bringen würde - es wären ja nur etwas intelligentere Impostors.

Man kann aber versuchen, die Übergänge so weit wie möglich in die GPU zu verlagern. Hier könnte man noch was forschen.
03.03.2009, 13:00:20 Uhr
0xdeadbeef
Schrompf Offline
ZFX'ler


Registriert seit:
04.04.2006

Sachsen
Re: Echtzeitdarstellung von WaldNach oben.
Das ist nach meinem Wissen immernoch die "State Of The Art". In einem Wald gibt es halt sehr viele Bäume... ich kenne momentan keine Möglichkeit, bei so vielen Instanzen der Models noch sinnvoll mit 3D-Modellen zu arbeiten, ohne dass einem der Polycount der Szene um die Ohren fliegt. Mal ganz abgesehen davon dass ein 3D-Modell in gewisser Entfernung dann furchtbar viele winzige Dreiecke produzieren würde, die jeweils nur ein paar wenige Pixel abdecken. Damit kann man sich die massive Parallelität der GPU ziemlich gut ruinieren.

Wir rendern unsere Wälder jedenfalls mit der von Dir beschriebenen Methode. Die einzige "Neuerung", die ich dazu noch im Kopf habe, wäre eine Verbesserung des Billboard-Shaders durch einen Volumen-Raycast. Imposter haben halt das Problem, dass man sie aus allen möglichen Blickwinkeln braucht. Wenn man Shadow Mapping benutzt, sogar aus mehreren grundverschiedenen Blickwinkeln parallel. Wir haben daher die Models nur aus einer Richtung als Billboard ausgerendert. Dadurch sieht man den Übergang Model -> Billboard leider sehr deutlich. Vor allem im Schatten, der ja meist von schräg oben kommt, wo senkrechte Billboards dann nur wenig Sichtfläche bieten. Ein kleiner Raycast durch das fiktive Billboard-Volumen (z.B. mit Tiefe pro Pixel) könnte an der Stelle Wunder bewirken.

Mit richtigen Impostern hast Du das Problem des abrupten Übergangs natürlich nicht. In der Shadow Map ist der Unterschied dagegen drastisch, außer Du machst für die ShadowMap einen zweiten Imposter der jeweiligen Instanz auf. Und dann für die Seespiegelung da drüben einen dritten. Und so weiter und so fort.

[edit] Ok, dv war schneller. Und sagt so ziemlich dasselbe, nur mit sehr viel weniger Worten. Ich muss an meinen Formulierungen arbeiten

Bye, Thomas

1 Mal gendert, zuletzt am 03.03.2009, 13:08:16 Uhr von Schrompf.
03.03.2009, 13:06:47 Uhr
Dreamworlds Development
Vitamin C Bin ich drin ? NEEEEEE!!!! -> Offline
ZFX'ler


Registriert seit:
22.10.2003

Niedersachsen
Re: Echtzeitdarstellung von WaldNach oben.
Danke für die schnellen Antworten. Coole Idee mit dem Interiormapping
Hab halt gedacht das es vllt. Ansätze mittels Geometrie-Shadern oder ähnliches geben könnte. Z.B. wenn ich einen dichten Wald unter mir habe, bzw. vor mir, das dort Details der Baumkronen mittels der eben genannten Shader erzeugt werden könnten.
Kann bezüglich der Performance nur Mutmaßungen anstellen, da ich bis jetzt keine Geometrieshader benutzt habe.
Ein Problem bei den Impostertechniken, bzw. Billboards dürfte auch ein 3-dimensionales Umkreisen der Objekte darstellen, hat sich da schon mal jemand Gedanken gemacht? Eine Möglichkeit wäre sicherlich nicht nur ein Kreuz für dir BB-Texturen zu verwenden sondern quasi einen Stern, aber da explodiert ja irgendwann der Speicherbedarf...

1 Mal gendert, zuletzt am 03.03.2009, 14:25:29 Uhr von Vitamin C.
03.03.2009, 13:47:51 Uhr
Krishty Offline
ZFX'ler


Registriert seit:
01.02.2004

Nordrhein-Westfalen
342173470
Re: Echtzeitdarstellung von WaldNach oben.
Mir würden da auch höchstens stark von der Szene abhängige und nicht unbedingt verallgemeinbare Lösungen einfallen … wie ungefähr soll es denn aussehen (Fotos?) und aus welcher Perspektive (Vogel, Mensch) soll das ganze dargestellt werden?

Man könnte bspw dichte Waldstücke als Volume-Fog behandeln, um eine speziell darauf abgestimmte Cubemap möglichst unauffällig zu überblenden (viel Wald -> stark blenden, wenig Wald -> nicht blenden, dann funktionieren sogar Schneisen durch den Wald etc), damit würde sich der zu rendernde Umkreis erheblich reduzieren … oder Soft-Particles, die statt mit Rauch mit Blättern texturiert sind in der Ferne verstreuen um Frequenz hinzuzufügen, wo einzelne Pflanzen zu aufwändig wären … von außen sind eh immer nur die ersten zehn Meter des Waldes zu sehen, danach ist alles so dunkel dass man nichts mehr erkennen kann … solche Kniffe meine ich.

Gruß, Ky

2 Mal gendert, zuletzt am 03.03.2009, 17:41:34 Uhr von Krishty.
03.03.2009, 17:39:16 Uhr
frittentuete Offline
ZFX'ler


Registriert seit:
08.03.2005

Hamburg
Re: Echtzeitdarstellung von WaldNach oben.
hi,

könnte dir da die Seite empfehlen:

http://www.kevinboulanger.net/grass.html

in der PDF steht neben Grass- auch Tree-Rendering im Mittelpunkt.

Desweiteren würde ich als "State-of-the-Art"-Technik natürlich noch HW-Instancing deklarieren, auch wenn das vielleicht selbstverständlich ist.

frittentuete
03.03.2009, 20:00:53 Uhr
PuMi Online ist nicht jeder!
ZFX'ler


Registriert seit:
02.04.2006

Berlin
266670062
Re: Echtzeitdarstellung von WaldNach oben.
Hallo Vitamin C!

Da fragst du in einem Bereich, mit dem ich mich ja schon beschäftigen musste. Ich schreibe ja eine kleine eigene Zugsimulation und dort sind Sichtweiten von bis zu 8km möglich, was natürlich eine riesige Anforderung an Terrain und Scene Graph ist.

Bäume werden etwas verändert umgesetzt als normale Meshs in der Szene. Du solltest dem Designer die Möglichkeit geben, am Anfang gleich Crossed Billboards einzufügen und später direkt als instanced data zusammenfassen (wenn DX10+) oder:

Bei der Initialisierung lädst du dir zwei Typen: Einmal das Mesh. Dann eine Links- & Vorderansicht zeichnen lassen und in eine interne Texture speichern - wichtig: Auch eine Textur der normal map für Billboards erstellen! Dies nicht für jedes Mesh einzeln machen sondern ein Ordner Trees im Strecken-/Weltordner und eine Mesh List erstellen, worauf dann einfach nur über die World file die Indizes zugeordnet werden (allgemeines Verfahren denke ich).

Die lange Initialisierungsphase kann man beschleunigen, indem man im Editor einen eigenen Importer für solche Bäume schreibt, der schon beim Importieren entsprechende Texturen schreibt. Beim Laden musst du dann nur noch Mesh, Meshtexturen und crossing billboard Texturen laden. Hier ein praktikables Schema:

treemeshs/MyScrumbTree.obj
treemeshs/Textures/... (Meshtexturen)
treemeshs/Textures/Precomputed/MyScrumbTree.obj.le.ace
treemeshs/Textures/Procumputed/MyScrumbTree.obj.fr.ace

Dann setzt du 3 LODs an - mehr sind nicht nötig. 1 LOD sollte bei ungefähr 400m liegen und zeichnet das Mesh. Bis zu solchen Entfernungen erkennt das menschliche Auge doch noch gut was 3D und 2D bei Bäumen ist. 2 LOD zeichnet dann das cross billboard mit normal mapping bis zu 1,5km - denn bis dort kann das Auge noch 3D-Objektbeziehungen feststellen. CCW- und CW-Aussortierung sollte im Rasterizer aus sein (also beide Seiten rendern lassen!). Ab dieser Entfernung kommt dann das reine Billboard zum Einsatz, denn ab dort erkennt man nicht mehr obs nun 3D oder 2D ist. Normal map sollte an sein und das Billboard ist natürlich zum Spieler ausgerichtet: CCW-Aussortierung kann also im Rasterizer an. Die Ausrichtung ist hier vor dem Rendern zu berechnen - normale Billboardklasse eben. Eventuell solltest du die Bilboards der 2 und 3 LOD-Stufe jeweils als instanced data zusammenpacken.

Allgemeine Aussortierungsverfahren via Quadtrees setze ich hier als allgemein bekannt voraus. Die Quadtrees sollten eine Größe von 128m x 128m haben.

Nun kannst du dir natürlich vorstellen, was dort für große Szenen möglich sind. Einen Haken gibt es allerdings: Wenn Objekte aus anderen Graphen zukommen - dann kannste den Ansatz des instanced data vergessen, da hier Meshes mittendrinn noch ins Spiel kommen.

Die Sache mit dem Gras ist zwar für lokale Szenen praktisch anwendbar, kommen wir aber zu globalen Szenen in Fahrsimulatoren, so hört der Spaß wirklich auf. Diesen Ansatz sollte man wirklich nur auf kleinen Bereichen (maximal 256m Sichtweite) anwenden - was auch logisch wäre. Zusätzlich müsste man hierfür die Graspositionen für verschiedene LODs vorher im Editor berechnet haben und sollte hierbei wirklich nur instanced data verwenden. Von den Schatten schauen wir mal weg, sonst betrachte ich das Problem noch heikler.

Apropos Schatten:
Wenn du die Billboards zeichnet, solltest du im Shadow Shader nur dann etwas einzeichnen lassen, wenn der Pixel sichtbar ist. A < 0.25f sollte hierbei nicht in die light depth map gerendert werden.

Athmospheric scattering sollte hier auch in die Objekte einberechnet werden - denn das wirkt erst mal richtig schackhaft fürs Auge (auch wenn ich es mir derzeit nur vorstellen kann :/ )!

Screenshots kann ich dir leider nicht zeigen. Ich habe mir zwar intern Samples vorbereitet dazu, darf diese jedoch aus privaten Geheimhaltungsgründen dieser Technik nicht verbreiten. Wenn Screens vom Simulator kommen, soll es schon wirklich eine Überraschung sein.

Im Übrigen hast du mich dazu animiert, darüber mal ein paper zu schreiben - denn das Thema ist wirklich gewaltig interessant.

Man liest sich!
03.03.2009, 22:15:31 Uhr
Art Train Developer
Normal


ZFX Community Software, Version 0.9.1
Copyright 2002-2003 by Steffen Engel