From 5db92a3c74f4863e6e9ce581044ebfd8e16830b3 Mon Sep 17 00:00:00 2001 From: D4rkst3r Date: Thu, 30 Jul 2026 07:47:11 +0200 Subject: [PATCH] Tree Generator v1.20.0: Palme neu abgestimmt Palmenstamm mit nahezu konstantem Durchmesser (Taper 0.22), glatt geschwollener Fuss ohne Wurzelbretter, 15 kraeftige Wedelstiele im Bogen statt duenner haengender Draehte. 1784 von 2500 Tris. Co-Authored-By: Claude Opus 4.8 --- blender_manifest_tree.toml | 2 +- dist/index.json | 8 +++---- dist/stylized_tree_generator-1.19.0.zip | Bin 17827 -> 0 bytes dist/stylized_tree_generator-1.20.0.zip | Bin 0 -> 18130 bytes stylized_tree_generator.py | 28 ++++++++++++++++++------ tests/test_tree_addon.py | 2 +- 6 files changed, 27 insertions(+), 13 deletions(-) delete mode 100644 dist/stylized_tree_generator-1.19.0.zip create mode 100644 dist/stylized_tree_generator-1.20.0.zip diff --git a/blender_manifest_tree.toml b/blender_manifest_tree.toml index 8dbd292..c435983 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.19.0" +version = "1.20.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 4466481..35cbc74 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.19.0", + "version": "1.20.0", "type": "add-on", "maintainer": "D4rkst3r", "license": [ @@ -48,9 +48,9 @@ "Mesh", "Modeling" ], - "archive_url": "./stylized_tree_generator-1.19.0.zip", - "archive_size": 17827, - "archive_hash": "sha256:37f6a0be381178144b36a731b68f8d307c18c714e0d9b2cd9f1c109e4b4de8e6" + "archive_url": "./stylized_tree_generator-1.20.0.zip", + "archive_size": 18130, + "archive_hash": "sha256:1b3f215f320072966f3ced2aa15dff1acdcace63f9640b4af51c1eca3bcee95a" } ] } \ No newline at end of file diff --git a/dist/stylized_tree_generator-1.19.0.zip b/dist/stylized_tree_generator-1.19.0.zip deleted file mode 100644 index 112c62ce19e10f013383f645dc04a3e4db57cdb0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17827 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

s 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 literal 0 HcmV?d00001 diff --git a/stylized_tree_generator.py b/stylized_tree_generator.py index 43a9176..6c5b0c9 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, 19, 0), + "version": (1, 20, 0), "blender": (4, 2, 0), "location": "View3D > Sidebar > Tree Gen", "description": "Parametrischer Baum-/Palmen-/Busch-Generator (Geometry Nodes) mit Wachstums-Stufen", @@ -80,13 +80,27 @@ DEFAULTS = { # Presets: nur die Abweichungen von DEFAULTS. PRESETS = { "baum": {}, + # Palme: ein Palmenstamm ist KEIN Baumstamm - er hat nahezu konstanten + # Durchmesser (kaum Taper), einen glatt geschwollenen Fuss ohne Wurzelbretter, + # und die Wedel sitzen alle in EINER Krone ganz oben. "palme": { - "Height": 7.0, "Trunk Radius": 0.16, "Bend": 1.1, "Taper": 0.55, - "Branch Count": 11, "Branch Length": 2.6, "Branch Up": 0.55, - "Branch Start": 0.93, "Branch End": 1.0, - "Branch Bend": 0.25, "Branch Droop": 1.5, - "Sub Count": 0, # Wedel-Fiederung macht der User als Blattwerk - "Sides": 6, + "Height": 6.0, "Trunk Radius": 0.115, "Bend": 1.1, + "Taper": 0.22, # fast konstanter Durchmesser statt Kegel + "Trunk Tip": 0.9, # Krone endet stumpf, nicht spitz + "Branch Count": 15, "Branch Length": 3.4, "Branch Up": 1.05, + "Branch Start": 0.95, "Branch End": 1.0, + "Branch Bend": 0.35, + "Branch Droop": 1.15, "Droop Curve": 2.4, # Bogen, nicht haengend + "Branch Thickness": 0.32, # Wedelstiel ist kraeftig wie ein Besenstiel + "Branch Taper": 0.38, # bleiben bis zur Spitze Stiel, kein Draht + "Tip Blunt": 0.24, # stumpfes Ende statt Antenne + "Root Flare": 0.55, # nur leichte Verdickung ... + "Root Lobes": 0.0, "Root Lobe Depth": 0.0, # ... ohne Wurzelbretter + "Crown Taper": 0.0, "Crown Bulge": 0.0, + "Sub Count": 0, # Wedel-Fiederung macht der User als Blattwerk + "Detail": 0.7, # mehr Segmente -> weicher Bogen, kein + # langes gerades Endsegment als "Draht" + "Sides": 9, "Branch Sides": 4, }, "busch": { "Height": 1.6, "Trunk Radius": 0.07, "Bend": 0.4, "Taper": 0.8, diff --git a/tests/test_tree_addon.py b/tests/test_tree_addon.py index 8d2885f..892ead0 100644 --- a/tests/test_tree_addon.py +++ b/tests/test_tree_addon.py @@ -1,7 +1,7 @@ """Prueft das gebaute Tree-Addon: registrieren, Operator ausfuehren, Ergebnis messen.""" import bpy, sys, zipfile, os, tempfile, importlib.util, traceback -ZIP = r"A:\eco\stylized_rock_generator\dist\stylized_tree_generator-1.19.0.zip" +ZIP = r"A:\eco\stylized_rock_generator\dist\stylized_tree_generator-1.20.0.zip" fails = [] tmp = tempfile.mkdtemp()