Struktur-Funktions-Modelle von Pflanzen - Sommersemester Winfried Kurth Universität Göttingen, Lehrstuhl Computergrafik und Ökologische Informatik 9. Vorlesung:
zuletzt: Aktualisierungsregeln Eigenschaften der Sprache XL (Übersicht) Darstellung von Graphen in XL (Teil 1)
als nächstes: Darstellung von Graphen in XL (Fortsetzung) transitive Hülle Graphansicht in GroIMP, Graph-Layouts Queries im Graphen Berechnung von Beschattung (1. Ansatz) Die Software GroIMP (Übersicht)
Notation von Graphen in XL Beispiel: wird im Programmcode dargestellt als (die Darstellung ist nicht eindeutig!) ( >: Nachfolgerkante, +: Verzweigungskante)
wie lässt sich der folgende Graph im Code textuell beschreiben? X Bud Leaf + > 01
abgeleitete Relationen Relation zwischen Knoten, die durch mehrere Kanten desselben Typs (hintereinander) verbunden sind: transitive Hülle der ursprünglichen Relation (Kante)
Bezeichnungsweise für die transitive Hülle in XL: (-kantentyp->)+ reflexiv-transitive Hülle (auch Knoten steht in Relation zu sich selbst zugelassen): (-kantentyp->)* z.B. für die Nachfolgerrelation: (>)* gemeinsame transitive Hülle der speziellen Kantentypen Nachfolger und Verzweigung, in umgekehrter Richtung: -ancestor-> Interpretation: diese Relation besteht zu allen Vorgängerknoten in einem Baum entlang des Pfades zur Wurzel. Nächste Nachfolger eines bestimmten Knotentyps: -minDescendants-> (Knoten anderen Typs werden übersprungen)
Nachfolgerkante Verzweigungskante Relation ancestor minDescendants
Der aktuelle Graph GroIMP führt immer einen Graphen mit, der die gesamte aktuelle Strukturinformation beinhaltet. Dieser wird durch Anwendung der Regeln umgeformt. Achtung: Nicht alle Knoten des Graphen werden in der 3D- Ansicht durch sichtbare Objekte dargestellt! - F0, F(x), Box, Sphere : ja - RU(30), A, B : normalerweise nicht (wenn nicht mit extends aus sichtbaren Objekten abgeleitet) Der Graph kann in der 2D-Graphansicht komplett dargestellt werden (in GroIMP: Panels - 2D - Graph).
Laden Sie eine Beispiel-rgg-Datei in GroIMP und führen Sie einige Schritte aus (verwenden Sie keine zu komplexe Struktur). Öffnen Sie die 2D-Graphansicht, verankern Sie mit der Maus das Fenster in der GroIMP-Oberfläche und testen Sie verschiedene Layouts (Layout - Edit): GeneralPurpose Tree Sugiyama Square Circle Random SimpleEdgeBased Fruchterman Verfolgen Sie die Veränderung des Graphen, wenn Sie die Regeln anwenden ( redraw anklicken)!
was ist von der in XL erzeugten Graph-Struktur sichtbar (in der 3D-Ansicht) ? alle Geometrieknoten, die von der Wurzel (Zeichen: ^) des Graphen über genau einen Pfad, der nur aus "successor"- und "branch"-Kanten besteht, erreichbar sind. Erzwingen, dass ein Objekt auf jeden Fall sichtbar ist: ==>> ^ Objekt
Anfragen (queries) in den erzeugten Graphen Möglichkeit der Verbindung von Struktur und Funktion Beispiel: suche alle Blätter, die Nachfolger des Knotens c sind, und summiere deren Fläche query
Anfragen (queries) in den erzeugten Graphen Möglichkeit der Verbindung von Struktur und Funktion Beispiel: suche alle Blätter, die Nachfolger des Knotens c sind, und summiere deren Fläche transitive Hüllenbildung Aggregationsoperator query
Anfragen (queries) in den erzeugten Graphen Möglichkeit der Verbindung von Struktur und Funktion Beispiel: suche alle Blätter, die Nachfolger des Knotens c sind, und summiere deren Fläche transitive Hüllenbildung Aggregationsoperator Ergebnis kann übergeben werden an imperative Berechnung query
Query in einem Pflanzen- / Tier-Modell: p:Plant, (* a:Animal, (distance(a,p) < p[radius]) *)
Query in einem Pflanzen- / Tier-Modell: p:Plant, (* a:Animal, (distance(a,p) < p[radius]) *) sucht alle Tiere innerhalb des Radius von p
Query-Syntax: Umgeben wird eine Query mit (* *) Die Elemente werden in ihrer erwarteten Reihenfolge angegeben, z.B.: (* A A B *) sucht nach einen Subgraphen, welcher eine Folge von Knoten der Typen A A B, verbunden durch Nachfolgerkanten, enthält. Testen Sie die Beispiele sm09_b28.rgg, sm09_b29.rgg, sm09_b30.rgg, sm09_b31.rgg
Modellierung von Beschattung erster Modellansatz (stark vereinfachend): Beschattung eines Objekts liegt dann vor, wenn sich in einem gedachten Kegel mit Spitze im Objekt, geöffnet nach oben (z- Richtung), noch andere Objekte befinden. Beispiel: sm09_b42.rgg Lichtkonkurrenz dreier 2-dimensionaler Modellpflanzen
module Segment(int t, int ord) extends F0; module TBud(int t) extends F(1, 1, 1); module LBud extends F(0.5, 0.5, 1); Vector3d z = new Vector3d(0, 0, 1); protected void init() [ Axiom ==> P(2) D(5) V(-0.15) [ TBud(-4) ] RU(90) M(600) RU(-90) [ TBud(0) ] RU(-90) M(1200) RU(90) [ TBud(-8) ]; ] public void run() [ TBud(t), (t TBud(t+1); x:TBud(t), (t >= 0 && empty( (* s:Segment, (s in cone(x, z, 45)) *) ) ) ==> L(random(80, 120)) Segment(0, 0) [ MRel(random(0.5, 0.9)) RU(60) LBud ] [ MRel(random(0.5, 0.9)) RU(-60) LBud ] TBud(t+1); y:LBud, (empty( (* s:Segment, (s in cone(y, z, 45)) *) ) ) ==> L(random(60, 90) Segment(0, 1) RV0 LBud; Segment(t, o), (t Segment(t+1, o); Segment(t, o), (t >= 8 && o == 1) ==>> ; /* Entfernen des ganzen Astes */ ]
Die Software GroIMP dort auch Link auf die Download-Seite und Beispiele-Galerie. Siehe auch Lerneinheiten zu GroIMP (Autor: K. Petersen, M.Sc. Forst., Sommersem. 2009). GroIMP ist ein Open-Source-Projekt!
Interaktive 3D-Plattform GroIMP (Growth-grammar related Interactive Modelling Platform)
GroIMP ist eine Kombination von: - XL-Compiler und -Interpreter - Entwicklungsumgebung für XL - 3D-Modeller (interaktiv) - 3D-Renderer (mehrere Varianten) - 2D-Graphen-Visualisierer - Editor für 3D-Objekte und Attribute - Texturerzeugungswerkzeug - Display für dtd-Dateien - Lichtsimulationswerkzeug
Beispiel eines mit GroIMP realisierten Pflanzenmodells (Gerste):
Anwendungsbeispiel: Modellierung von Parklandschaften (Rogge & Moschner 2007, für Stiftung Branitzer Park, Cottbus) mit GroIMP generierte Erle in VRML-Welt
Ergebnisse aus Architektur-Seminar mit XL: Liang 2007
Jarchow 2007
virtuelle Landschaft (mit Buchen-Fichten-Mischbestand)
weitere Beispiele für Struktur- Funktions-Modelle von Pflanzen, mit GroIMP realisiert:
GroIMP: neuere Erweiterungen Supershape (Klasse von math. definierten Oberflächen) als geometrische Primitivobjekte
GroIMP: neuere Erweiterungen Raten-Zuweisungsoperator: Möglichkeit, effiziente und numerisch stabile Lösungsverfahren für gewöhnliche Differentialgleichungen auf einfache Weise im Modellcode aufzurufen (Hemmerling 2012) Example:
GroIMP: neuere Erweiterungen verbesserte OpenGL-3D-Ansicht zur Visualisierung (Hartmann, Hemmerling 2010)
GroIMP: neuere Erweiterungen integriertes Werkzeug für die Erzeugung von Billboard-Objekten zur schnellen Vegetations- darstellung (Hemmerling 2010)
GroIMP: neuere Erweiterungen integrierter virtueller Laserscanner (realisiert mit Ecole Centrale Paris, Praktikumsarbeit eines Studenten) (Etard 2011)