Registriert: Do Sep 02, 2004 19:42 Beiträge: 4158
Programmiersprache: FreePascal, C++
Geil geil geil. Genau sowas brauche ich. Dann muss ich mich nicht um die Vegetation kümmern. Nen Interface was einfach Faces ausspuckt oder so wäre cool, damit ich das auf meine VBO Klassen mappen kann.
greetings
_________________ If you find any deadlinks, please send me a notification – Wenn du tote Links findest, sende mir eine Benachrichtigung. current projects: ManiacLab; aioxmpp zombofant network • my photostream „Writing code is like writing poetry“ - source unknown
„Give a man a fish, and you feed him for a day. Teach a man to fish and you feed him for a lifetime. “ ~ A Chinese Proverb
Registriert: Do Sep 25, 2003 15:56 Beiträge: 7804 Wohnort: Sachsen - ERZ / C
Programmiersprache: Java (, Pascal)
Das sowas geht wusste ich schon seit Jahren (über Speedtree hab ich mal hier bei DGL was gelesen). Sowas zu machen hatte ich auch schon immer vor. Aber es dann nochmal zu sehen. Sieht schon richtig klasse aus! Man kann quasi direkt erkennen welche Art das ist.
Wieviele Zufallszahlen speicherst du? Ist es nur 1 Seed? Wie viele Parameter kannst du dem Baumgenerator mit geben?
_________________ Blog: kevin-fleischer.de und fbaingermany.com
Darauf habe ich bereits hingearbeitet. Es wird ein Vertex-Array (Punkte-Wolke) sowie ein Indices-Array mitgeliefert, dass nacheinander die Dreiecke angibt. Für jeden Typ (s.u.) gibt es dabei ein eigenes Indices-Array, allerdings gibt es nur eine Punktewolke. Man sollte die schon so für VBOs verwenden können.
@Aya
Um die Texturkoordinaten hab ich mich noch nicht gekümmert... Der Baum besteht im Prinzip aus einer Reihe von Knoten (VertexBunch bzw. BranchJoint), die für das besitzende Element (d.h. "Trägerast") sowie alle Unterelemente (Verzweigungen, die von diesem ausgehen) jeweils einen Slot besitzen. Ein Slot ist einfach ein Punktekreis. es werden getrennt einerseits Slot-zu-Slot verbunden sowie die BranchJoints in sich selbst. Die Implementation für letzteres bestimmt die Übergänge. Im Moment werden dafür nur alle Child-Slots mit dem Parent-Slot verbunden, sodass es in gewisser Weise noch "zusammen gesteckt" ist. Ist ein Punkt der auch auf der Liste steht.. Nur dafür brauche ich noch die Ideen um es zu realisieren...
@Flash
Mit dem Thema rekonstruierbare Zufallsreihe muss ich mich unbedingt noch beschäftigen. Es gibt eine ganze Menge von Parametern (hab den Code gerade nicht parat), wichtiger ist aber, dass es möglich ist, Typen zu definieren, von denen jeder unterschiedliche Parameter haben kann. Es gibt eine Reihe Parameter für das Skelett und Tesselierung. Eine beliebige Menge definierter Typen kann einem anderen Typ mit bestimmter Wahrscheinlichkeit zugeordnet werden, sodass dieser alle zugewiesenen beim "wachsen" generiert. Äste / Elemente können auch "sterben", also nicht weiterwachsen. Bestimmte Zufallswerte werden außerdem über spezielle Klassen erzeugt, die auch bestimmte Element-Parameter bei der "Entscheidung" berücksichtigen. So gibt es z.B. eine Klasse, die ihre Wahrscheinlichkeit für 'Wahr' mit der Generation ändert. Damit komme ich mit nur zwei Element-Klassen aus: TFT_Root und TFT_Branch.
Als Beispiel: Alle Beispielbäume aus den Bildern bestehen aus einer Wurzel (Root), die Tribe-Elemente (Branch) generiert. Die Tribe-Elemente generieren wiederum Branches (ebenfalls Branch). Dadurch lässt sich z.B. Persistenz und Länge eines Stamms unabhängig von den Ästen regeln.
Ich hoffe das war einigermaßen verständlich =)
MfG
_________________ I'm not the signature, I'm just cleaning the floor...
ich würde gerne mehr sehen zu deiner Arbeit, sie sieht schon recht realistisch aus! Viele Iddeen hierzu findest du hier: http://algorithmicbotany.org/papers/
Was mich noch Interessieren würde.. hast du dir die "Wörter" für das L-System selbst ausgedacht oder gibt's da irgendwo ne hübsche liste á la "Dieses Wort mit diesen Regeln ergibt eine Tanne"..?
Ansonsten würde mich mal Interessieren was du z.B. für den Baum im ersten Screenshot benutzt hast. Also welche Variablen/Konstanten, welche Regeln, welchen Start wert und was bei welchem "Buchstaben" gemacht wird.
find ich cool. je mehr man parametrisieren kann desto lustiger wirds - und wenn das auch noch interaktiv geht, ists besonders klasse habe vor ewigkeiten L-Systeme auch einmal ausprobiert... wo war des denn?... gut dass ich all dieses zeug bei DGL abgelegt habe, da findet sich das dann noch alles http://svn.delphigl.com/filedetails.php ... tetree.dpr Ist zwar ein biserl einer Sparvariante, aber Bäume hats trotzdem erzeugt
Was mich noch Interessieren würde.. hast du dir die "Wörter" für das L-System selbst ausgedacht oder gibt's da irgendwo ne hübsche liste á la "Dieses Wort mit diesen Regeln ergibt eine Tanne"..?
Namen sind Schall und Rauch Die dienen nur der Zuordnung der Parameter. Für jeden definierten Typ (in den Beispielen immer Root, Tribe, Branches) gibt es einen Satz von Parametern. Beim Skelett sind das pro Typ immer die Gleichen, z.B. Längenmultiplikator für erhaltenes und gesplittetes Element, Oszillationen etc.. Grundsätzlich kann man sich für alles, was man machen will, das "Original" mal genau anschauen. Bei der Tanne z.B. gehen die Äste eher nach unten statt oben raus, was man hier durch negativen Splitlängenfaktor erreicht.
Aya hat geschrieben:
Ansonsten würde mich mal Interessieren was du z.B. für den Baum im ersten Screenshot benutzt hast. Also welche Variablen/Konstanten, welche Regeln, welchen Start wert und was bei welchem "Buchstaben" gemacht wird.
Dafür braucht man eine entsprechende Auflösung "durchgängiger" Stämme, also kurze Weglänge und niedrige Splitwahrscheinlichkeit. Zusätzlich, für den krummen Anblick, hat der Baum eine relativ hohe Oszillation in den beiden Radialachsen. Ich werde mal Parameter+Bild online stellen wenn ich dazu komme
_________________ I'm not the signature, I'm just cleaning the floor...
Es gibt eine ganze Reihe von vorgefertigten Paramterlisten für diverse (reale) Vegetation. Grade wenn man mit den L-Systemen mehr machen will als nur graphische Darstellung, z.B. Windlasten berechnen, Baumentwicklung in Abhängigkeit von Licht, Wind und anderen Bäumen, dann kommt es schon auf die korrekten Paramtersets an. Dafür gibt es ganze Entwicklungsumgebungen z.B. das Virtual Laboratory (http://algorithmicbotany.org/virtual_laboratory/), wo es auch eine ganze Reihe vorgefertigter Pflanzen gibt. Eine einfache Liste für offene oder geschlossene L-Systeme kenn ich allerdings nicht, müßte man mal zusammensuchen...
Registriert: Mo Sep 23, 2002 19:27 Beiträge: 5812
Programmiersprache: C++
Das sieht ja richtig gut aus. Und mit den Texturen machts wirklich was daher und könnte auch für Spiele genutzt werden. Aber wie sieht denn der Polycount aus? Ich hab jetzt für die Schlachtfelder in Projekt "W" eigene Bäume modelliert (was teilweise sehr lange dauert, dutzende Verscuhe und mehrere Tage für Tannen z.b.) weil solche Tools wie z.b. tree[d] (sind ja auch fraktale Bäume) zwar schöne Bäume machen aber halt mit sehr hohem Polycount.
Also der polycount ist stark abhängig von den gewählten Parametern. ohne mir große mühe zu geben habe ich detaillierte modelle mit etwa 10.000 dreiecken erzeugt. rendert bei mir mit über 2000fps (8800 GT) also durchaus spieletauglich. vertexcount pro ast ist anpassbar und passt sich auch am durchmesser an. am lod arbeite ich, sowie an der dynamik sprich wind. Sieht schon jetzt sehr beeindruckend aus soviel kann ich schonmal sagen
_________________ I'm not the signature, I'm just cleaning the floor...
Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast
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.