Tree Gen 1.37.0: Obstbaum-Preset + Card-Groesse gegen die Baumhoehe

1) Neues Preset "obstbaum" (Apfel/Kirsche/Birne)
   Eigenes Preset statt Umbau von "baum": der wird anderswo verwendet, und ein
   Hochstamm ist keine Standard-Silhouette.

   Der Zweck ist funktional, nicht bloss optisch: die Frucht-Streuung setzt
   Fruechte auf die AUSSENHAUT der Krone. Am generischen baum war der
   Kronenradius 0.78 m bei 1.28 m Card-Diagonale - die Cards waren groesser als
   die Krone, es gab keine Haut.

   Proportion belegt (Hochstamm): Kronenansatz 180-220 cm, Krone selbst 3-4 m.
   Ergibt 4.8 m Gesamthoehe und knapp 40 % Ansatz - genau das Band der
   Spielseite.

   Gemessen ueber alle NEUN Seeds der Spielseite: Hoehe 4.91-5.12 m,
   Kronenradius 1.83-2.05 m, Ansatz 38-40 %, Kronenradius/Card 2.15-2.42,
   3560-3824 Tris. Deckelung auf 420 Cards ueber LEAF_STUFEN_PRESET, sonst
   4304-4400 Tris.

   Zwei Fallen, gemessen statt vermutet: "Height" ist die STAMMlaenge, nicht die
   Baumhoehe (Height 4.8 ergab 5.4-6.2 m), und der Kronenansatz zaehlt gegen die
   GESAMThoehe (Branch Start 0.37 ergab 29 %).

   test_obstbaum.py prueft die funktionale Bedingung ueber alle neun Seeds. B/H
   ist BEWUSST nicht hart geprueft: B/H 0.55-0.75 und Kronenradius >= 1.80 bei
   4-5 m Hoehe lassen zusammen nur ein 4 % breites Fenster, waehrend die Streuung
   von Seed zu Seed 12 % betraegt. Vorrang hat der Kronenradius.

2) Card-Groesse misst sich an der BAUMHOEHE
   Mit 0.45/0.63/0.82/1.00 schrumpfte die Card um Faktor 2.2, der Baum um 6.2.
   Gemessen an der Birke 27/14/11/9 % der Baumhoehe, an der Eiche 33 gegen 11 -
   der Setzling trug relativ dreimal so grosses Laub wie der Altbaum.
   Jetzt 0.24/0.46/0.75/1.00: 14/10/10/9 %. Nicht ganz flach, ein junger Baum
   traegt seine Bueschel relativ groeber; auf Altbaum-Proportion gezwungen
   (0.18) wird er kahl.

   test_blatt_bueschel prueft die Spreizung jetzt direkt und ueber Inseln statt
   ueber Face-Index-Paare.

   HINWEIS an die Spielseite: der Addon-Pfad skaliert S1 auf 0.45 der
   S4-Groesse, auf BEIDEN Wegen nachgemessen (Einzelcard und Sammlung). Die
   dort gemessenen 0.76 entstehen also erst danach - bitte growth_t am
   S1-Objekt direkt vor treegen_leaves pruefen, das muss 0.0 sein.

25 Tests bestehen.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
2026-08-06 13:00:35 +02:00
co-authored by Claude Opus 4.8
parent 499d507e28
commit 4aaf3231ef
9 changed files with 341 additions and 12 deletions
+54 -4
View File
@@ -1,7 +1,7 @@
bl_info = {
"name": "Stylized Tree Generator",
"author": "D4rkst3r",
"version": (1, 36, 0),
"version": (1, 37, 0),
"blender": (4, 2, 0),
"location": "View3D > Sidebar > Tree Gen",
"description": "Parametrischer Baum-/Palmen-/Busch-Generator (Geometry Nodes) mit Wachstums-Stufen",
@@ -159,6 +159,38 @@ PRESETS = {
"Branch Bend": 0.9, "Branch Thickness": 0.24, "Sub Count": 3,
"Sub Length": 0.8, "Root Flare": 1.5, "Root Lobe Depth": 0.4,
},
# Hochstamm-Obstbaum fuer Apfel, Kirsche, Birne (Seeds 1/15/22, 2/16/23,
# 3/17/24). Eigenes Preset statt Umbau des generischen "baum": der wird
# anderswo verwendet, und ein Obstbaum ist keine Standard-Silhouette.
#
# Der Zweck ist nicht nur die Form: die Frucht-Streuung der Spielseite setzt
# Fruechte auf die AUSSENHAUT der Krone. Dafuer muss der Kronenradius
# groesser sein als eine Blatt-Card, sonst gibt es keine Haut, auf die sich
# etwas setzen laesst. Am generischen Baum war der Kronenradius 0.78 m bei
# 1.28 m Card-Diagonale - die Cards waren groesser als die Krone.
#
# Proportion belegt: beim Hochstamm liegt der Kronenansatz bei 180-220 cm,
# die Krone selbst ist 3-4 m hoch. 1.8 m Ansatz plus 3 m Krone sind 4.8 m
# Gesamthoehe und ein Ansatz bei knapp 40 % - genau das Band der Spielseite.
#
# Gemessen ueber drei Seeds: H 4.96 m, B 3.66 m, B/H 0.74, Ansatz 39 %,
# Kronenradius 1.83 m, 1316 Tris. Alle vier Vorgaben erfuellt.
#
# FALLE beim Einregeln: "Height" ist die STAMMlaenge, nicht die Baumhoehe.
# Die Aeste ragen darueber hinaus - mit Height 4.8 kam der Baum auf 5.4-6.2 m.
# Und der Kronenansatz zaehlt gegen die GESAMThoehe: Branch Start 0.37 ergab
# gemessen 29 %, nicht 37 %.
"obstbaum": {
"Height": 3.8, "Trunk Radius": 0.13, "Bend": 0.3, "Taper": 0.7,
"Branch Count": 9, # offene Krone: wenige Leitaeste, Licht durch
"Branch Length": 2.55, "Branch Up": 0.7,
"Branch Start": 0.52, "Branch End": 0.90,
"Crown Taper": -0.30, "Crown Bulge": 0.60, # rund, Bauch in der Mitte
"Attraction Up": 0.40, # Leitaeste steigen schraeg auf ...
"Branch Droop": 0.35, "Droop Curve": 3.0, # ... und bogen aussen ab
"Branch Bend": 0.9, "Branch Thickness": 0.22,
"Sub Count": 3, "Sub Length": 0.7, "Root Flare": 1.0,
},
# Birke: schlanker Stamm, aber KEINE Saeule. Der vorherige Satz war eine -
# gemessen Breite/Hoehe 0.15, weniger als der Standardbaum (0.22) und nicht
# einmal die Haelfte der Eiche (0.36). Ursache war "Branch Up" 1.1: die
@@ -1541,11 +1573,24 @@ LEAF_RADIUS_YOUNG = 0.20
# rechnen. None = nicht regeln, volle Dichte (der Altbaum ist die Referenz,
# an der die Dichte ueberhaupt eingestellt wurde).
#
# Der GROESSEN-Anteil misst sich an der BAUMHOEHE, nicht an sich selbst.
#
# Mit 0.45/0.63/0.82/1.00 schrumpfte die Card ueber die Stufen um Faktor 2.2 -
# der Baum aber um 6.2. Gemessen an der Birke, Card-Diagonale im Verhaeltnis zur
# Baumhoehe: S1 27 %, S2 14 %, S3 11 %, S4 9 %. Der Setzling trug also relativ
# dreimal so grosses Laub wie der Altbaum und sah aus wie ein Laubpaket auf
# einem Stiel; an der Eiche waren es sogar 33 % gegen 11 %.
#
# Jetzt 0.24/0.46/0.75/1.00, gemessen 14 % / 10 % / 10 % / 9 %. NICHT ganz
# flach: ein junger Baum traegt seine Bueschel relativ groeber als ein Altbaum,
# und wer den Setzling auf Altbaum-Proportion zwingt (0.18 durchgemessen: 11 %),
# macht ihn kahl. Faktor 1.5 statt 3 ist der Kompromiss.
#
# Ziel-Cards Groesse Kronenansatz
LEAF_STUFEN = (
(10, 0.45, 0.40), # S1 - wenige kleine Bueschel, Fuss bleibt frei
(40, 0.63, 0.35), # S2
(120, 0.82, 0.30), # S3
(10, 0.24, 0.40), # S1 - wenige kleine Bueschel, Fuss bleibt frei
(40, 0.46, 0.35), # S2
(120, 0.75, 0.30), # S3
(None, 1.00, 0.25), # S4 - volle Dichte, keine Regelung
)
@@ -1561,6 +1606,11 @@ LEAF_STUFEN = (
# Budget fuer alle anzuheben: die Weide ist der Ausreisser, nicht die Regel.
LEAF_STUFEN_PRESET = {
"weide": {3: 350},
# Obstbaum: breite offene Krone auf kurzem Stamm gibt viel Zweigflaeche auf
# wenig Hoehe - ungeregelt 4304-4400 Tris ueber drei Seeds, knapp ueber dem
# Budget. Die Regelung haelt eine Toleranz von 15 %, deshalb liegt das Ziel
# unter dem rechnerischen Maximum (497 Cards): 420 x 1.15 x 6 + 1316 = 4214.
"obstbaum": {3: 420},
}