From d02562fb530985bc0f4d918bfc1c8136a950e937 Mon Sep 17 00:00:00 2001 From: D4rkst3r Date: Thu, 6 Aug 2026 10:09:04 +0200 Subject: [PATCH] Tree Gen 1.33.0: Hoehen-Filter - der Setzling bekommt einen freien Fuss Befund aus der Turnhalle: die Setzlings-Blaetter verteilen sich ueber die ganze Stammhoehe, es entsteht eine belaubte Saeule statt einer Krone. Nachgemessen: 44 % der Cards sassen unter 40 % der Baumhoehe, die tiefste bei 6 %. Der Radius-Filter kann das nicht loesen - er trennt duenn von dick, aber ein junger Stamm ist UEBERALL duenn. Also ein zweiter Filter ueber die Hoehe: Laub erst ab dem Kronenansatz, als Anteil der Baumhoehe. Die Schwelle kommt aus der Bounding Box des Baums, nicht als Meterwert - fest waere sie beim Setzling die halbe Pflanze und beim Altbaum wirkungslos. Kronenansatz je Stufe (LEAF_STUFEN): S1 40 %, S2 35 %, S3 30 %, S4 25 %. unter Ansatz tiefste Card vorher nachher vorher nachher S1 44 % 0 % 6 % 46 % S2 32 % 0 % 24 % 36 % S3 9 % 0 % 31 % 34 % S4 3 % 0 % 34 % 34 % (unveraendert) Beim Altbaum ist der Filter praktisch ein Sicherheitsnetz - dort sitzt ohnehin nichts tief, genau wie gemeldet. Dichte von S1/S2 nachgezogen: der Filter nimmt dem Setzling sonst die Haelfte der Cards (9 -> 4), weil dessen Laub vorher ueber die ganze Stammhoehe verteilt war. Jetzt 11 Cards bei S1, und 486 Tris gegen 800 Budget. 23 Tests bestehen (Suite zweimal durchlaufen). Co-Authored-By: Claude Opus 4.8 --- README.md | 18 +++++++ blender_manifest_tree.toml | 2 +- dist/index.html | 6 +-- dist/index.json | 8 +-- dist/stylized_tree_generator-1.32.0.zip | Bin 38712 -> 0 bytes dist/stylized_tree_generator-1.33.0.zip | Bin 0 -> 39431 bytes stylized_tree_generator.py | 65 ++++++++++++++++++++---- tests/test_blatt_bueschel.py | 59 ++++++++++++++++++++- 8 files changed, 137 insertions(+), 21 deletions(-) delete mode 100644 dist/stylized_tree_generator-1.32.0.zip create mode 100644 dist/stylized_tree_generator-1.33.0.zip diff --git a/README.md b/README.md index 1ad51e7..fff4b45 100644 --- a/README.md +++ b/README.md @@ -416,6 +416,24 @@ ohne Anhebung bekaeme er null Cards. Was zaehlt, ist die Anzahl: | S3 | 67 | 0.37 | 946 | 4300 | | S4 | 130 | 0.45 | 1396 | 4300 | +**Der Hoehen-Filter haelt den Fuss frei.** Der Radius-Filter allein reicht +nicht: er trennt duenn von dick, aber ein junger Stamm ist *ueberall* duenn. +Gemessen sassen beim Setzling **44 %** der Cards unter 40 % der Baumhoehe, die +tiefste bei **6 %** — eine belaubte Saeule statt einer Krone. Der Kronenansatz +steht deshalb je Stufe in `LEAF_STUFEN` (Anteil der Baumhoehe, aus der Bounding +Box abgeleitet — ein fester Meterwert waere beim Setzling die halbe Pflanze): + +| Stufe | Ansatz | unter Ansatz vorher | nachher | tiefste Card | +|---|---|---|---|---| +| S1 | 40 % | 44 % | **0 %** | 6 % → **46 %** | +| S2 | 35 % | 32 % | **0 %** | 24 % → 36 % | +| S3 | 30 % | 9 % | **0 %** | 31 % → 34 % | +| S4 | 25 % | 3 % | **0 %** | 34 % (unveraendert) | + +Beim Altbaum ist der Filter praktisch ein Sicherheitsnetz — dort sitzt ohnehin +nichts tief. Die Dichte von S1/S2 wurde nachgezogen, weil der Filter dem +Setzling sonst die Haelfte der Cards nimmt. + **Der Radius-Filter skaliert mit.** Er trennt duenne Zweige (Laub) von dickem Geaest — aber ein Setzling ist *komplett* duenner als eine feste Schwelle. Mit starren 0.04 m sassen bei S2 **81 %** der Cards am Stamm, bei S3 58 %; jetzt diff --git a/blender_manifest_tree.toml b/blender_manifest_tree.toml index 2972e06..502981a 100644 --- a/blender_manifest_tree.toml +++ b/blender_manifest_tree.toml @@ -1,7 +1,7 @@ schema_version = "1.0.0" id = "stylized_tree_generator" -version = "1.32.0" +version = "1.33.0" name = "Stylized Tree Generator" tagline = "Parametrische Baeume, Palmen, Bueschen mit Wachstums-Stufen" maintainer = "D4rkst3r" diff --git a/dist/index.html b/dist/index.html index ce3e649..9803a52 100644 --- a/dist/index.html +++ b/dist/index.html @@ -50,17 +50,17 @@ 34.1KB - stylized_tree_generator-1.32.0 + stylized_tree_generator-1.33.0 Stylized Tree Generator Parametrische Baeume, Palmen, Bueschen mit Wachstums-Stufen link 4.2.0 - ~ all all - 37.8KB + 38.5KB -

Built 2026-08-06, 07:44

+

Built 2026-08-06, 08:08

diff --git a/dist/index.json b/dist/index.json index 2860f12..3449975 100644 --- a/dist/index.json +++ b/dist/index.json @@ -82,7 +82,7 @@ "id": "stylized_tree_generator", "name": "Stylized Tree Generator", "tagline": "Parametrische Baeume, Palmen, Bueschen mit Wachstums-Stufen", - "version": "1.32.0", + "version": "1.33.0", "type": "add-on", "maintainer": "D4rkst3r", "license": [ @@ -98,9 +98,9 @@ "Mesh", "Modeling" ], - "archive_url": "./stylized_tree_generator-1.32.0.zip", - "archive_size": 38712, - "archive_hash": "sha256:b92b7caccf18b7690b63cee35b8597484a0a789d47a9df529857d23bbf57be8f" + "archive_url": "./stylized_tree_generator-1.33.0.zip", + "archive_size": 39431, + "archive_hash": "sha256:757cecfccbac8f1a50eadd62d47b9439d98550ad2f0677604ed6832610fd74f8" } ] } \ No newline at end of file diff --git a/dist/stylized_tree_generator-1.32.0.zip b/dist/stylized_tree_generator-1.32.0.zip deleted file mode 100644 index 0b4e4e8d13941364868f9b35b13597b8bd117ec5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 38712 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 diff --git a/dist/stylized_tree_generator-1.33.0.zip b/dist/stylized_tree_generator-1.33.0.zip new file mode 100644 index 0000000000000000000000000000000000000000..8e4a01d963562d688a60a0f97976ebedfd171675 GIT binary patch literal 39431 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 literal 0 HcmV?d00001 diff --git a/stylized_tree_generator.py b/stylized_tree_generator.py index b57639f..0dafb36 100644 --- a/stylized_tree_generator.py +++ b/stylized_tree_generator.py @@ -1,7 +1,7 @@ bl_info = { "name": "Stylized Tree Generator", "author": "D4rkst3r", - "version": (1, 32, 0), + "version": (1, 33, 0), "blender": (4, 2, 0), "location": "View3D > Sidebar > Tree Gen", "description": "Parametrischer Baum-/Palmen-/Busch-Generator (Geometry Nodes) mit Wachstums-Stufen", @@ -1202,6 +1202,7 @@ LEAF_DEFAULTS = { # UE gegengeprueft, nicht geschaetzt. "Max Radius": 0.04, "Size": 0.85, + "Min Height": 0.25, # Kronenansatz als Anteil der Baumhoehe "Size Var": 0.35, "Tilt": 0.9, # mehr Rotations-Chaos schliesst Sichtluecken "Seed": 0, @@ -1248,6 +1249,11 @@ def build_leaf_group(rebuild=False): add_in("Use Collection", 'NodeSocketBool', False) add_in("Density", 'NodeSocketFloat', LEAF_DEFAULTS["Density"], 0.0, 20000.0) add_in("Max Radius", 'NodeSocketFloat', LEAF_DEFAULTS["Max Radius"], 0.001, 0.5) + # Kronenansatz als ANTEIL der Baumhoehe. Der Radius-Filter allein reicht + # nicht: er trennt duenn von dick, aber ein junger Stamm ist ueberall duenn - + # gemessen sassen beim Setzling 44 % der Cards unter 40 % der Hoehe, die + # tiefste bei 6 %. Das ergibt eine belaubte Saeule statt einer Krone. + add_in("Min Height", 'NodeSocketFloat', LEAF_DEFAULTS["Min Height"], 0.0, 0.95) add_in("Size", 'NodeSocketFloat', LEAF_DEFAULTS["Size"], 0.01, 5.0) add_in("Size Var", 'NodeSocketFloat', LEAF_DEFAULTS["Size Var"], 0.0, 1.0) add_in("Tilt", 'NodeSocketFloat', LEAF_DEFAULTS["Tilt"], 0.0, 3.14159) @@ -1289,9 +1295,39 @@ def build_leaf_group(rebuild=False): L(_out(na, "Attribute"), cmp.inputs[0]) L(V["Max Radius"], cmp.inputs[1]) + # HOEHEN-FILTER: erst ab dem Kronenansatz. Die Schwelle wird aus der + # Bounding Box des Baums abgeleitet, damit sie fuer jede Groesse stimmt - + # ein fester Meterwert waere beim Setzling die halbe Pflanze. + bb = N("GeometryNodeBoundBox"); bb.location = (-700, -60) + L(_out(tree, "Geometry"), _sock(bb, "Geometry")) + bmin = N("ShaderNodeSeparateXYZ"); bmin.location = (-560, -60) + L(_out(bb, "Min"), bmin.inputs[0]) + bmax = N("ShaderNodeSeparateXYZ"); bmax.location = (-560, -140) + L(_out(bb, "Max"), bmax.inputs[0]) + bh = N("ShaderNodeMath"); bh.location = (-420, -100); bh.operation = 'SUBTRACT' + L(bmax.outputs["Z"], bh.inputs[0]); L(bmin.outputs["Z"], bh.inputs[1]) + bmul = N("ShaderNodeMath"); bmul.location = (-280, -100); bmul.operation = 'MULTIPLY' + L(bh.outputs[0], bmul.inputs[0]); L(V["Min Height"], bmul.inputs[1]) + bschwelle = N("ShaderNodeMath"); bschwelle.location = (-140, -100) + bschwelle.operation = 'ADD' + L(bmin.outputs["Z"], bschwelle.inputs[0]); L(bmul.outputs[0], bschwelle.inputs[1]) + + hpos = N("GeometryNodeInputPosition"); hpos.location = (-560, -220) + hsep = N("ShaderNodeSeparateXYZ"); hsep.location = (-420, -220) + L(hpos.outputs[0], hsep.inputs[0]) + hcmp = N("FunctionNodeCompare"); hcmp.location = (-140, -220) + hcmp.data_type = 'FLOAT'; hcmp.operation = 'GREATER_THAN' + L(hsep.outputs["Z"], hcmp.inputs[0]) + L(bschwelle.outputs[0], hcmp.inputs[1]) + + beide = N("FunctionNodeBooleanMath"); beide.location = (0, 20) + beide.operation = 'AND' + L(cmp.outputs[0], beide.inputs[0]) + L(hcmp.outputs[0], beide.inputs[1]) + dist = N("GeometryNodeDistributePointsOnFaces"); dist.location = (-320, 200) L(_out(tree, "Geometry"), _sock(dist, "Mesh")) - L(cmp.outputs[0], _sock(dist, "Selection")) + L(beide.outputs[0], _sock(dist, "Selection")) L(V["Density"], _sock(dist, "Density")) L(V["Seed"], _sock(dist, "Seed")) @@ -1398,16 +1434,20 @@ def leaf_socket_ids(ng): LEAF_RADIUS_YOUNG = 0.20 # Dichte-Anteil Groessen-Anteil +# Dichte Groesse Kronenansatz LEAF_STUFEN = ( - (6.00, 0.45), # S1 - wenige, kleine Bueschel auf winziger Zweigflaeche - (1.60, 0.63), # S2 - 15 % unter der vollen Deckung (nach Flaeche gerechnet) - (1.00, 0.82), # S3 - (1.00, 1.00), # S4 - volle Dichte + # S1/S2 Dichte nachgezogen, nachdem der Hoehen-Filter dazukam: er nimmt dem + # Setzling die Haelfte der Cards (9 -> 4), weil dessen Laub vorher ueber die + # ganze Stammhoehe verteilt war. + (13.0, 0.45, 0.40), # S1 - wenige kleine Bueschel, Fuss bleibt frei + (2.10, 0.63, 0.35), # S2 + (1.00, 0.82, 0.30), # S3 + (1.00, 1.00, 0.25), # S4 - Sicherheitsnetz, hier sitzt ohnehin nichts tief ) def _stufen_anteile(growth_t): - """Dichte- und Groessen-Anteil fuer einen Wachstums-Fortschritt. + """Dichte-, Groessen- und Kronenansatz-Wert fuer einen Wachstums-Fortschritt. Die Stufen liegen bei t = 0 / 1/3 / 2/3 / 1 (vier Stufen). Zwischen den Stuetzstellen wird linear gemischt, damit auch drei oder fuenf Stufen @@ -1417,9 +1457,11 @@ def _stufen_anteile(growth_t): x = max(0.0, min(1.0, growth_t)) * (n - 1) i = min(int(x), n - 2) f = x - i - d0, g0 = LEAF_STUFEN[i] - d1, g1 = LEAF_STUFEN[i + 1] - return d0 + (d1 - d0) * f, g0 + (g1 - g0) * f + d0, g0, h0 = LEAF_STUFEN[i] + d1, g1, h1 = LEAF_STUFEN[i + 1] + return (d0 + (d1 - d0) * f, + g0 + (g1 - g0) * f, + h0 + (h1 - h0) * f) def _stufen_budget(s, growth_t): @@ -2554,7 +2596,7 @@ class TREEGEN_OT_leaves(Operator): # traegt kleinere Bueschel. Baeume ohne Wachstums-Stufe haben # growth_t = 1.0 und bleiben unveraendert. gt = float(t.get("growth_t", 1.0)) - d_anteil, g_anteil = _stufen_anteile(gt) + d_anteil, g_anteil, h_anteil = _stufen_anteile(gt) # Der RADIUS-FILTER muss mit dem Baum schrumpfen. Er trennt # duenne Zweige (Laub) von dickem Geaest (kein Laub) - aber ein @@ -2575,6 +2617,7 @@ class TREEGEN_OT_leaves(Operator): Size=s.leaf_size * g_anteil, **{"Size Var": s.leaf_size_var, "Max Radius": s.leaf_max_radius * r_faktor, + "Min Height": h_anteil, "Tilt": s.leaf_tilt, "Seed": s.seed}) except Exception as exc: # noqa: BLE001 self.report({'WARNING'}, "%s: %s" % (t.name, exc)) diff --git a/tests/test_blatt_bueschel.py b/tests/test_blatt_bueschel.py index 9903ba7..9915e65 100644 --- a/tests/test_blatt_bueschel.py +++ b/tests/test_blatt_bueschel.py @@ -52,8 +52,8 @@ if not (130.0 <= s.leaf_density <= 200.0): % s.leaf_density) # Die Deckung steht als Tabelle pro Stufe, nicht als Formel. Card-ANZAHL muss # ueber die Stufen steigen, Card-Groesse auch. -_d0, _g0 = tg._stufen_anteile(0.0) -_d1, _g1 = tg._stufen_anteile(1.0) +_d0, _g0, _h0 = tg._stufen_anteile(0.0) +_d1, _g1, _h1 = tg._stufen_anteile(1.0) if _g0 >= _g1: fails.append("Groessen-Anteil steigt nicht ueber die Stufen (%.2f -> %.2f)" % (_g0, _g1)) @@ -193,6 +193,61 @@ if kanten and kanten[0] > 0: "steht auf %.0f%% - die Wachstums-Kopplung greift nicht" % (100 * anteil, 100 * s.leaf_size_growth)) +# --- 3a) Hoehen-Filter: der Fuss bleibt frei ----------------------------- +# Der Radius-Filter allein reicht nicht. Er trennt duenn von dick, aber ein +# junger Stamm ist UEBERALL duenn - gemessen sassen beim Setzling 44 % der +# Cards unter 40 % der Hoehe, die tiefste bei 6 %. Das ergibt eine belaubte +# Saeule statt einer Krone. Der Hoehen-Filter setzt den Kronenansatz je Stufe. +print("") +print("%-18s %7s %6s %11s %11s" % ("Stufe", "Hoehe", "Cards", "unter Ansatz", + "tiefste Card")) +for st in staemme: + bl = bpy.data.objects.get(st.name + "_Leaf") + if bl is None: + continue + zs = [v.co.z for v in st.data.vertices] + z0, h = min(zs), max(zs) - min(zs) + gt = float(st.get("growth_t", 1.0)) + _, _, ansatz = tg._stufen_anteile(gt) + + dg = bpy.context.evaluated_depsgraph_get() + ev = bl.evaluated_get(dg) + m = ev.to_mesh() + # Card-Mitten ueber die Face-Gruppen (die Testkarte hat 2 Faces je Card) + proc = 2 + mitten = [] + for i in range(0, len(m.polygons), proc): + gruppe = m.polygons[i:i + proc] + mitten.append(sum(p.center.z for p in gruppe) / len(gruppe)) + ev.to_mesh_clear() + if not mitten: + continue + + unter = 100.0 * sum(1 for z in mitten if (z - z0) / h < ansatz) / len(mitten) + tiefste = 100.0 * (min(mitten) - z0) / h + print("%-18s %7.2f %6d %9.0f%% %10.0f%%" + % (st.name, h, len(mitten), unter, tiefste)) + + # Ein paar Prozent Toleranz: die Card-Mitte darf leicht unter den Ansatz + # rutschen, weil die Card um ihren Punkt herum sitzt. + if unter > 15.0: + fails.append("%s: %.0f%% der Cards unter dem Kronenansatz (%.0f%% der " + "Hoehe) - der Fuss ist belaubt" % (st.name, unter, + 100 * ansatz)) + if tiefste < ansatz * 100 * 0.7: + fails.append("%s: tiefste Card bei %.0f%% der Hoehe, Kronenansatz liegt " + "bei %.0f%% - Laub klebt am Stamm" + % (st.name, tiefste, 100 * ansatz)) + +# Der Ansatz muss beim Setzling HOEHER liegen als beim Altbaum: dessen +# Verteilung passt schon von selbst, der Setzling braucht die Hilfe. +_, _, a_jung = tg._stufen_anteile(0.0) +_, _, a_alt = tg._stufen_anteile(1.0) +print("Kronenansatz: S1 %.0f%%, S4 %.0f%%" % (100 * a_jung, 100 * a_alt)) +if a_jung <= a_alt: + fails.append("Kronenansatz beim Setzling (%.2f) nicht hoeher als beim " + "Altbaum (%.2f)" % (a_jung, a_alt)) + # --- 3b) Budget je Stufe statt global ----------------------------------- print("") print("%-18s %6s %8s %8s" % ("Stufe", "t", "Tris", "Budget"))