Tree Gen 1.25.0: Palme, Busch und Setzlinge nachgemessen und korrigiert
Drei gemeldete Probleme - alle bestaetigt, Ursachen gemessen statt geraten.
1) Palme sah "extrem komisch" aus
Gemessen: Kronenradius/Hoehe 0.11 - die Wedel klebten als Mop-Kopf am
Stamm. Zielwert aus zwei unabhaengigen Quellen, die sich decken:
tree-gen palm.py (Weber&Penn) setzt Wedellaenge = 0.3 x Stamm, die
TreeIt-Referenzpalme kommt auf 3.3 m bei 4.33 m = 0.38.
Jetzt 0.30. Dazu der Winkel: tree-gen gibt down_angle 60 + curve 40 an,
also schraeg raus und ueberbiegen. Mit Branch Up 0 allein standen die
Wedel als gerade Antennenspeichen ab; mit Up 0.35 / Droop 1.2 steigen sie
gemessen 1.1 m ueber den Ansatz und kippen dann ab.
2) Busch sah aus wie ein Baum
Gemessen: 1.81 m hoch bei 0.84 m Breite (B/H 0.46), durchgehender Stamm,
Aeste erst ab 15 %, Wurzelanlauf wie beim Baum. Das IST ein Baeumchen.
Botanisch ist der Unterschied nicht die Groesse, sondern die Architektur:
mehrere Stiele ab Boden, kein Leittrieb, gemessen nach Hoehe UND Breite.
Jetzt kurzer Stumpf + Aeste ab Boden: 1.20 m hoch, 2.0 m breit (B/H 1.6).
3) Kleinste Wachstumsstufe sah komisch aus / "nur runterskaliert"
Gemessen: der Setzling war relativ zu seiner Hoehe 2.4x DICKER als der
Altbaum (r/H 0.025 gegen 0.0104), weil Trunk Radius mit 0.30 skalierte,
die Hoehe aber mit 0.16. Botanisch gilt die elastische Aehnlichkeit nach
McMahon: Hoehe ~ Durchmesser^(2/3), also Faktor 0.16^1.5 = 0.064.
Dazu behielt jeder Setzling den vollen Wurzelanlauf -> Trichterfuss.
Neu ausserdem: Aeste schrumpfen mit der Hoehe statt langsamer, sitzen
tiefer (Aufasten kommt erst mit dem Alter) und haengen weniger.
Nicht jede Pflanze waechst wie ein Laubbaum -> GROWTH_OVERRIDES:
Palme kein Dickenwachstum, erst Durchmesser dann Hoehe (UF/IFAS ENH1212:
"its diameter is fixed for life") -> Setzling ist ein kurzer Stumpf
Kaktus Sukkulent, gleiche Logik, und OHNE Arme: Saguaros bilden die erst
mit 50-70 Jahren bei rund 2 m Hoehe (NPS)
Weide haengt erst mit langen Zweigen; sonst reichten sie 0.27 m unter
den Stammfuss und das Asset waere in UE geschwebt
Zwei Bugs fielen dabei auf:
- Branch Count = 0 schaltete die Aeste NICHT ab - dieselbe Falle wie damals
bei Sub Count (Curve to Points klemmt Count auf min. 1). Fuer die Sub-Ebene
gab es laengst einen Geometry-Switch, fuer die Hauptaeste nicht.
- Im Busch-Preset stand "Branch Count" zweimal im selben Dict; der zweite
Eintrag (10) hat den ersten (14) still ueberschrieben.
Die sieben uebrigen Presets sind unveraendert (gleiche Maße, gleiche Tris).
Neu: tests/test_proportionen.py nagelt die Zielwerte fest. 14 Tests bestehen.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -170,6 +170,42 @@ Gras-, Blumen- und Farn-Bueschel. Der Kern ist die **Wind-UV**:
|
||||
|
||||
## Stylized Tree Generator
|
||||
|
||||
### Proportionen: gemessen, nicht geschaetzt
|
||||
|
||||
Drei Presets sahen falsch aus. Die Ursachen wurden gemessen bzw. belegt, nicht
|
||||
geraten - `tests/test_proportionen.py` haelt die Werte fest:
|
||||
|
||||
| Was | vorher (gemessen) | jetzt | Quelle fuer den Zielwert |
|
||||
|---|---|---|---|
|
||||
| **Palmenkrone** | Radius/Hoehe **0.11** - ein Mop-Kopf am Stamm | **0.30** | `tree-gen palm.py` (Weber&Penn): Wedellaenge 0.3 x Stamm; TreeIt-Referenzpalme 3.3 m bei 4.33 m = 0.38 |
|
||||
| **Busch** | 1.81 m hoch, 0.84 m breit (B/H **0.46**) - ein Baeumchen | 1.20 m hoch, 2.0 m breit (B/H **1.6**) | Strauch = mehrere Stiele ab Boden, kein Leittrieb; gemessen nach Hoehe UND Breite |
|
||||
| **Setzling** | relativ **2.4x dicker** als der Altbaum (r/H 0.025 gegen 0.0104) | proportional gleich schlank | McMahon, elastische Aehnlichkeit: Hoehe ~ Durchmesser^(2/3), also Faktor 0.16^1.5 |
|
||||
|
||||
Der Wedel-Winkel kam dazu: mit `Branch Up 0` standen die Wedel als gerade
|
||||
Antennenspeichen ab. `tree-gen` gibt `down_angle 60` + `curve 40` an - also
|
||||
schraeg raus und dann ueberbiegen. Gemessen steigen die Wedel jetzt 1.1 m ueber
|
||||
den Ansatz und kippen dann ab.
|
||||
|
||||
**Nicht jede Pflanze waechst wie ein Laubbaum** (`GROWTH_OVERRIDES`):
|
||||
|
||||
- **Palme:** Einkeimblaettrige haben kein Dickenwachstum - erst der Durchmesser,
|
||||
dann die Hoehe. „Once a palm stem emerges from the apical meristem, its
|
||||
diameter is fixed for life" (UF/IFAS ENH1212). Der Setzling ist ein kurzer
|
||||
Stumpf in fast voller Dicke, kein Schoessling.
|
||||
- **Kaktus:** Sukkulent, gleiche Logik. Ausserdem **ohne Arme** - Saguaros
|
||||
bilden die erst mit 50-70 Jahren, bei rund 2 m Hoehe (NPS).
|
||||
- **Weide:** haengt erst, wenn die Zweige lang genug sind. Junge Weiden wachsen
|
||||
aufrecht; mit dem allgemeinen Droop reichten ihre Zweige 0.27 m unter den
|
||||
Stammfuss und das Asset waere in UE geschwebt.
|
||||
|
||||
**Dabei gefunden:** `Branch Count = 0` schaltete die Aeste **nicht** ab -
|
||||
dieselbe Falle wie seinerzeit bei `Sub Count` (`Curve to Points` klemmt Count
|
||||
auf mindestens 1). Fuer die Sub-Ebene gab es laengst einen Geometry-Switch, fuer
|
||||
die Hauptaeste nicht. Jetzt liegen beide Ebenen hinter demselben Schalter.
|
||||
Ebenfalls gefunden: im Busch-Preset stand `Branch Count` **zweimal** im selben
|
||||
Dict - der zweite Eintrag hat den ersten still ueberschrieben.
|
||||
|
||||
|
||||
Parametrischer **Geaest**-Generator (Stamm + Aeste + Sub-Aeste) als Geometry-Nodes-
|
||||
Gruppe. Blaetter/Krone macht man selbst — das Addon liefert die Struktur.
|
||||
|
||||
@@ -354,6 +390,7 @@ gefiltert `.\run_tests.ps1 -Filter panels`.
|
||||
|
||||
| Datei | prueft |
|
||||
|---|---|
|
||||
| `tests/test_proportionen.py` | Baum-Proportionen: Palmenkrone, Strauch-Breite, Setzling-Schlankheit, Branch Count 0 |
|
||||
| `tests/test_panels.py` | Alle vier Addons: registrieren, jedes Panel zeichnet, Unter-Panels im richtigen Tab, **jede Property irgendwo erreichbar** |
|
||||
| `tests/test_tree_addon.py` | Tree-Addon: Presets, Wachstums-Stufen, UVs, Modifier-Apply |
|
||||
| `tests/test_ecogame_rock.py` | Fels-Benennung, Bake liefert nur `_albedo`/`_normal`, AO im Albedo |
|
||||
|
||||
Reference in New Issue
Block a user