2 Commits
Author SHA1 Message Date
D4rkst3randClaude Opus 4.8 fa7067d42e Tree Gen 1.35.0: Node-Gruppen-Waechter + Mindestradius fuer Saemlinge
1) build_group riss Szenen-Baeume ab
   Die Gruppe GN_Tree wurde bei JEDEM Erzeugen geloescht und neu angelegt -
   damit zeigten alle bereits erzeugten Baeume auf ein totes Datablock und
   evaluierten leer. Gemessen: nach vier Arten-Erzeugungen lebte nur noch die
   letzte. Dass direkt nach dem Erzeugen exportiert wurde, hat das verdeckt.

   Jetzt ein Waechter mit ZWEI Kriterien: abgelegte Schema-Version
   (TREE_SCHEMA) UND die tatsaechlich vorhandenen Eingaenge. Die Version allein
   reicht nicht - wer waehrend der Entwicklung Sockets aendert ohne die Zahl
   anzufassen, bekaeme eine veraltete Gruppe untergeschoben. Muss doch neu
   gebaut werden, werden bestehende Modifier auf die neue Gruppe umgehaengt.

   Beide Pfade gemessen: vier Arten nacheinander leben alle (624/796/924/1036
   Verts), und nach build_group(rebuild=True) ebenfalls unveraendert.

2) Saemlinge zu duenn
   Die McMahon-Skalierung macht duennstaemmige Arten am Setzling zu Draehten:
   Birke 0.6 cm Fussradius gegen 1.9 der Eiche - dreimal duenner, waehrend der
   Unterschied beim Altbaum nur 1.2x betraegt. Die Regel gilt fuer die Statik
   ausgewachsener Baeume; ein Saemling ist eine Pflanze, kein Balken.
   SEEDLING_MIN_RADIUS + SEEDLING_MIN_FLARE heben die duennen Arten an, ohne
   die dicken anzufassen. Danach liegen alle bei 2.8 cm.

   test_proportionen laesst die McMahon-Abweichung genau dort zu, wo der Boden
   greift, und prueft dass sie nicht weiter geht - die Regel bleibt sonst scharf.

23 Tests bestehen.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-06 11:08:24 +02:00
D4rkst3randClaude Opus 4.8 26131f9346 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>
2026-08-01 22:47:43 +02:00