From 10b27a25a90649c36031fce17342d56bc89cb6d4 Mon Sep 17 00:00:00 2001 From: D4rkst3r Date: Wed, 29 Jul 2026 11:44:16 +0200 Subject: [PATCH] Tree Generator v1.13.0: Kaktus als echter Saguaro + Trunk Tip Beide Arme laufen flach raus, knicken und steigen parallel zum Stamm, ohne ihn zu ueberragen (Droop und Hoehe aufeinander abgestimmt). Neu 'Trunk Tip': steuert, ob der Stamm duenn auslaeuft oder mit stumpfer Kuppe endet. Co-Authored-By: Claude Opus 4.8 --- README.md | 6 +++--- blender_manifest_tree.toml | 2 +- dist/index.json | 8 ++++---- dist/stylized_tree_generator-1.12.0.zip | Bin 15970 -> 0 bytes dist/stylized_tree_generator-1.13.0.zip | Bin 0 -> 16050 bytes stylized_tree_generator.py | 13 +++++++++---- 6 files changed, 17 insertions(+), 12 deletions(-) delete mode 100644 dist/stylized_tree_generator-1.12.0.zip create mode 100644 dist/stylized_tree_generator-1.13.0.zip diff --git a/README.md b/README.md index d76ccd6..1213083 100644 --- a/README.md +++ b/README.md @@ -34,9 +34,9 @@ Points*, Goldener Winkel = Phyllotaxis) statt einer aus Weltkoordinaten gerechneten Richtung — Sub-Aeste standen vorher wie Nadeln quer zum Ast. Neu: `Tip Blunt` (Baum laeuft spitz aus, Kaktus endet stumpf). -⚠️ **Bekannte Grenze:** Das `kaktus`-Preset ist noch nicht ueberzeugend — die Arme -spreizen im V, statt nach dem Abgang senkrecht hochzulaufen (die Droop-Naeherung -kann nur einen gleichmaessigen Bogen, keinen Ellbogen). Als Platzhalter brauchbar. +Der `kaktus` nutzt `Droop Curve` fuer den Saguaro-Ellbogen (Arm laeuft flach raus +und knickt dann steil hoch). Offen ist dort nur, dass die Rippen (`Ribs`) im +Shading kaum sichtbar sind. --- diff --git a/blender_manifest_tree.toml b/blender_manifest_tree.toml index 5f65411..9cd6b9d 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.12.0" +version = "1.13.0" name = "Stylized Tree Generator" tagline = "Parametrische Baeume, Palmen, Bueschen mit Wachstums-Stufen" maintainer = "D4rkst3r" diff --git a/dist/index.json b/dist/index.json index fc36ca4..43ef407 100644 --- a/dist/index.json +++ b/dist/index.json @@ -32,7 +32,7 @@ "id": "stylized_tree_generator", "name": "Stylized Tree Generator", "tagline": "Parametrische Baeume, Palmen, Bueschen mit Wachstums-Stufen", - "version": "1.12.0", + "version": "1.13.0", "type": "add-on", "maintainer": "D4rkst3r", "license": [ @@ -48,9 +48,9 @@ "Mesh", "Modeling" ], - "archive_url": "./stylized_tree_generator-1.12.0.zip", - "archive_size": 15970, - "archive_hash": "sha256:f0dd283fe891b98f295882a73ba8d7f5dd9618d2367558ba580f3880fba5cc1c" + "archive_url": "./stylized_tree_generator-1.13.0.zip", + "archive_size": 16050, + "archive_hash": "sha256:ea18fb63246eae4a764a4ef428d42363a80dabeaa88abfe1c9321f57e29caa6d" } ] } \ No newline at end of file diff --git a/dist/stylized_tree_generator-1.12.0.zip b/dist/stylized_tree_generator-1.12.0.zip deleted file mode 100644 index 7dd44899cb275d5878affc883896742ce2a87242..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15970 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 Q670X}_g`EP_@C4N0;vJX-v9sr diff --git a/dist/stylized_tree_generator-1.13.0.zip b/dist/stylized_tree_generator-1.13.0.zip new file mode 100644 index 0000000000000000000000000000000000000000..eca99cef209ff6d916540324daa6173af44cd3b8 GIT binary patch literal 16050 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 Sidebar > Tree Gen", "description": "Parametrischer Baum-/Palmen-/Busch-Generator (Geometry Nodes) mit Wachstums-Stufen", @@ -39,6 +39,8 @@ DEFAULTS = { "Branch Bend": 0.75, # Krummheit je Ast/Zweig (0 = gerade Staebe) "Branch Droop": 0.0, # >0 haengt nach unten (Palme), <0 kruemmt nach oben (Kaktus) "Droop Curve": 2.0, # 2 = weicher Bogen, 4+ = scharfer Ellbogen + "Trunk Tip": 0.3, # Anteil von Tip Blunt fuer die Stammspitze; + # klein = laeuft duenn aus, 1.0 = stumpfe Kuppe "Branch Thickness": 0.32, # Ast-Dicke relativ zum Stamm "Branch Taper": 0.55, # schwach verjuengen -> Roehre statt Kegel/Dorn "Sub Count": 2, # Sub-Aeste je Hauptast (0 = aus) @@ -131,15 +133,17 @@ PRESETS = { # Kaktus: dicker, kaum verjuengter Stamm, wenige Arme, die per NEGATIVEM # Droop nach oben kruemmen (Saguaro-Silhouette). Keine Sub-Aeste. "kaktus": { - "Height": 3.0, "Trunk Radius": 0.28, "Bend": 0.08, "Taper": 0.10, + "Height": 3.4, "Trunk Radius": 0.28, "Bend": 0.08, "Taper": 0.10, "Branch Count": 2, "Branch Length": 1.9, "Branch Up": 0.12, "Branch Start": 0.30, "Branch End": 0.46, "Branch Bend": 0.0, - "Branch Droop": -3.0, # negativ = Arme kruemmen nach OBEN (Saguaro) + "Branch Droop": -1.35, # negativ = Arme kruemmen nach OBEN (Saguaro); + # zu gross und die Arme ueberragen den Stamm "Droop Curve": 4.5, # spaeter, dafuer scharfer Ellbogen "Branch Thickness": 0.72, # Arme fast so dick wie der Stamm "Branch Taper": 0.12, # Arme bleiben dick statt spitz zuzulaufen "Sub Count": 0, "Crown Taper": 0.0, "Root Flare": 0.25, + "Trunk Tip": 1.0, "Root Lobe Depth": 0.0, "Tip Blunt": 0.45, "Sides": 16, "Branch Sides": 12, "Ribs": 9.0, "Rib Depth": 0.09, }, @@ -216,6 +220,7 @@ def build_group(): # (= Kaktus-Arme statt Palmwedel). add_in("Branch Droop", 'NodeSocketFloat', DEFAULTS["Branch Droop"], -3.0, 3.0) add_in("Droop Curve", 'NodeSocketFloat', DEFAULTS["Droop Curve"], 1.0, 8.0) + add_in("Trunk Tip", 'NodeSocketFloat', DEFAULTS["Trunk Tip"], 0.05, 1.0) add_in("Branch Thickness", 'NodeSocketFloat', DEFAULTS["Branch Thickness"], 0.05, 1.0) add_in("Branch Taper", 'NodeSocketFloat', DEFAULTS["Branch Taper"], 0.0, 1.0) add_in("Sub Count", 'NodeSocketInt', DEFAULTS["Sub Count"], 0, 12) @@ -347,7 +352,7 @@ def build_group(): # Stammspitze duenner auslaufen lassen als die Aeste: sonst endet der Stamm # mit einem sichtbaren flachen Deckel. Ein eigener, kleinerer Mindestwert. ttip = N("ShaderNodeMath"); ttip.location = (-420, -80); ttip.operation = 'MULTIPLY' - L(V["Tip Blunt"], ttip.inputs[0]); ttip.inputs[1].default_value = 0.3 + L(V["Tip Blunt"], ttip.inputs[0]); L(V["Trunk Tip"], ttip.inputs[1]) tmulr = N("ShaderNodeMath"); tmulr.location = (-260, 60); tmulr.operation = 'MULTIPLY' L(inv.outputs[0], tmulr.inputs[0]); L(tdome.outputs[0], tmulr.inputs[1]) tmaxr = N("ShaderNodeMath"); tmaxr.location = (-110, 60); tmaxr.operation = 'MAXIMUM'