Files |  Tutorials |  Articles |  Links |  Home |  Team |  Forum |  Wiki

Aktuelle Zeit: Di Sep 02, 2014 14:57

Foren-Übersicht » Sonstiges » Projekte
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 8 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Vractal - Fraktale Vegetation
BeitragVerfasst: Mo Mai 16, 2011 15:30 
Offline
DGL Member
Benutzeravatar

Registriert: So Okt 26, 2003 20:07
Beiträge: 249
Hallo zusammen,

habe mich in der letzten Woche mal mit etwas beschäftigt, was mich schon immer mal interessiert hat, ich aber nie angefangen habe.

Es geht um automatisch generierte Vegetation auf Basis der bekannten L-Systeme, natürlich etwas erweitert und "nutzbar" gemacht. Dafür gibt es natürlich schon ein paar Sachen. Man kennt z.B. SpeedTree, was aber, wie so oft, jede Menge Geld kostet.

OK - ehrlich gesagt habe ich nicht wirklich gut rechercheirt obs was für Lau gibt, einfach auch deshalb weil mich das Thema interessiert. Über den Namen für das Projekt bin ich mir noch nicht sicher, daher der eher beschreibende Titel...

Jede "Pflanze" wird nach Schema "Skelett => Vertices => Linking" generiert. Dabei ist bereits beinahe alles was man draußen so sieht schon generierbar. Eine Erweiterung plane ich noch, womit man vom Grasbüschel über Tannenbaum bis krumme Eiche ( :D ) eigentlich alles generieren können sollte.

Es fehlen auch noch ein paar convinience Klassen sowie eine ordentliches Frontend Interface, wobei von Haus aus natürlich eine OpenGL-Implementierung dabei sein soll ;). Außerdem habe ich auch noch Ideen zu LoD Mechanismen und Speicherung.

Bis jetzt umfasst das Ganze etwas über 1000 Zeilen Code. Momentan beschäftige ich mich mit der Tesselierung des Skeletts, die noch nicht so richtig will wie ich. Nichts desto trotz gibt es auch schon was fürs Auge:

Bild Bild Bild Bild Bild

Über Meinungen hierzu freue ich mich =)

_________________
I'm not the signature, I'm just cleaning the floor...

Derzeitiges Projekt:
FireBlade Particle Engine (Release R2 2009.06.29)


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Vractal - Fraktale Vegetation
BeitragVerfasst: Fr Mai 20, 2011 14:21 
Offline
DGL Member
Benutzeravatar

Registriert: So Okt 26, 2003 20:07
Beiträge: 249
So mittlerweile hab ich mich schonmal Texturkoordinaten und um eine erste Blätter-Implementation gekümmert. Außerdem hab ich schonmal erste Ansätze zum Thema weiche Übergänge gemacht. Mehr gibts dazu eigentlich nicht zu sagen, Bilder gucken ;) Texturen sind schnell dahin gefriemelt daher sind die nicht all zu schön.

MfG

Bild
Bild

_________________
I'm not the signature, I'm just cleaning the floor...

Derzeitiges Projekt:
FireBlade Particle Engine (Release R2 2009.06.29)


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Vractal - Fraktale Vegetation
BeitragVerfasst: Di Jun 28, 2011 19:37 
Offline
DGL Member
Benutzeravatar

Registriert: So Okt 26, 2003 20:07
Beiträge: 249
Hallo zusammen,

in der Zwischenzeit hat sich einiges getan:

- Verbesserungen bei Tesselation und Texturierung
- Wurzeln
- Richtung des zugehörigen Elements wird in jedem Vertex zusätzlich gespeichert, dadurch vereinfacht sich die Implementation von Normal-/Bumpmapping durch das Backend
- Eigenes Dateiformat
- Neue, zusätzliche Parameter
- Neuer, zusätzlicher Abschlussmodus (vgl. Sägeschnitt)
- Insgesamt 3 Blätter Clouds: Billboard, Ebene ("krumm"), gekreuzt (mit wählbarer Plattenanzahl)
- Ein Element kann jetzt mehrere Clouds besitzen (z.B. mehrere Blätterclouds und Stamm)
- gerichteter Wind (noch verbesserungswürdig)
- 3 Standard OGL Renderer: VBO basiert (Kombination aus Index- und Vertexbuffer), Vertex Array basiert, Displaylisten basiert
- Level of Detail Implementierung, die eine benutzerdefinierte Verringerung der Auflösung durch mehrere Mechanismen bis hin zu einem far distance model (Billboard oder Kreuz) erlaubt. Die Besonderheit: die einzelnen Stufen basieren alle auf dem Vertex Array der höchsten Auflösung, es kommen also nur Index Arrays hinzu. Dadurch spart man sich wahrscheinlich auch das Überblenden der Stufen, da die äußere Geometrie i.d.R. unverändert bleibt. Die Ausnahme bildet das far distance model. Überblendung ist in den Backends noch nicht implementiert.
- Library Interface (praktisch fertig, Test steht noch aus)

Wen der letzte Punkt an FireBlade erinnert: hier scheiterts eigentlich nur an meiner Motivation, die sphärische Kollision zu Ende zu bringen...

Releasen werde ich sobald ich mir mit der Struktur einigermaßen sicher bin, hier gibts z.Zt. immer nochmal kleine Änderungen. Im Anschluss ist ein Modeler geplant, da die Parameterkombinationen im Quelltext schwer zu handhaben sind. Dass ist auch der Grund, warum ich mich ein wenig vor einer Veröffentlichung einer Parameterliste scheue - zwar gibt es für die Generierung des Skeletts und für jeden Klassentyp bei der Tesselation ein spezielles Parameterset (insgesamt sind es 64 Parameter), jedoch wirken diese mittels Definition verschiedener Element-Typen nur in der Kombination. Dennoch, eine detaillierte Beschreibung kommt spätestens zum ersten Release.
Als kleinen Bonus plane ich im Zusammenhang mit dem Modeler auch, ein paar Texturen zur freien Verfügung zu erstellen ;)

Zum Schluss nochmal aktuelle Bilder mit Normalmapping. Leider kommen sie auf den Bildern nicht so gut rüber wie in "echt" und die Texturen sind nicht berauschend. Sind auch eher als "Techdemo" zu verstehen, für Spiele wären die hier zu detailliert:

BildBildBildBild

_________________
I'm not the signature, I'm just cleaning the floor...

Derzeitiges Projekt:
FireBlade Particle Engine (Release R2 2009.06.29)


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Vractal - Fraktale Vegetation
BeitragVerfasst: Fr Dez 23, 2011 15:43 
Offline
DGL Member
Benutzeravatar

Registriert: So Okt 26, 2003 20:07
Beiträge: 249
Hallo zusammen,

ich wollte eigentlich noch warten, bis ich eine hübschere Demo zu bieten habe, aber damit ihr nicht denkt, Vractal sei schon tot bevor es überhaupt gelebt hat, mal ein Zwischenstand bis jetzt. Ich arbeite immer mal mehr mal weniger daran, je nach dem wieviel ich sonst so um die Ohren habe. Ein Release wirds immer noch nicht geben - warum? ich will mir über das Interface komplett sicher sein, und je mehr Technik dazu kommt, desto mehr merke ich hier und da mal wieder, dass es eigentlich anders sein muss um wirklich auch in bestehende Engines integrierbar zu sein. Dementsprechend entwickeln sich rund um das Projekt immer mehr "externe" Engine-Komponenten, von denen ich auch wieder viel dazu lerne.

Aber jetzt mal zum Fortschritt - die meiste Zeit seit dem letzten Release habe ich vor allem in den Referenz-Renderer investiert. Am wichtigsten für mich: er ist erstmal völlig unabhängig von der verwendeten Grafik-Bibliothek. Das entsprechende Backend für eine Bibliothek hat die Aufgabe, (Hardware-)Buffer nach einem gegebenen Interface bereitzustellen. Von welcher Bibliothek (OpenGL, DirectX) die kommen ist egal.

Wenn das Backend entsprechend implementiert ist (wie das jetzige OpenGL-Backend), dann unterstützt der Renderer die effektivsten Rendermechanismen bis SM 4.0. Er führt jedoch selbst kein Culling durch - das ist Aufgabe des Szene-Managers der Engine. Die Unterstützung für die veralteten Displaylisten habe ich wieder rausgenommen. Auch VertexArrays sind im Backend nicht implementiert (eigentlich sollte jede Grafikkarte mittlerweile VBOs unterstützen), könnte aber einfach durch ein Legacy-Backend oder eben automatische Auswahl je nach Hardware erfolgen. Wird vielleicht noch kommen, mal sehen. LOD-Transition ist mittlerweile auch drin, das eigentliche Blenden muss aber vom User im Vertex- oder Pixelshader durchgeführt werden (durch das Instancing). Ich werde bei einem Release entsprechende Referenz-Shader beilegen. Ich denke ich kann behaupten, dass der Renderer definitiv immer die niedrigst mögliche Anzahl an Drawing-Operationen durchführt.

Weitere Änderungen betreffen das Handling der Physik-Models und der Erstellung der eigentlichen Vegetation. Alles ist jetzt wesentlich geordneter und endet am Schluss in einem Blueprint, aus dem beliebig viele unterschiedliche Vegetation mit gleichen Wachstumseigenschaften generiert werden können. Die Animation der Bäume wird mittels Floating-Point-Texturen oder Texture Buffer Objects realisiert, erfordert also mindestens eine SM3.0 Karte.

Inzwischen habe ich mich dann auch an die im Meinungs-Thread empfohlene Echtzeitprobe gewagt. Nur statt der 50 Bäume habe ich direkt Nägel mit Köpfen gemacht und 10.000 detaillierte und animierte Bäume auf einer Fläche von 2000*2000e "gepflanzt". Diese werden mittels Frustum/Octree Culling reduziert und per Instancing gerendert. Das Ergebnis rendert mit völlig akzeptablen 75 FPS (wohlgemerkt mit aktiviertem Multisampling wegen Alpha to Coverage) auf meinem System (GF 8800GT, Phenom X3). Die Framerate ist dabei weniger Abhängig von der Anzahl an Bäumen, sondern vor allem von der Baum-Dichte, da dann umso mehr Bäume in einem der höheren LOD-Levels gerendert werden. Hier noch ein Screen:
Bild

Als nächstes muss ich mich mal wieder um das Dateiformat kümmern. Das habe ich irgendwann erstmal aufgegeben weiter zu pflegen, bis wieder ein wenig "Ruhe" in die Struktur eingekehrt war. Außerdem muss unbedingt ein Editor ran...

Frohe Weihnachten wünsche ich! =)

_________________
I'm not the signature, I'm just cleaning the floor...

Derzeitiges Projekt:
FireBlade Particle Engine (Release R2 2009.06.29)


Nach oben
 Profil  
 
 Betreff des Beitrags: Vorbereitung für erstes Release
BeitragVerfasst: Fr Feb 24, 2012 08:33 
Offline
DGL Member
Benutzeravatar

Registriert: So Okt 26, 2003 20:07
Beiträge: 249
Hallo zusammen,

In den letzten Tagen habe ich mal wieder Zeit (und Motivation) gefunden, die letzten Leichen im Code-Keller zu
beseitigen und das Dateiformat wieder dem aktuellen Stand anzupassen. Strukturell ist das Projekt jetzt an
einer Stelle, an der ich sagen würde, dass es auch in Zukunft in allen Bereichen die notwendige Flexibilität
an Erweiterung und Verbesserung bietet. Damit steht für mich das Hauptargument Struktur dem Release
nicht mehr im Wege.

Es gibt zwei Dateiformate. Das erste ist eine binäre Model-Datei, in der Geometrie, LOD und Physik gespeichert
wird. Das zweite ist die Blueprint-Definition. Das genaue Format kann über ein Interface selbst bestimmt werden,
wobei intern bereits ein Xml-Port zur Verfügung steht. Die Entscheidung für ein "Human-Readable" Format ist
hier zweckmäßig und in Anbetracht der verhältnismäßig niedrigen Datenmenge angemessen.

Es sind jetzt noch ein Paar Kleinigkeiten, um die ich mich noch kümmern möchte. Das betrifft z.B. nochmal Physik
und DLL Port (letzteres wird zum Glück einfach, wenn man von vornherein darauf hinarbeitet :) ).
Außerdem werde ich wahrscheinlich den Namen ändern, der ist mir irgendwie zu "steinig". Hierzu brauch ich noch
den passenden Einfall (vor allem einen, der noch nicht existiert was gar nicht so leicht ist...), ein Logo und abschließend
brauch ich natürlich noch die Anmeldung bei SourceForge.

Den Editor schieb ich dann hinten an, werde aber damit dann auch anfangen.
Es verzögert sich im Moment alles, da ich für meine Bachelor-Thesis zur Zeit im Schnitt fast 11 Stunden täglich arbeite... da bleibt
abends nicht mehr so viel Zeit und Lust, weiter zu machen ;)

Grüße

_________________
I'm not the signature, I'm just cleaning the floor...

Derzeitiges Projekt:
FireBlade Particle Engine (Release R2 2009.06.29)


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Vractal - Fraktale Vegetation
BeitragVerfasst: Sa Feb 02, 2013 11:43 
Offline
DGL Member
Benutzeravatar

Registriert: So Okt 26, 2003 20:07
Beiträge: 249
Hallo zusammen,

ein kurzes Statusupdate nach langer Zeit, geschuldet einiger privater, beruflicher und studientechnischer
Dinge...

Habe in der letzten Zeit wieder etwas weiterarbeiten können, und damit begonnen, einige Sachen wieder
zu ändern. Einige Sachen waren mir einfach zu statisch und dadurch nur mit viel Aufwand bzw. vielen
zusätzlichen Parametern wirklich "interessant" zu bekommen. Ich habe das Ganze abgebrochen, nachdem
ich gemerkt habe, dass es völlig Überhand nimmt.

Ich habe deshalb damit begonnen, einige Parameter zu streichen und einen Großteil der vorhandenen
Parameter als Formeln verwendbar zu machen. Als Scripting-Backend kommt dazu mein FBScript zum
Einsatz, das mit extrem kleinen Aufwand intergrierbar ist und für völlig ausreichende Flexibilität sorgt.
Ich erreiche damit mit weniger Aufwand / Parametern eine wesentlich höhere Bandbreite an Möglichkeiten...

Der Designer steht außerdem wieder mehr im Vordergrund. Den ersten Ansatz in FPC werde ich aber
wieder verwerfen, gefällt mir so nicht. Ich werde den Designer mit .NET und C# angehen. Mono bietet
mir leider nicht die Fülle an ausgereiften Komponenten zur effizienten Oberflächenentwicklung, und FPC
ist mir mittlerweile (wenn man sich mit beidem mal intensiv beschäftigt hat) zu "steif". Zudem habe ich
mir mittlerweile in C# ein nettes kleines GL-Framework geschaffen, mit dem das Rendern der Modelle
auch grafisch ordentlich was hermachen wird, ohne dafür auch nochmal großartig Zeit zu investieren.

Es hat den Vorteil, dass die Lib nicht unterwegs wieder auf der Strecke bleibt. Insofern bleibt Vractal
selbst Plattformunabhängig, nur der Designer eben nicht.

Also Kernaussage: Das Ganze geht noch weiter...

_________________
I'm not the signature, I'm just cleaning the floor...

Derzeitiges Projekt:
FireBlade Particle Engine (Release R2 2009.06.29)


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Vractal - Fraktale Vegetation
BeitragVerfasst: So Apr 07, 2013 14:22 
Offline
DGL Member
Benutzeravatar

Registriert: So Okt 26, 2003 20:07
Beiträge: 249
Hiho,

mittlerweile gibt es endlich mal wieder vorzeigbares =) Die Engine ist wieder auf dem Wege des Funktionierens (massive Umstrukturierung der Blueprints auf Formelbasis mit FBScript) und der Designer nimmt Form an. Das Frontend des Designers ist Modular einsetzbar, d.h. kann beliebig genutzt werden, um sich von dem leidigen Thema Document Management zu drücken und sich aufs wesentliche zu konzentrieren. Werde das Frontend zu gegebener Zeit ebenfalls zur Verfügung stellen.

Ich bin noch nicht so weit, Polygonmodelle zu zeigen. Aber das hier ist ohnehin nicht verkehrt um zu sehen, wie man den Designer sinnvoll nutzen kann:
Bild Bild

_________________
I'm not the signature, I'm just cleaning the floor...

Derzeitiges Projekt:
FireBlade Particle Engine (Release R2 2009.06.29)


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Vractal - Fraktale Vegetation
BeitragVerfasst: Mo Apr 15, 2013 20:33 
Offline
DGL Member
Benutzeravatar

Registriert: So Okt 26, 2003 20:07
Beiträge: 249
Untexturierte Grüße =)
Damit kommt das Ganze auch schon fast zum Ende... es fehlt jetzt noch eine ordentlich verwendbare Materialdatenbank, Physik sowie noch kleine Bugfixes. Ich denke mal der Mammutanteil ist aber geschafft.

Bild

_________________
I'm not the signature, I'm just cleaning the floor...

Derzeitiges Projekt:
FireBlade Particle Engine (Release R2 2009.06.29)


Nach oben
 Profil  
 
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 8 Beiträge ] 
Foren-Übersicht » Sonstiges » Projekte


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 0 Gäste


Du darfst keine neuen Themen in diesem Forum erstellen.
Du darfst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge in diesem Forum nicht ändern.
Du darfst deine Beiträge in diesem Forum nicht löschen.
Du darfst keine Dateianhänge in diesem Forum erstellen.

Suche nach:
Gehe zu:  
  Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de