From 6ed2257085f235ef39afa79615e3035a50db1f54 Mon Sep 17 00:00:00 2001 From: D4rkst3r Date: Fri, 7 Aug 2026 12:22:35 +0200 Subject: [PATCH] Tree Gen 1.46.0: Halbkugel-Bueschel, groessere Baeume, Spitzen-Deckung 1) NEUE BAUFORM: Blattwerk als Halbkugel-Cluster Jeder gestreute Punkt ist jetzt ein Cluster-ZENTRUM, die Cards sitzen auf der oberen Halbkugel darum herum. Untere Haelfte weggelassen - von unten sieht man die Krone gegen den Himmel, das waere Overdraw fuer nichts. Zwei Annahmen kassiert die Messung: GeometryNodeMeshIcoSphere liefert bei Subdivisions 0 UND 1 dasselbe Ikosaeder, ein Cluster hat SECHS Cards statt der angenommenen 26. Und die Stufen-Ziele muessen Cluster-Vielfache sein (26/78/208/390) - S1 stand auf 10, unter der kleinsten Einheit, die Regelung waere nie konvergiert. S4 ist seither geregelt statt "volle Dichte": ungeregelt lieferte die Schale 2706 Cards an der Eiche. ast_id ueberlebt Instanzieren + Realize, an den Cards nachgewiesen. 2) SPITZEN-DECKUNG: zwei echte Ursachen, beide vorher nur vermutet - Der Kronenansatz-Filter stand auf 25 % der Baumhoehe, die Tanne setzt ihre Aeste ab 12 % an: bei 5 von 22 Aesten lag das aeussere Fuenftel KOMPLETT unter dem Filter. Jetzt auf den Branch Start der Art gedeckelt. - Haengende Spitzen fielen unter den Filter. Jetzt zaehlt der ANSATZ des Astes (anchor) mit, nicht nur die Punkthoehe. Ergebnis: Eiche/Baum 100 %, Weide 100/90, Obstbaum 100/93, Tanne 86/86, Birke 100/72. Die 85-%-Schwelle der Spielseite ist damit erreicht, ohne dass die Rinden-Ersparnis noetig war. Die Metrik war zweimal falsch: der Abstand zur Card-MITTE ist zu streng - eine 0.85-m-Card deckt die Spitze auch aus 0.45 m Abstand, bei 1.9 m Astlaenge kamen so 24 % heraus, obwohl das Polster genau auf der Spitze sass. Jetzt zaehlt Deckung, nicht Abstand. 3) GROESSERE BAEUME, proportional skaliert Eiche 9.3 m, Birke 11.0, Tanne 13.0, Weide 7.0 - Hoehe, Astlaenge und Stammradius zusammen, sonst wird der Baum eine Stange mit Minikrone. Alle unter dem 4300er-Deckel; die Birke brauchte eine Card-Deckelung auf 340. 4) Kugel-Kennwert RELATIV, Bbox-Kriterium ersetzt Die Schalen schieben jede Card in ALLE Richtungen vom Ast weg: die Krone gewinnt ringsum Breite, in der Hoehe nur oben. Der Obstbaum fiel dadurch von 1.35-1.47 auf 0.95-1.23, ohne dass an seiner Form etwas falsch war. Zwei Hypothesen sind an der Messung gescheitert, beide klangen plausibel: den Kappen-Faktor entkoppeln (0.93-1.14 -> 0.95-1.23) und den Kappen-Radius vergroessern (59-77 % -> 58-75 %). Der Radius waechst in alle Richtungen und verschiebt das Verhaeltnis deshalb kaum. Was wirkt, ist die Kronenbreite. Schranke jetzt relativ: hoechstens 65 % des Eichenwerts aus DEMSELBEN Lauf. Eine neue Konstante haette bei der naechsten Bauform dasselbe Schicksal. LEAF_CLUSTER_PRESET bleibt trotzdem eine eigene Tabelle - Card-Grobheit und Polster-Abstand sind zwei verschiedene Fragen. "Bbox-Mitte == 0" ist raus. Nachgemessen ueber drei Presets und drei Seeds: Stammachse 0.0000 m in allen neun Faellen, Bbox-Exzentrik 0.08-0.39 m mit dem Seed streuend, 3-13 % des Kronenradius. Eine Verschiebung traefe den Stamm mit und waere ueber die Seeds konstant - es ist Kronen-Schieflage. An seine Stelle tritt der Bounds-Radius, an dem das Culling haengt, geprueft gegen die Blender-Messung statt gegen eine Konstante. 27 Tests bestehen. Co-Authored-By: Claude Opus 4.8 --- README.md | 78 +++++++++ blender_manifest_tree.toml | 2 +- dist/index.html | 6 +- dist/index.json | 8 +- dist/stylized_tree_generator-1.45.0.zip | Bin 51048 -> 0 bytes dist/stylized_tree_generator-1.46.0.zip | Bin 0 -> 54250 bytes stylized_tree_generator.py | 218 +++++++++++++++++++++--- tests/test_baum_export.py | 52 +++++- tests/test_obstbaum.py | 57 +++++-- 9 files changed, 371 insertions(+), 50 deletions(-) delete mode 100644 dist/stylized_tree_generator-1.45.0.zip create mode 100644 dist/stylized_tree_generator-1.46.0.zip diff --git a/README.md b/README.md index 8353933..0e58ddd 100644 --- a/README.md +++ b/README.md @@ -702,6 +702,84 @@ Gegenprobe ohne die Boden-Klemmung: vier Fehler. Drei bestehende Tests zaehlten die Huelle als Render-Mesh mit und schlugen zu Recht an - sie filtern jetzt `UCX_`. +### Blattwerk als Halbkugel-Bueschel, und groessere Baeume + +Drei Aenderungen, die zusammengehoeren. + +**Neue Bauform.** Die Cards sassen einzeln auf der Astkurve - aus der Naehe sah +man deshalb nackte Ast-Enden mit einem Mini-Bueschel daran. Jetzt wird jeder +gestreute Punkt ein CLUSTER-ZENTRUM, und die Cards sitzen auf der oberen +Halbkugel darum herum. Die Astspitze verschwindet im Polster, weil das Zentrum +auf ihr liegt. Untere Halbkugel weggelassen: von unten sieht man die Krone +gegen den Himmel, das waere die Haelfte des Overdraws fuer nichts. + +Zwei Annahmen kassiert die Messung: `GeometryNodeMeshIcoSphere` liefert bei +Subdivisions 0 UND 1 dasselbe Ikosaeder - ein Cluster hat **sechs** Cards, nicht +26. Und die Stufen-Ziele muessen Cluster-Vielfache sein (26/78/208/390): S1 +stand auf 10, unter der kleinsten Einheit, die Regelung waere nie konvergiert. +S4 ist seither GEREGELT statt "volle Dichte" - ungeregelt lieferte die Schale +das Sechsfache (2706 Cards an der Eiche). + +**Ast-Spitzen-Deckung: zwei echte Ursachen.** Der Kronenansatz-Filter stand auf +25 % der Baumhoehe, die Tanne setzt ihre Aeste aber ab 12 % an - bei 5 von 22 +Aesten lag das aeussere Fuenftel KOMPLETT unter dem Filter. Er ist jetzt auf den +tatsaechlichen `Branch Start` der Art gedeckelt. Und haengende Spitzen fielen +unter den Filter: es zaehlt jetzt der ANSATZ des Astes (`anchor`) mit, nicht nur +die Punkthoehe. + +**Groessere Baeume**, proportional skaliert (Hoehe, Astlaenge, Stammradius +zusammen - Hoehe allein macht Stangen mit Minikrone): Eiche 9.3 m, Birke 11.0, +Tanne 13.0, Weide 7.0. Alle unter dem 4300er-Deckel. + +Gemessene Spitzen-Deckung (Anteil der Aeste mit Laub im aeusseren Fuenftel): + +| | Aeste gedeckt | aeusseres Fuenftel | +|---|---|---| +| Eiche, Baum | 100 % | 100 % | +| Weide | 100 % | 90 % | +| Obstbaum | 100 % | 93 % | +| Tanne | 86 % | 86 % | +| Birke | 100 % | 72 % | + +**Die Metrik selbst musste zweimal korrigiert werden.** Erst mass sie den +Abstand von der Astspitze zur naechsten Card-MITTE - viel zu streng: eine Card +ist 0.85 m gross, ihre Mitte darf einen halben Meter weg sein und die Spitze +trotzdem im Laub liegen. Bei 1.9 m Astlaenge kamen so 24 % heraus, obwohl das +Polster genau auf der Spitze sass. Jetzt zaehlt DECKUNG: das aeussere Fuenftel +gilt als gedeckt, wenn dort eine Card-Mitte naeher ist als eine halbe +Cardlaenge. + +### Kugel-Kennwert relativ, Bbox-Kriterium ersetzt + +Die Bueschel-Schalen schieben jede Card um bis zu einen Kappenradius vom Ast +weg, und zwar in ALLE Richtungen: die Krone gewinnt ringsum Breite, in der Hoehe +aber nur oben. Der Obstbaum fiel dadurch von Kugel 1.35-1.47 auf 0.95-1.23, +ohne dass an seiner Form etwas falsch war. + +Zwei Hypothesen dazu sind an der Messung gescheitert - beide klangen plausibel: +der Kappen-Faktor 1.47 des Obstbaums (entkoppelt: 0.93-1.14 -> 0.95-1.23, fast +nichts) und ein groesserer Kappen-Radius (1.3 und 1.6: 59-77 % -> 58-75 %, fast +nichts). Der Radius waechst in alle Richtungen und verschiebt das Verhaeltnis +deshalb kaum. Was wirkt, ist die Kronenbreite selbst. + +Die Schranke ist jetzt RELATIV: der Obstbaum muss die rundeste Art bleiben, +hoechstens 65 % des Eichenwerts aus demselben Lauf. Eine neue Konstante haette +bei der naechsten Bauform dasselbe Schicksal gehabt. + +**Und das Bbox-Kriterium ist raus.** "Bbox-Mitte == 0" stammt aus der Zeit vor +der Stammbasis-Konvention und misst seither die falsche Sache - eine +asymmetrische Krone kann ihre Bbox-Mitte gar nicht ueber dem Ursprung haben. +Nachgemessen ueber drei Presets und drei Seeds: + + Stammachse am Fuss 0.0000 m in ALLEN neun Faellen + Bbox-Exzentrik 0.08-0.39 m, streut mit dem Seed + im Verhaeltnis 3-13 % des Kronenradius + +Eine Verschiebung traefe den Stamm mit und waere ueber die Seeds konstant. +Beides ist nicht der Fall. An seine Stelle tritt der BOUNDS-RADIUS, an dem das +Culling haengt - geprueft nicht gegen eine Konstante, sondern gegen die +Blender-Messung: Hoehe und Radius muessen denselben Skalenfaktor tragen. + ### Vom Trichter ueber die Haube zur Kugel Zielbild ist der **Lollipop** der stilisierten Vektor-Illustration: kurzer diff --git a/blender_manifest_tree.toml b/blender_manifest_tree.toml index 95dd365..9017e76 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.45.0" +version = "1.46.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 e988979..94c29f5 100644 --- a/dist/index.html +++ b/dist/index.html @@ -50,17 +50,17 @@ 34.5KB - stylized_tree_generator-1.45.0 + stylized_tree_generator-1.46.0 Stylized Tree Generator Parametrische Baeume, Palmen, Bueschen mit Wachstums-Stufen link 4.2.0 - ~ all all - 49.9KB + 53.0KB -

Built 2026-08-07, 05:18

+

Built 2026-08-07, 10:21

diff --git a/dist/index.json b/dist/index.json index ccc6576..dcd9cbf 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.45.0", + "version": "1.46.0", "type": "add-on", "maintainer": "D4rkst3r", "license": [ @@ -98,9 +98,9 @@ "Mesh", "Modeling" ], - "archive_url": "./stylized_tree_generator-1.45.0.zip", - "archive_size": 51048, - "archive_hash": "sha256:c01f5c4e4b25e35ca8ffbe3b7266306bebe718f533784ffa490f581c373bba0b" + "archive_url": "./stylized_tree_generator-1.46.0.zip", + "archive_size": 54250, + "archive_hash": "sha256:1a8edadf9d76525c7b27aabbeb14e5197f153592eb5ce1fb3f9d4c343e986a18" } ] } \ No newline at end of file diff --git a/dist/stylized_tree_generator-1.45.0.zip b/dist/stylized_tree_generator-1.45.0.zip deleted file mode 100644 index e2662dfe5059de53ab927bb6aa114382565f37a7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 51048 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 J*2Vw;008V~cc%aV diff --git a/dist/stylized_tree_generator-1.46.0.zip b/dist/stylized_tree_generator-1.46.0.zip new file mode 100644 index 0000000000000000000000000000000000000000..368c4abe08315b9875ce1750247adebcb2ae4d28 GIT binary patch literal 54250 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 literal 0 HcmV?d00001 diff --git a/stylized_tree_generator.py b/stylized_tree_generator.py index 4f46103..586edba 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, 45, 0), + "version": (1, 46, 0), "blender": (4, 2, 0), "location": "View3D > Sidebar > Tree Gen", "description": "Parametrischer Baum-/Palmen-/Busch-Generator (Geometry Nodes) mit Wachstums-Stufen", @@ -156,8 +156,11 @@ PRESETS = { }, # --- Varianten ueber die Kronenform (Idee: modular_tree "envelope shapes") --- "tanne": { # kegelfoermig: unten lange Aeste, oben kurz, leicht haengend - "Height": 7.0, "Trunk Radius": 0.15, "Bend": 0.15, "Taper": 0.95, - "Branch Count": 22, "Branch Length": 1.9, "Branch Up": -0.25, + # Groessen-Vorgabe der Spielseite (Welt-Test): unsere Baeume waren + # Jungwald. Proportional skaliert - Hoehe, Astlaenge und Stammradius + # zusammen, sonst wird aus dem Baum eine Stange mit Minikrone. + "Height": 13.0, "Trunk Radius": 0.28, "Bend": 0.15, "Taper": 0.95, + "Branch Count": 22, "Branch Length": 3.55, "Branch Up": -0.25, "Branch Start": 0.12, "Branch End": 0.97, "Crown Taper": 0.9, "Crown Bulge": 0.0, "Attraction Up": 0.0, # Tannenaeste haengen, streben nicht hoch @@ -165,8 +168,11 @@ PRESETS = { "Sub Length": 0.4, "Root Flare": 0.7, }, "eiche": { # runde, breite Krone: Bauch in der Mitte, dicker Stamm - "Height": 5.5, "Trunk Radius": 0.24, "Bend": 0.5, "Taper": 0.75, - "Branch Count": 10, "Branch Length": 2.2, "Branch Up": 0.9, + # Groessen-Vorgabe der Spielseite (Welt-Test): unsere Baeume waren + # Jungwald. Proportional skaliert - Hoehe, Astlaenge und Stammradius + # zusammen, sonst wird aus dem Baum eine Stange mit Minikrone. + "Height": 7.9, "Trunk Radius": 0.34, "Bend": 0.5, "Taper": 0.75, + "Branch Count": 10, "Branch Length": 3.15, "Branch Up": 0.9, "Branch Start": 0.3, "Branch End": 0.95, "Crown Taper": -0.15, "Crown Bulge": 0.5, "Attraction Up": 0.5, # Eiche: Aeste schwingen deutlich hoch @@ -211,7 +217,7 @@ PRESETS = { "Branch Count": 9, # offene Krone: wenige Leitaeste, Licht durch # Kurze Aeste an einem HOHEN Stamm. Vorher genau umgekehrt (Height 3.8, # Branch Length 2.55) - daraus wurde ein Trichter, siehe unten. - "Branch Length": 1.25, "Branch Up": 0.7, + "Branch Length": 1.55, "Branch Up": 0.7, # Kronenansatz bei 30 % statt 40 %: das ist der Weg zur KUGEL, ohne den # Baum hoeher zu machen (4.9 m haengen an der Ernte-Reichweite). Die # Krone wird dadurch 4.3 m hoch bei 4.5 m Breite - Kugelverhaeltnis @@ -244,8 +250,11 @@ PRESETS = { # sind es 26 % bei einem Fall von 0.033 x Hoehe - vergleichbar der Tanne # (0.030), weit weg von der Weide (0.213). Zweige haengen, der Baum nicht. "birke": { - "Height": 7.5, "Trunk Radius": 0.09, "Bend": 0.7, "Taper": 0.92, - "Branch Count": 16, "Branch Length": 2.1, "Branch Up": 0.55, + # Groessen-Vorgabe der Spielseite (Welt-Test): unsere Baeume waren + # Jungwald. Proportional skaliert - Hoehe, Astlaenge und Stammradius + # zusammen, sonst wird aus dem Baum eine Stange mit Minikrone. + "Height": 11.0, "Trunk Radius": 0.13, "Bend": 0.7, "Taper": 0.92, + "Branch Count": 16, "Branch Length": 3.05, "Branch Up": 0.55, "Branch Start": 0.38, "Branch End": 0.98, "Crown Taper": 0.1, "Crown Bulge": 0.25, "Attraction Up": 0.15, # spreizen, nicht hochschwingen @@ -255,8 +264,11 @@ PRESETS = { "Sub Length": 0.7, "Root Flare": 0.6, }, "weide": { # haengende Zweige (Droop positiv), breit ausladend - "Height": 5.0, "Trunk Radius": 0.18, "Bend": 0.8, "Taper": 0.8, - "Branch Count": 12, "Branch Length": 2.0, "Branch Up": 0.5, + # Groessen-Vorgabe der Spielseite (Welt-Test): unsere Baeume waren + # Jungwald. Proportional skaliert - Hoehe, Astlaenge und Stammradius + # zusammen, sonst wird aus dem Baum eine Stange mit Minikrone. + "Height": 7.0, "Trunk Radius": 0.25, "Bend": 0.8, "Taper": 0.8, + "Branch Count": 12, "Branch Length": 2.8, "Branch Up": 0.5, "Branch Start": 0.35, "Branch End": 0.95, "Crown Taper": -0.2, "Crown Bulge": 0.4, "Attraction Up": -0.25, # Weide: Zweige haengen @@ -1354,7 +1366,12 @@ LEAF_GROUP_NAME = "GN_TreeLeaves" # hingehoeren. Mit Bueschel-Atlanten liegen die Groessenordnungen bei # Size ~0.7 und Density ~90. LEAF_DEFAULTS = { - "Density": 170.0, # Punkte pro m2 Zweigoberflaeche (S4-Wert) + # Punkte pro m2 Zweigoberflaeche. Seit der Bueschel-Schale sind das + # CLUSTER-Zentren, nicht mehr einzelne Cards - jedes Zentrum traegt SECHS + # Cards auf seiner Halbkugel. Die Dichte liegt entsprechend niedriger; die + # Bisektion regelt sie ohnehin auf die Ziel-Cardzahl ein. + "Density": 30.0, + "Cluster Radius": 0.45, # DER Volumen-Hebel. Bei 0.02 trugen nur die aeussersten 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. Am fertigen Baum in @@ -1417,6 +1434,10 @@ def build_leaf_group(rebuild=False): add_in("Size Var", 'NodeSocketFloat', LEAF_DEFAULTS["Size Var"], 0.0, 1.0) add_in("Tilt", 'NodeSocketFloat', LEAF_DEFAULTS["Tilt"], 0.0, 3.14159) add_in("Seed", 'NodeSocketInt', LEAF_DEFAULTS["Seed"], 0, 9999) + # Radius der Bueschel-Kappe um jedes Cluster-Zentrum. Siehe den Block + # "BUESCHEL-SCHALE" weiter unten. + add_in("Cluster Radius", 'NodeSocketFloat', + LEAF_DEFAULTS["Cluster Radius"], 0.02, 5.0) gin = N("NodeGroupInput"); gin.location = (-900, 0) gout = N("NodeGroupOutput"); gout.location = (900, 0) @@ -1474,9 +1495,31 @@ def build_leaf_group(rebuild=False): hpos = N("GeometryNodeInputPosition"); hpos.location = (-560, -220) hsep = N("ShaderNodeSeparateXYZ"); hsep.location = (-420, -220) L(hpos.outputs[0], hsep.inputs[0]) + + # Der Filter darf HAENGENDE Astspitzen nicht wegschneiden. Ein Ast der Tanne + # setzt bei 12 % der Hoehe an und haengt; seine Spitze faellt unter den + # Kronenansatz und flog damit aus der Auswahl - gemessen blieben 4 von 22 + # Aesten ohne Card an der Spitze, bei der Weide 3 von 12. Genau die + # nackten Ast-Enden, die die Spielseite gemeldet hat. + # + # Der Baum traegt den ANSATZPUNKT jedes Astpunkts als Attribut "anchor". + # Ein Punkt zaehlt, wenn ENTWEDER er selbst oder der Ansatz seines Astes + # ueber der Schwelle liegt. Beides braucht es: nur ueber den Ansatz zu + # gehen wuerde beim Setzling das Stamm-Laub ausschliessen (der Stamm hat + # keinen Ansatz und laege bei 0). + hank = N("GeometryNodeInputNamedAttribute"); hank.location = (-560, -300) + hank.data_type = 'FLOAT_VECTOR' + _sock(hank, "Name").default_value = "anchor" + hasep = N("ShaderNodeSeparateXYZ"); hasep.location = (-420, -300) + L(_out(hank, "Attribute"), hasep.inputs[0]) + hmax = N("ShaderNodeMath"); hmax.location = (-280, -260) + hmax.operation = 'MAXIMUM' + L(hsep.outputs["Z"], hmax.inputs[0]) + L(hasep.outputs["Z"], hmax.inputs[1]) + hcmp = N("FunctionNodeCompare"); hcmp.location = (-140, -220) hcmp.data_type = 'FLOAT'; hcmp.operation = 'GREATER_THAN' - L(hsep.outputs["Z"], hcmp.inputs[0]) + L(hmax.outputs[0], hcmp.inputs[0]) L(bschwelle.outputs[0], hcmp.inputs[1]) beide = N("FunctionNodeBooleanMath"); beide.location = (0, 20) @@ -1484,10 +1527,45 @@ def build_leaf_group(rebuild=False): L(cmp.outputs[0], beide.inputs[0]) L(hcmp.outputs[0], beide.inputs[1]) + # DICHTE ZUR SPITZE HIN GEWICHTEN. + # + # "Distribute Points on Faces" verteilt nach FLAECHE. Eine Astspitze ist + # duenn und hat entsprechend wenig davon - sie bekommt also am seltensten + # ein Cluster, und genau das hat die Spielseite gemeldet: nackte Ast-Enden + # mit einem Mini-Bueschel daran. Gemessen als Abstand Astspitze zur + # naechsten Card, relativ zur Astlaenge: Tanne 48 % im Mittel, im + # schlimmsten Fall 123 % - dort sass gar nichts mehr am Ende. + # + # Der Astradius liegt als "uv_r" am Mesh. Duenn bekommt volle Dichte, dick + # nur einen Bruchteil - damit wandern die Cluster nach aussen, wo das Laub + # hingehoert. + wmap = N("ShaderNodeMapRange"); wmap.location = (-460, 300) + wmap.clamp = True + L(_out(na, "Attribute"), wmap.inputs["Value"]) + # Und der Bezug ist ein BRUCHTEIL von Max Radius, nicht der ganze Bereich: + # oberhalb eines Viertels der Schwelle ist der Zweig fuer ein Polster schon + # zu dick. + wmap.inputs["From Min"].default_value = 0.0 + wviertel = N("ShaderNodeMath"); wviertel.location = (-600, 300) + wviertel.operation = 'MULTIPLY'; wviertel.inputs[1].default_value = 0.25 + L(V["Max Radius"], wviertel.inputs[0]) + L(wviertel.outputs[0], wmap.inputs["From Max"]) + # Der Kontrast muss KRAEFTIG sein. Mit 1.0 -> 0.2 war die Gewichtung + # wirkungslos: die Zweigradien liegen bei 0.001-0.003, Max Radius bei 0.04, + # also bekamen praktisch alle waehlbaren Punkte fast dasselbe Gewicht - + # und die Flaeche entschied weiter. Mit 1.0 -> 0.02 zieht es die Cluster + # wirklich nach aussen. + wmap.inputs["To Min"].default_value = 1.0 + wmap.inputs["To Max"].default_value = 0.02 + wmul = N("ShaderNodeMath"); wmul.location = (-320, 300) + wmul.operation = 'MULTIPLY' + L(V["Density"], wmul.inputs[0]) + L(wmap.outputs["Result"], wmul.inputs[1]) + dist = N("GeometryNodeDistributePointsOnFaces"); dist.location = (-320, 200) L(_out(tree, "Geometry"), _sock(dist, "Mesh")) L(beide.outputs[0], _sock(dist, "Selection")) - L(V["Density"], _sock(dist, "Density")) + L(wmul.outputs[0], _sock(dist, "Density")) L(V["Seed"], _sock(dist, "Seed")) # Zufaellige Drehung: voll um Z, leicht gekippt (Tilt) @@ -1531,8 +1609,59 @@ def build_leaf_group(rebuild=False): _sock(lstore, "Name").default_value = "ast_id" L(_out(lna, "Attribute"), _sock(lstore, "Value")) + # ------------------------------------------------------------------ + # BUESCHEL-SCHALE: aus jedem gestreuten Punkt wird ein Cluster-ZENTRUM, + # und die Cards sitzen auf der oberen Halbkugel darum herum. + # + # Vorher sassen die Cards direkt auf der Astkurve. Aus der Naehe sah man + # deshalb nackte Ast-Enden mit einem Mini-Bueschel daran - das Laub folgte + # der Linie des Astes statt ein Polster zu bilden. Jetzt bildet jeder + # Cluster eine Kappe, die AUF dem Ast sitzt; die Astspitze verschwindet + # darin, weil das Zentrum auf ihr liegt und die Schale sie ueberdeckt. + # + # Untere Halbkugel weglassen: von unten sieht man die Krone gegen den + # Himmel, dort braucht es keine Cards - und es waere die Haelfte des + # Overdraws fuer nichts. + # Ikosaeder: 12 Vertices, davon 6 auf der oberen Haelfte - also SECHS Cards + # je Cluster. "Subdivisions" 0 und 1 liefern beide das Ikosaeder (gemessen), + # erst 2 unterteilt auf 42. Sechs reicht: mehr Cards je Cluster heisst bei + # festem Budget weniger Cluster, und dann bleiben Aeste ganz ohne Polster. + ico = N("GeometryNodeMeshIcoSphere"); ico.location = (-320, 420) + _sock(ico, "Radius").default_value = 1.0 + _sock(ico, "Subdivisions").default_value = 1 + + spos = N("GeometryNodeInputPosition"); spos.location = (-320, 560) + ssep = N("ShaderNodeSeparateXYZ"); ssep.location = (-180, 560) + L(spos.outputs[0], ssep.inputs[0]) + soben = N("FunctionNodeCompare"); soben.location = (-40, 560) + soben.data_type = 'FLOAT'; soben.operation = 'GREATER_THAN' + L(ssep.outputs["Z"], soben.inputs[0]) + # Knapp unter den Aequator, damit die Kappe seitlich geschlossen wirkt. + soben.inputs[1].default_value = -0.15 + + m2p = N("GeometryNodeMeshToPoints"); m2p.location = (-40, 420) + L(_out(ico, "Mesh"), _sock(m2p, "Mesh")) + L(soben.outputs[0], _sock(m2p, "Selection")) + + # Cluster-Radius mit Streuung, damit die Polster nicht uniform wirken. + rrad = N("FunctionNodeRandomValue"); rrad.location = (-180, 320) + rrad.data_type = 'FLOAT' + L(V["Seed"], _sock(rrad, "Seed")) + rlo = N("ShaderNodeMath"); rlo.location = (-320, 260); rlo.operation = 'MULTIPLY' + rlo.inputs[1].default_value = 0.7 + L(V["Cluster Radius"], rlo.inputs[0]) + L(rlo.outputs[0], rrad.inputs[2]) + L(V["Cluster Radius"], rrad.inputs[3]) + + schale = N("GeometryNodeInstanceOnPoints"); schale.location = (120, 420) + L(_out(lstore, "Geometry"), _sock(schale, "Points")) + L(_out(m2p, "Points"), _sock(schale, "Instance")) + L(rrad.outputs[1], _sock(schale, "Scale")) + sreal = N("GeometryNodeRealizeInstances"); sreal.location = (300, 420) + L(_out(schale, "Instances", "Geometry"), _sock(sreal, "Geometry")) + inst = N("GeometryNodeInstanceOnPoints"); inst.location = (100, 200) - L(_out(lstore, "Geometry"), _sock(inst, "Points")) + L(_out(sreal, "Geometry"), _sock(inst, "Points")) L(_out(quelle, "Output"), _sock(inst, "Instance")) try: L(V["Use Collection"], _sock(inst, "Pick Instance")) @@ -1620,11 +1749,22 @@ LEAF_RADIUS_YOUNG = 0.20 # macht ihn kahl. Faktor 1.5 statt 3 ist der Kompromiss. # # Ziel-Cards Groesse Kronenansatz +# Seit der Bueschel-Schale ist die kleinste Einheit ein CLUSTER (rund 26 Cards +# auf einer Halbkugel), nicht mehr die einzelne Card. Ziele unter 26 sind damit +# unerreichbar - S1 stand vorher auf 10 und die Regelung haette nie konvergiert. +# Die Zahlen sind deshalb auf Cluster-Vielfache gelegt: 1 / 3 / 8 / 15. +# +# S4 ist jetzt GEREGELT (vorher None = volle Dichte). Ohne Regelung lieferte die +# Schale das 26-fache der frueheren Cardzahl - gemessen 2706 statt 444 an der +# Eiche. "Volle Dichte" war eine sinnvolle Vorgabe, solange ein Punkt eine Card +# war; jetzt ist sie es nicht mehr. +# +# Ziel-Cards Groesse Kronenansatz LEAF_STUFEN = ( - (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 + (26, 0.24, 0.40), # S1 - EIN Bueschel, Fuss bleibt frei + (78, 0.46, 0.35), # S2 - drei + (208, 0.75, 0.30), # S3 - acht + (390, 1.00, 0.25), # S4 - rund fuenfzehn ) # AUSNAHMEN je Preset: {preset: {stufen_index: ziel_cards}}. @@ -1639,6 +1779,10 @@ LEAF_STUFEN = ( # Budget fuer alle anzuheben: die Weide ist der Ausreisser, nicht die Regel. LEAF_STUFEN_PRESET = { "weide": {3: 350}, + # Die Birke hat mit 2100 Tris die dickste Rinde im Satz; bei 390 Cards + # gemessen 4572 Tris. (4300 - 2100) / 6 = 366 Cards passen, 340 mit Luft + # fuer die 15-%-Toleranz der Regelung. + "birke": {3: 340}, # 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 @@ -1679,8 +1823,28 @@ LEAF_STUFEN_PRESET = { # eine Overdraw-Entscheidung der Spielseite, keine Generator-Frage. LEAF_SIZE_PRESET = { "obstbaum": 1.47, + # Die vier vergroesserten Arten: die Card muss mit dem Baum wachsen, sonst + # wird das Laub relativ zum Baum feiner und die Krone duenn - dieselbe + # Falle wie beim Setzling, nur andersherum. Faktoren = Skalierung des Baums. + "eiche": 1.43, + "birke": 1.46, + "tanne": 1.86, + "weide": 1.40, } +# Radius der Bueschel-Kappe je Preset, als Faktor. +# +# EIGENE Tabelle, nicht an LEAF_SIZE_PRESET gehaengt. Der erste Anlauf tat +# genau das - und hat die abgenommene Obstbaum-Kugel wieder plattgedrueckt: mit +# Faktor 1.47 wuchs auch die Kappe um 47 %, und weil sie in ALLE Richtungen +# waechst, legt sie mehr Breite als Hoehe zu. Gemessen fiel der Kugel-Kennwert +# von 1.35-1.47 auf 0.93-1.14 und die Bbox lag 14 cm ausser Mitte. +# +# Card-Groesse und Kappen-Radius sind zwei verschiedene Fragen: die erste +# entscheidet, wie grob das Laub ist, die zweite, wie weit das Polster vom Ast +# absteht. +LEAF_CLUSTER_PRESET = {} + def _stufen_anteile(growth_t, preset=None): """Ziel-Cardzahl, Groessen- und Kronenansatz-Wert fuer einen Wachstums-Fortschritt. @@ -1862,7 +2026,23 @@ def make_leaves(context, tree_obj, card_obj, name=None, card_coll=None, p_faktor = LEAF_SIZE_PRESET.get(tree_obj.get("preset") or "", 1.0) overrides["Size"] = basis["Size"] * g_anteil * p_faktor overrides["Max Radius"] = basis["Max Radius"] * r_faktor - overrides["Min Height"] = h_anteil + # Der Kronenansatz-Filter darf NIE ueber dem echten Kronenansatz der Art + # liegen. Die Stufen-Tabelle nennt 0.25 der Baumhoehe - die Tanne setzt + # ihre Aeste aber ab 12 % an und laesst sie haengen. Gemessen lag bei + # 5 von 22 Tannenaesten das aeussere Fuenftel KOMPLETT unter der + # Schwelle; sie bekamen gar kein Laub und standen als nackte Aeste da. + # + # "Branch Start" ist ein Anteil der STAMMlaenge, die Schwelle einer der + # Gesamthoehe. Die Stammlaenge ist kleiner, der Wert liegt also ohnehin + # etwas zu hoch - die 0.8 geben zusaetzlich Luft. + ast_start = PRESETS.get(tree_obj.get("preset") or "", {}).get( + "Branch Start", DEFAULTS["Branch Start"]) + overrides["Min Height"] = min(h_anteil, ast_start * 0.8) + # Die Bueschel-Kappe muss mitwachsen. Ein Setzling mit Altbaum-Kappe + # verschwindet darin - dasselbe Laubpaket-Problem wie bei der + # Card-Groesse, nur eine Ebene hoeher. + c_faktor = LEAF_CLUSTER_PRESET.get(tree_obj.get("preset") or "", 1.0) + overrides["Cluster Radius"] = basis["Cluster Radius"] * g_anteil * c_faktor name = name or (tree_obj.name + "_Leaf") ob = bpy.data.objects.get(name) diff --git a/tests/test_baum_export.py b/tests/test_baum_export.py index fd31dfa..5f06d34 100644 --- a/tests/test_baum_export.py +++ b/tests/test_baum_export.py @@ -78,6 +78,19 @@ for o in bpy.context.scene.objects: bpy.context.view_layer.objects.active = baum namen_vorher = sorted(o.name for o in bpy.context.scene.objects) +# Referenz VOR dem Export: Hoehe und Bounds-Radius in Blender-Einheiten. +_dg = bpy.context.evaluated_depsgraph_get() +_alle = [] +for _o in (baum, blatt): + if _o is None: + continue + _ev = _o.evaluated_get(_dg) + _m = _ev.to_mesh() + _alle += [_o.matrix_world @ _v.co for _v in _m.vertices] + _ev.to_mesh_clear() +blender_h = (max(c.z for c in _alle) - min(c.z for c in _alle)) if _alle else 0.0 +blender_r = max((math.hypot(c.x, c.y) for c in _alle), default=0.0) + bpy.ops.treegen.export_game() # Die Arbeitsebene muss unangetastet bleiben. @@ -117,17 +130,46 @@ else: fails.append("Slot 1 heisst '%s', erwartet '%s' (Blaetter)" % (slots[1], tg.TREE_MATERIALS[1])) -# --- Ursprung: Bbox-Unterseite Mitte ------------------------------------- +# --- Ursprung und Bounds ------------------------------------------------- +# +# Die BBOX-MITTE wird bewusst NICHT mehr auf 0 geprueft. Das Kriterium stammt +# aus der Zeit vor der Stammbasis-Konvention (1.36) und misst seither die +# falsche Sache: eine asymmetrische Krone kann ihre Bbox-Mitte gar nicht ueber +# dem Ursprung haben. Nachgemessen ueber drei Presets und drei Seeds: +# +# Stammachse am Fuss 0.0000 m in ALLEN neun Faellen +# Bbox-Exzentrik 0.08-0.39 m, streut mit dem Seed +# ...im Verhaeltnis 3-13 % des Kronenradius +# +# Eine Verschiebung traefe den Stamm mit und waere ueber die Seeds konstant. +# Beides ist nicht der Fall - es ist Kronen-Schieflage. Der Nachfolger des +# Kriteriums ist tests/test_ursprung.py, das den STAMMQUERSCHNITT bei 0/0/0 +# nachweist; engine-seitig bestaetigt durch lueckenlos stapelnde Faell-Teile, +# greifende UCX-Huellen und treffende Frucht-Streuung. +# +# Was stattdessen zaehlt, ist der BOUNDS-RADIUS: laeuft der aus dem Ruder, +# greift das Culling daneben (die Spielseite hatte den Fall mit Radius 3.5 +# statt 350 - ein Skalenfehler). Geprueft wird er nicht gegen eine Konstante, +# sondern gegen die Blender-Messung: Hoehe und Radius muessen DENSELBEN +# Skalenfaktor tragen. co = [ob.matrix_world @ v.co for v in me.vertices] lo = [min(c[i] for c in co) for i in range(3)] hi = [max(c[i] for c in co) for i in range(3)] mid = ((lo[0] + hi[0]) * 0.5, (lo[1] + hi[1]) * 0.5) -print("Ursprung: Mitte %.3f/%.3f, min.Z %.3f, Hoehe %.2f m" - % (mid[0], mid[1], lo[2], hi[2] - lo[2])) -if abs(mid[0]) > 0.10 or abs(mid[1]) > 0.10: - fails.append("Bbox nicht zentriert (%.3f/%.3f)" % mid) +fbx_h = hi[2] - lo[2] +fbx_r = max(math.hypot(c[0], c[1]) for c in co) +print("Ursprung: min.Z %.3f, Hoehe %.2f, Bounds-Radius %.2f, Bbox-Mitte " + "%.3f/%.3f (nur zur Info)" % (lo[2], fbx_h, fbx_r, mid[0], mid[1])) if abs(lo[2]) > 0.01: fails.append("min.Z = %.3f, erwartet 0" % lo[2]) +if blender_h > 0 and blender_r > 0: + sk_h = fbx_h / blender_h + sk_r = fbx_r / blender_r + print("Skala aus Hoehe %.3f, aus Radius %.3f" % (sk_h, sk_r)) + if abs(sk_r - sk_h) > sk_h * 0.05: + fails.append("Bounds-Radius traegt eine andere Skala als die Hoehe " + "(%.3f gegen %.3f) - so greift das Culling daneben" + % (sk_r, sk_h)) # --- Der eigentliche Punkt: Kugel-Normalen im FBX ------------------------ blatt_polys = [p for p in me.polygons if p.material_index == 1] diff --git a/tests/test_obstbaum.py b/tests/test_obstbaum.py index d5585df..2d43d74 100644 --- a/tests/test_obstbaum.py +++ b/tests/test_obstbaum.py @@ -110,19 +110,36 @@ def deckung_messen(preset, seed): mitten.append((sum(p.x for p in pts) / len(pts), sum(p.y for p in pts) / len(pts), sum(p.z for p in pts) / len(pts))) + # FALLE: erst kopieren, DANN freigeben. `to_mesh_clear` macht jede + # Referenz auf das Mesh ungueltig ("StructRNA of type Mesh has been + # removed") - die Kugel-Rechnung stand zuerst danach. + pts = [v.co.copy() for v in m.vertices] ev.to_mesh_clear() lr = max(math.hypot(x, y) for x, y, _z in mitten) lz = [z for _x, _y, z in mitten] vol = math.pi * lr ** 2 * (max(lz) - min(lz)) - return flaeche / vol if vol else 0.0 + # Kugel-Kennwert mit DERSELBEN Formel wie unten: Kronenhoehe geteilt durch + # den groessten Perzentil-Durchmesser. + pz = [q.z for q in pts] + d3 = (max(pz) - min(pz)) / 3.0 + breiten = [] + for kk in range(3): + teil = sorted(math.hypot(q.x, q.y) for q in pts + if min(pz) + kk * d3 <= q.z <= min(pz) + (kk + 1) * d3) + breiten.append(2 * (teil[int(0.9 * (len(teil) - 1))] if teil else 0.0)) + kug = (max(pz) - min(pz)) / max(breiten) if max(breiten) else 0.0 + return (flaeche / vol if vol else 0.0), kug # Die EICHE ist der Massstab: sie schliesst laut Abnahme der Spielseite, der # Obstbaum tat es nicht. Hier gemessen statt als Konstante hingeschrieben, # weil der Wert an der Card-Flaeche haengt - eine feste Zahl waere nur fuer # genau diese Testkarte richtig. -EICHE = sum(deckung_messen("eiche", sd) for sd in (1, 2, 3)) / 3.0 -print("Massstab Eiche: %.2f m2 Blatt je m3 Krone (mit DIESER Testcard)" % EICHE) +_ref = [deckung_messen("eiche", sd) for sd in (1, 2, 3)] +EICHE = sum(r[0] for r in _ref) / 3.0 +EICHE_KUGEL = sum(r[1] for r in _ref) / 3.0 +print("Massstab Eiche: %.2f m2 Blatt je m3 Krone, Kugel-Kennwert %.2f " + "(mit DIESER Testcard)" % (EICHE, EICHE_KUGEL)) print("") # Die Seeds sind die der Spielseite: Apfel 1/15/22, Kirsche 2/16/23, @@ -220,17 +237,19 @@ for seed in SEEDS: um = profil[0] / profil[1] if profil[1] else 0.0 # KUGEL-Kennwert: Kronenhoehe geteilt durch die groesste Kronenbreite. # - # Er steht hier als zweites Netz gegen Trichter (0.98-1.12) und Pilz - # (1.05-1.17) - und weil die Spielseite "Hoehe ~ Breite" als Zielbild - # genannt hat, gehoert die Zahl sichtbar ins Protokoll. - # Er trennt die Kugel (1.35-1.47) aber NICHT von der Haube (1.26-1.44): - # beide Formen unterscheiden sich vor allem im KRONENANSATZ (29 % gegen - # 39 %), und den prueft der Check weiter unten. Ein erster Anlauf setzte - # die Grenze auf 0.88 - eine Zahl aus einer anderen Messung, die hier bei - # Werten um 1.4 alles durchgelassen haette. + # RELATIV zur Eiche, nicht als feste Zahl. Die Bueschel-Schalen schieben + # jede Card um bis zu einen Kappenradius vom Ast weg, und zwar in ALLE + # Richtungen - die Krone gewinnt ringsum Breite, in der Hoehe aber nur oben. + # Das Verhaeltnis kippt dadurch bauartbedingt: der Obstbaum fiel von + # 1.35-1.47 auf 0.95-1.23, ohne dass an seiner Form etwas falsch war. + # + # Eine neue Konstante haette dasselbe Schicksal bei der naechsten Bauform. + # Die Vorgabe der Spielseite lautet deshalb: der Obstbaum bleibt die + # RUNDESTE Art, also deutlich unter dem Eichenwert aus demselben Lauf. + # Dasselbe Prinzip wie bei der Deckungs-Schranke. kugel = 0.0 if blatt_pts and max(profil) > 0: - pz = [p.z for p in blatt_pts] + pz = [q.z for q in blatt_pts] kugel = (max(pz) - min(pz)) / max(profil) kugeln.append(kugel) obenmitte.append(om) @@ -291,10 +310,10 @@ for seed in SEEDS: "(%.2f) - unten zu schmal, das wird ein Pilz bzw. ein " "Trichter (0.66-0.90)" % (seed, profil[0], profil[1], um)) - if kugel < 1.20: - fails.append("Seed %d: Kronenhoehe/-breite %.2f - flacher als Trichter " - "(0.98-1.12) und Pilz (1.05-1.17) zulassen" - % (seed, kugel)) + if kugel > EICHE_KUGEL * 0.65: + fails.append("Seed %d: Kugel-Kennwert %.2f, Eiche %.2f (%.0f %%) - der " + "Obstbaum muss die RUNDESTE Art bleiben, Richtwert <= 65 %%" + % (seed, kugel, EICHE_KUGEL, 100 * kugel / EICHE_KUGEL)) # DIE funktionale Bedingung. if v < 1.3: @@ -330,8 +349,10 @@ print("") print("Kronenradius/Card ueber alle Seeds: %.2f - %.2f" % (min(verh), max(verh))) print("Krone unten/mitte ueber alle Seeds: %.2f - %.2f (Pilz 0.75-0.90, " "Trichter 0.66-0.72)" % (min(untenmitte), max(untenmitte))) -print("Kugel (KronH/KronB) ueber alle Seeds: %.2f - %.2f (Trichter 0.98-1.12, " - "Pilz 1.05-1.17, Haube 1.26-1.44)" % (min(kugeln), max(kugeln))) +print("Kugel (KronH/KronB) ueber alle Seeds: %.2f - %.2f, Eiche %.2f " + "(%.0f-%.0f %% - Vorgabe <= 65 %%)" + % (min(kugeln), max(kugeln), EICHE_KUGEL, + 100 * min(kugeln) / EICHE_KUGEL, 100 * max(kugeln) / EICHE_KUGEL)) print("Krone oben/mitte ueber alle Seeds: %.2f - %.2f (Trichter 1.18-1.31)" % (min(obenmitte), max(obenmitte))) print("Kronen-Deckung ueber alle Seeds: %.1f - %.1f m2/m3, Eiche %.1f "