Wie kann ein künstlerischer (2D) Baum in Echtzeit prozedural (erstellt) werden (L-System?)

20

Kürzlich habe ich ein L-System Modul programmiert. Es hat mich weiter interessiert. Ich bin auch ein Plants vs Zombies-Junkie und mochte das Konzept von Tree of Wisdom sehr. Würde es lieben, ähnliche prozedurale Kunst nur zum Spaß zu kreieren und mehr zu lernen.

Frage: Wie sollte ich mich dem Prozess der dynamischen Erstellung eines künstlerischen Baums nähern (2d vielleicht mit fester Kamera / Perspektive)?

Im Idealfall möchte ich mit einer Pflanze beginnen (nur einem Stängel mit einem Blatt) und sie dynamisch wachsen lassen, indem ich einen Einfluss (Eingabe / Benutzeraktion) auf ihre Struktur ausübe. Diese Einflüsse können zu verschiedenen Arten von Verzweigungen, Krümmungen in Zweigen, ihrer Verbreitung, der Lage von Früchten, der Farbe von Blumen usw. führen. Möchten Sie, dass es wirklich voller Leben / Geist ist. :)

Pflanzen gegen Zombies: Baum der Weisheit Es wäre großartig, einen ähnlichen Baum dynamisch zu züchten, aber mit viel mehr Variationen und Animationen.

Mein Hintergrund: Programmierer, haben nur wenige Spiele-Engines verwendet (Ogre3d, cocos2d, Unity). Ich habe nicht wirklich direkt mit openGL programmiert und versucht, das zu beheben :).

Ich bin bereit, viel Zeit zu verbringen. Bitte informieren Sie mich über die APIs. und wie würde ein Experte wie Sie dieses Problem angehen?

Warum 2D? Ich denke, es ist einfacher, das Problem zu lösen, wenn man nur zwei Dimensionen berücksichtigt.

Künstlerische Inspirationen:

Nur der Baum, mit Früchten und Blättern, ohne die Sträucher am Boden

Der große Baum (sichtbare Zweige, grüne Blätter, Blüten, Früchte usw.) links hinter dem Affen.

PixelJunk's Eden (Kunststil Inspiration).

Prozedural erzeugter Apfelbaum unter Verwendung der Fractals

Bitte lassen Sie mich wissen, ob es Ihnen leicht gefallen ist, die Frage zu verstehen.

Ich hoffe, eine Diskussion über verschiedene Ansätze wäre für alle hilfreich. Ihr seid fantastisch.

lal
quelle
2
Möglicherweise habe ich keine Antwort für Sie, aber ich möchte auf jeden Fall sehen, wohin das führt. Super Konzept!
Bloodyaugust
Tolle Frage, ich habe mich schon eine Weile für L-Systems interessiert, aber nichts daraus gemacht :)
Luther
1
@Stephen, nur damit Sie wissen, dass diese Frage aus dem Jahr 2011 stammt und von dem Benutzer, der die Frage Student/vomStudent/Programmer
PeterT
@lalan Nehmen Sie nur Änderungen vor, die für die Frage von Bedeutung sind. Die Tatsache, dass Sie kein Student mehr sind, ist keine wesentliche Änderung oder kein Grund für die Bearbeitung.
MichaelHouse

Antworten:

8

Einige Ideen für dein "Spiel":

  • Fordern Sie den Benutzer auf, zuerst einen Namen für seinen Baum einzugeben. Verwenden Sie diesen Namen, um einen Startwert für den Algorithmus zu generieren. Jeder Name wird also einen einzigartigen Baum haben. Der Samen könnte auch die Art der Blätter und Früchte des Baumes beeinflussen.
  • Sie können eine Art "Baum- Tamagotchi " implementieren, bei der der Baum größer und schöner wird, je mehr sich der Benutzer darum kümmert (düngen, wässern usw.).
  • Erstellen Sie eine Highscoreliste mit den höchsten Bäumen. Eine andere Idee wäre, Höhen und Namen anderer Benutzer neben Ihrem Baum anzuzeigen. So können Sie Ihre Baumhöhe direkt mit anderen Benutzern vergleichen. Sehen Sie sich dieses Video als Beispiel an. Die Wolken zeigen die Höhe an, die andere Benutzer erreicht haben.

Es gibt viele Algorithmen und Artikel zur prozeduralen Baumgenerierung ( dieser Thread könnte interessant sein ). Eine schwierige Aufgabe ist es, die Zweige schön zu mischen. 2D wird in dieser Hinsicht definitiv einfacher, da Sie dies mit Alpha-Blending lösen können.

Da Sie bereits Erfahrung mit Ogre3D, Unitiy und cocos2d haben, können Sie dieses Ding sofort implementieren (Sie müssen jetzt IMHO nicht mehr mit dem Erlernen von OpenGL beginnen). Persönlich würde ich mich für cocos2d und die Freigabe für iPad und / oder iPhone entscheiden, damit jeder seinen Baum mit seinem mobilen Gerät herumtragen kann.

Blödmann
quelle
1
Ich würde bei diesem Spiel nur mit L-Systems auf soziale / wettbewerbsorientierte Weise spielen.
deft_code
1
Danke, dass du mich auf den Gamedev-Thread verwiesen hast. Schöne Ideen, Tamagotchi und Goo-Tower. Eine mobile Anwendung wäre wirklich cool. habe ein 3DS Max Plugin Video gefunden - das ist ein ziemlich toller Link .
lal 10.03.11
5

Context-Free und sein 3D-Gegenstück StructureSynth könnten eine hervorragende Grundlage oder Inspiration sein.

Beispiele:

Bildbeschreibung hier eingeben Bildbeschreibung hier eingeben Bildbeschreibung hier eingeben etc...

In diesen Tagen könnten Sie einen Online-Visualisierer in WebGL schreiben!

Wille
quelle