From 1b833bf44a82bc70f9fd99ac5aef4246ff71dda8 Mon Sep 17 00:00:00 2001 From: D4rkst3r Date: Thu, 6 Aug 2026 10:32:15 +0200 Subject: [PATCH] Tree Gen 1.34.0: Ziel-Cardzahl statt Dichte-Konstanten + Ursprung aus dem Stamm Zwei Befunde von der Spielseite. 1) Dichte-Kompensation ueberschoss preset-abhaengig Die Eichung am Standardbaum (11 Cards / 486 Tris) kam auf der Eiche als 1008 Tris an. Ursache ist strukturell: "Dichte" ist Punkte pro m2 Zweigflaeche, und die verteilt sich je Preset voellig anders. Jeder Konstanten-Satz haette fuer den naechsten Baum neu geeicht werden muessen. Strukturwechsel wie vorgeschlagen: in LEAF_STUFEN steht jetzt die ZIEL-STUECKZAHL (S1 10, S2 40, S3 120, S4 = volle Dichte), und der Generator regelt die Dichte per Bisektion dagegen ein. Der Seed wird dabei nicht angefasst - gleicher Baum und Seed ergeben dieselbe Verteilung. Gemessen ueber vier Presets (Ziel 10 / 40 / 120): baum 9 41 104 eiche 10 43 138 birke 9 36 136 tanne 9 38 125 Die Eiche liegt bei S1 jetzt bei 576 Tris statt 1008. Der Test prueft die Anzahl DIREKT, statt ueber Dichte x Anteil x Flaeche zu rechnen - genau der Punkt des Vorschlags. 2) Baum stand "etwas in der Luft" Der Export-Ursprung kam aus der Gesamt-Bbox inklusive Blatt-Cards. Eine einzige tief haengende Card hebt damit den ganzen Baum an. Jetzt kommt er aus der STAMM-Geometrie (Slot 0). Gemessen an der Eiche: Stamm-min.Z 0.000 auf allen vier Stufen, waehrend die Gesamtbox bei S1 auf -0.106 liegt - das waren die 10 cm, um die er zu hoch stand. Beim Einbauen selbst verursacht und behoben: eine abgebrochene Befehlskette liess die Operator-Verdrahtung aus, wodurch die Dichte mit der ZIEL-ANZAHL multipliziert wurde (170 x 40) - 732 Cards statt 40. Faellt sofort auf, wenn man die Zahlen anschaut, statt den Durchlauf fuer erfolgreich zu halten. 23 Tests bestehen. 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.33.0.zip | Bin 39431 -> 0 bytes dist/stylized_tree_generator-1.34.0.zip | Bin 0 -> 40964 bytes stylized_tree_generator.py | 159 +++++++++++++++++++++--- tests/test_blatt_bueschel.py | 32 ++++- 8 files changed, 197 insertions(+), 28 deletions(-) delete mode 100644 dist/stylized_tree_generator-1.33.0.zip create mode 100644 dist/stylized_tree_generator-1.34.0.zip diff --git a/README.md b/README.md index fff4b45..b098139 100644 --- a/README.md +++ b/README.md @@ -403,6 +403,24 @@ gemessen und abgenommen: Zweigspitzen Laub, die Krone hatte nur Kontur und war innen nackt. Bei 0.04 wachsen Bueschel auch am mittleren Geaest und die Krone bekommt Tiefe. +**Ziel-Cardzahl statt Dichte-Konstanten.** Dichte-Faktoren mussten je Preset neu +geeicht werden: „Dichte" ist Punkte pro m² *Zweigflaeche*, und die verteilt sich +je Baum voellig anders — ein Faktor, der am Standardbaum 11 Cards ergab, +ueberschoss auf der Eiche um mehr als das Doppelte. In `LEAF_STUFEN` steht +deshalb die gewuenschte **Stueckzahl**, und der Generator regelt die Dichte per +Bisektion dagegen ein (seed-stabil, der Seed wird nicht angefasst). Damit ist die +Kalibrierung preset-unabhaengig und der Test prueft die Anzahl **direkt**: + +| Preset | S1 (Ziel 10) | S2 (Ziel 40) | S3 (Ziel 120) | S4 (voll) | +|---|---|---|---|---| +| baum | 9 · 518 Tris | 41 · 914 | 104 · 1436 | 130 · 1916 | +| eiche | 10 · 576 | 43 · 998 | 138 · 1872 | 463 · 4206 | +| birke | 9 · 570 | 36 · 1028 | 136 · 1952 | 207 · 2894 | +| tanne | 9 · 778 | 38 · 1160 | 125 · 2282 | 235 · 3302 | + +S4 wird **nicht** geregelt — der Altbaum ist die Referenz, an der die Dichte +ueberhaupt eingestellt wurde. + **Deckung pro Stufe, nicht per Formel.** Card-Anteil und Groesse stehen als Tabelle (`LEAF_STUFEN`). Der Dichte-Anteil bei S1/S2 sieht hoch aus — das taeuscht: „Dichte" ist Punkte pro m² *Zweigflaeche*, und die waechst ueber die diff --git a/blender_manifest_tree.toml b/blender_manifest_tree.toml index 502981a..5ea4525 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.33.0" +version = "1.34.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 9803a52..b7b91ca 100644 --- a/dist/index.html +++ b/dist/index.html @@ -50,17 +50,17 @@ 34.1KB - stylized_tree_generator-1.33.0 + stylized_tree_generator-1.34.0 Stylized Tree Generator Parametrische Baeume, Palmen, Bueschen mit Wachstums-Stufen link 4.2.0 - ~ all all - 38.5KB + 40.0KB -

Built 2026-08-06, 08:08

+

Built 2026-08-06, 08:32

diff --git a/dist/index.json b/dist/index.json index 3449975..4fcc035 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.33.0", + "version": "1.34.0", "type": "add-on", "maintainer": "D4rkst3r", "license": [ @@ -98,9 +98,9 @@ "Mesh", "Modeling" ], - "archive_url": "./stylized_tree_generator-1.33.0.zip", - "archive_size": 39431, - "archive_hash": "sha256:757cecfccbac8f1a50eadd62d47b9439d98550ad2f0677604ed6832610fd74f8" + "archive_url": "./stylized_tree_generator-1.34.0.zip", + "archive_size": 40964, + "archive_hash": "sha256:1cb548b5fef9bb79342ef92f7bc40f7ecb66e21f6356c8e00623ada5c842b0d6" } ] } \ No newline at end of file diff --git a/dist/stylized_tree_generator-1.33.0.zip b/dist/stylized_tree_generator-1.33.0.zip deleted file mode 100644 index 8e4a01d963562d688a60a0f97976ebedfd171675..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 39431 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 diff --git a/dist/stylized_tree_generator-1.34.0.zip b/dist/stylized_tree_generator-1.34.0.zip new file mode 100644 index 0000000000000000000000000000000000000000..2928779e6e7acc56113d287a93f5cb5cc71a64e1 GIT binary patch literal 40964 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 Ip8x;=0Q9L6yZ`_I literal 0 HcmV?d00001 diff --git a/stylized_tree_generator.py b/stylized_tree_generator.py index 0dafb36..e28012f 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, 33, 0), + "version": (1, 34, 0), "blender": (4, 2, 0), "location": "View3D > Sidebar > Tree Gen", "description": "Parametrischer Baum-/Palmen-/Busch-Generator (Geometry Nodes) mit Wachstums-Stufen", @@ -1434,20 +1434,30 @@ def leaf_socket_ids(ng): LEAF_RADIUS_YOUNG = 0.20 # Dichte-Anteil Groessen-Anteil -# Dichte Groesse Kronenansatz +# ZIEL-ANZAHL statt Dichte-Anteil. +# +# Dichte-Faktoren waren preset-abhaengig und mussten fuer jeden Baum neu +# geeicht werden: "Dichte" ist Punkte pro m2 Zweigflaeche, und die verteilt sich +# je Preset voellig anders. Ein Faktor, der am Standardbaum 11 Cards ergab, +# lieferte auf der Eiche mehr als das Doppelte - die Kompensation ueberschoss. +# +# Jetzt steht die gewuenschte Card-ANZAHL da, und der Generator regelt die +# Dichte per Bisektion dagegen ein. Das ist preset-unabhaengig, und der Test +# kann die Anzahl DIREKT pruefen statt ueber Dichte x Anteil x Flaeche zu +# rechnen. None = nicht regeln, volle Dichte (der Altbaum ist die Referenz, +# an der die Dichte ueberhaupt eingestellt wurde). +# +# Ziel-Cards Groesse Kronenansatz LEAF_STUFEN = ( - # 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 + (10, 0.45, 0.40), # S1 - wenige kleine Bueschel, Fuss bleibt frei + (40, 0.63, 0.35), # S2 + (120, 0.82, 0.30), # S3 + (None, 1.00, 0.25), # S4 - volle Dichte, keine Regelung ) def _stufen_anteile(growth_t): - """Dichte-, Groessen- und Kronenansatz-Wert fuer einen Wachstums-Fortschritt. + """Ziel-Cardzahl, 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 @@ -1457,9 +1467,12 @@ 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, h0 = LEAF_STUFEN[i] - d1, g1, h1 = LEAF_STUFEN[i + 1] - return (d0 + (d1 - d0) * f, + z0, g0, h0 = LEAF_STUFEN[i] + z1, g1, h1 = LEAF_STUFEN[i + 1] + # Groesse und Kronenansatz werden gemischt, die Ziel-ANZAHL nicht: sie ist + # eine Stueckzahl, kein Verlauf. Es gilt die naeher liegende Stuetzstelle. + ziel = z0 if f < 0.5 else z1 + return (ziel, g0 + (g1 - g0) * f, h0 + (h1 - h0) * f) @@ -1492,6 +1505,88 @@ def _modifier_anstossen(md): md.show_viewport = sichtbar + +def _cards_pro_stueck(card_obj, card_coll): + """Wie viele Faces hat EINE Card? Fuer die Umrechnung Faces -> Cardzahl.""" + quellen = [] + if card_coll is not None: + quellen = [o for o in card_coll.objects if o.type == 'MESH'] + elif card_obj is not None and card_obj.type == 'MESH': + quellen = [card_obj] + zahlen = [len(o.data.polygons) for o in quellen if o.data.polygons] + if not zahlen: + return 1 + return max(1, int(round(sum(zahlen) / float(len(zahlen))))) + + +def _card_zahl(ob, pro_stueck, dg=None): + """Anzahl gestreuter Cards auf einer ausgewerteten Blatt-Ebene.""" + dg = dg or bpy.context.evaluated_depsgraph_get() + ev = ob.evaluated_get(dg) + me = ev.to_mesh() + n = len(me.polygons) + ev.to_mesh_clear() + return int(round(n / float(max(pro_stueck, 1)))) + + +def _dichte_einregeln(context, ob, md, ids, ziel, start_dichte, pro_stueck, + schritte=14, toleranz=0.15): + """Regelt die Dichte per Bisektion auf eine Ziel-Cardzahl ein. + + Warum ueberhaupt regeln: "Dichte" ist Punkte pro m2 Zweigflaeche, und die + faellt je Preset voellig anders aus. Ein Faktor, der am Standardbaum passte, + ueberschoss auf der Eiche um mehr als das Doppelte. Eine Stueckzahl ist + dagegen preset-unabhaengig - und direkt pruefbar. + + Seed-stabil: der Seed wird nicht angefasst, nur die Dichte. Gleicher Baum + und gleicher Seed ergeben deshalb dieselbe Verteilung. + """ + if not ziel or ziel <= 0: + return start_dichte, _card_zahl(ob, pro_stueck) + + def _messen(dichte): + md[ids["Density"]] = float(dichte) + _modifier_anstossen(md) + context.view_layer.update() + return _card_zahl(ob, pro_stueck) + + lo, hi = start_dichte, start_dichte + n = _messen(start_dichte) + if n == ziel: + return start_dichte, n + + # Klammer suchen: verdoppeln bzw. halbieren, bis das Ziel eingeschlossen ist. + if n < ziel: + for _ in range(12): + hi = hi * 2.0 + if _messen(hi) >= ziel: + break + lo = start_dichte + else: + for _ in range(12): + lo = lo * 0.5 + if lo < 1e-3 or _messen(lo) <= ziel: + break + hi = start_dichte + + bestes = (abs(n - ziel), start_dichte, n) + for _ in range(schritte): + mitte = (lo + hi) * 0.5 + n = _messen(mitte) + if abs(n - ziel) < bestes[0]: + bestes = (abs(n - ziel), mitte, n) + if abs(n - ziel) <= max(1, ziel * toleranz): + return mitte, n + if n < ziel: + lo = mitte + else: + hi = mitte + + # Beste gefundene Naeherung wiederherstellen. + _messen(bestes[1]) + return bestes[1], bestes[2] + + def make_leaves(context, tree_obj, card_obj, name=None, card_coll=None, **overrides): """Erzeugt/aktualisiert ein _Leaf-Objekt mit dem Blattwerk-Modifier.""" name = name or (tree_obj.name + "_Leaf") @@ -2219,9 +2314,23 @@ def _origin_bottom_center(ob): ob.matrix_parent_inverse = Matrix.Identity(4) if not me.vertices: return Matrix.Identity(4) - xs = [v.co.x for v in me.vertices] - ys = [v.co.y for v in me.vertices] - zs = [v.co.z for v in me.vertices] + + # Der Ursprung kommt aus der STAMM-Geometrie (Slot 0), nicht aus der + # Gesamt-Bbox. Sonst hebt eine einzige tief haengende Blatt-Card den ganzen + # Baum an und er steht in UE in der Luft - gemeldet am S1-Setzling, wo die + # Krone relativ zum kurzen Stamm weit ausladet. + stamm_verts = None + if len(me.materials) > 1: + idx = {vi for p in me.polygons if p.material_index == 0 + for vi in p.vertices} + if idx: + stamm_verts = [me.vertices[i].co for i in idx] + if stamm_verts is None: + stamm_verts = [v.co for v in me.vertices] + + xs = [c.x for c in stamm_verts] + ys = [c.y for c in stamm_verts] + zs = [c.z for c in stamm_verts] versatz = Matrix.Translation(( -(min(xs) + max(xs)) * 0.5, -(min(ys) + max(ys)) * 0.5, @@ -2596,7 +2705,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, h_anteil = _stufen_anteile(gt) + ziel_cards, 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 @@ -2613,12 +2722,26 @@ class TREEGEN_OT_leaves(Operator): lf = make_leaves(context, t, s.leaf_card, card_coll=s.leaf_cards, - Density=s.leaf_density * d_anteil, + Density=s.leaf_density, 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}) + # Dichte auf die ZIEL-CARDZAHL einregeln. Muss nach dem Anlegen + # passieren, weil dafuer gemessen werden muss, was tatsaechlich + # herauskommt - die Zweigflaeche faellt je Preset voellig + # anders aus. + if ziel_cards: + md = lf.modifiers.get("GN_Leaves") + ng = md.node_group if md is not None else None + if ng is not None: + pro = _cards_pro_stueck(s.leaf_card, s.leaf_cards) + dichte, ist = _dichte_einregeln( + context, lf, md, leaf_socket_ids(ng), + ziel_cards, s.leaf_density, pro) + print("[TreeGen] %s: %d Cards (Ziel %d) bei Dichte %.0f" + % (t.name, ist, ziel_cards, dichte)) except Exception as exc: # noqa: BLE001 self.report({'WARNING'}, "%s: %s" % (t.name, exc)) continue diff --git a/tests/test_blatt_bueschel.py b/tests/test_blatt_bueschel.py index 9915e65..f6c5b4a 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, _h0 = tg._stufen_anteile(0.0) -_d1, _g1, _h1 = tg._stufen_anteile(1.0) +_z0, _g0, _h0 = tg._stufen_anteile(0.0) +_z1, _g1, _h1 = tg._stufen_anteile(1.0) if _g0 >= _g1: fails.append("Groessen-Anteil steigt nicht ueber die Stufen (%.2f -> %.2f)" % (_g0, _g1)) @@ -275,6 +275,34 @@ if abs(kante_ohne - kanten[-1]) > 0.02: fails.append("Ein Baum ohne Wachstums-Stufen (%.2f) sieht anders aus als " "die letzte Stufe (%.2f)" % (kante_ohne, kanten[-1])) +# --- 3c) Ziel-Cardzahl wird preset-UNABHAENGIG eingeregelt --------------- +# Frueher standen hier Dichte-Faktoren. Die mussten je Preset neu geeicht +# werden: "Dichte" ist Punkte pro m2 Zweigflaeche, und die verteilt sich je +# Baum voellig anders - ein Faktor, der am Standardbaum 11 Cards ergab, +# ueberschoss auf der Eiche um mehr als das Doppelte. Jetzt steht die +# Stueckzahl da und wird eingeregelt; der Test prueft sie DIREKT. +print("") +print("%-10s %8s %8s %8s %8s" % ("Preset", "S1", "S2", "S3", "S4")) +for pname in ("baum", "eiche", "birke"): + reihe = bauen(pname, wachstum=True, stufen=4) + pro = tg._cards_pro_stueck(card, None) + dg = bpy.context.evaluated_depsgraph_get() + zellen = [] + for st in reihe: + bl = bpy.data.objects.get(st.name + "_Leaf") + n = tg._card_zahl(bl, pro, dg) if bl else 0 + gt = float(st.get("growth_t", 1.0)) + ziel, _, _ = tg._stufen_anteile(gt) + zellen.append((n, ziel)) + if ziel: + # 25 % Toleranz: die Bisektion arbeitet auf einer diskreten + # Punktverteilung, exakt treffen kann sie nicht. + if abs(n - ziel) > max(2, ziel * 0.25): + fails.append("%s/%s: %d Cards, Ziel %d - die Regelung trifft " + "nicht" % (pname, st.name, n, ziel)) + print("%-10s %8s %8s %8s %8s" + % (pname, *["%d/%s" % (n, z if z else "voll") for n, z in zellen])) + print("") if fails: print("ERGEBNIS: %d FEHLER" % len(fails))