Tree Generator v1.21.0: Palme an Referenz + Sub-Count-0-Bug

"Sub Count = 0" schaltete die Sub-Aeste nicht ab (Curve to Points klemmt auf 1) ->
duenne "Nadeln" bei Palme und Kaktus. Jetzt echter Geometry-Switch.
Palme am TreeIt-Referenzbaum ausgemessen: kurze Wedelstiele (0.78 m statt 3.4 m),
Stamm 4.4 m mit dickem Kronenschaft. 854 statt 1784 Tris.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
2026-07-30 07:58:28 +02:00
co-authored by Claude Opus 4.8
parent 5db92a3c74
commit 2eb0131a0e
6 changed files with 48 additions and 26 deletions
+1 -1
View File
@@ -1,7 +1,7 @@
schema_version = "1.0.0"
id = "stylized_tree_generator"
version = "1.20.0"
version = "1.21.0"
name = "Stylized Tree Generator"
tagline = "Parametrische Baeume, Palmen, Bueschen mit Wachstums-Stufen"
maintainer = "D4rkst3r"
+4 -4
View File
@@ -32,7 +32,7 @@
"id": "stylized_tree_generator",
"name": "Stylized Tree Generator",
"tagline": "Parametrische Baeume, Palmen, Bueschen mit Wachstums-Stufen",
"version": "1.20.0",
"version": "1.21.0",
"type": "add-on",
"maintainer": "D4rkst3r",
"license": [
@@ -48,9 +48,9 @@
"Mesh",
"Modeling"
],
"archive_url": "./stylized_tree_generator-1.20.0.zip",
"archive_size": 18130,
"archive_hash": "sha256:1b3f215f320072966f3ced2aa15dff1acdcace63f9640b4af51c1eca3bcee95a"
"archive_url": "./stylized_tree_generator-1.21.0.zip",
"archive_size": 18435,
"archive_hash": "sha256:eb093c862dc7192728e86ef07d45fc1a9f4381044c2f8560b399f2a85911ec94"
}
]
}
Binary file not shown.
Binary file not shown.
+42 -20
View File
@@ -1,7 +1,7 @@
bl_info = {
"name": "Stylized Tree Generator",
"author": "D4rkst3r",
"version": (1, 20, 0),
"version": (1, 21, 0),
"blender": (4, 2, 0),
"location": "View3D > Sidebar > Tree Gen",
"description": "Parametrischer Baum-/Palmen-/Busch-Generator (Geometry Nodes) mit Wachstums-Stufen",
@@ -80,27 +80,30 @@ 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 - am TreeIt-Referenzbaum ausgemessen (palm07_0 + frond stem_1):
# Stamm 4.33 m, Radius 0.133 unten -> ~0.086 Mitte -> 0.106 OBEN
# (Kronenschaft!), 11 Seiten, nur 150 Tris.
# Wedel-STIELE sind kurze Stummel von 0.49-0.80 m - die langen Wedel machen
# dort die BLATT-Cards (Spannweite 3.3 m, eigenes Objekt). Mein Generator
# liefert also nur die Stiele; die Fiederung kommt als _Leaf-Ebene dazu.
"palme": {
"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 ...
"Height": 4.4, "Trunk Radius": 0.133, "Bend": 0.7,
"Taper": 0.35, # sanft, nicht kegelig
"Tip Blunt": 0.7, # Krone bleibt dick (Kronenschaft) UND die
# Stiele laufen nicht drahtig aus
"Trunk Tip": 1.0,
"Branch Count": 11, "Branch Length": 0.78, "Branch Up": 0.9,
"Branch Start": 0.9, "Branch End": 1.0,
"Branch Bend": 0.3,
"Branch Droop": 0.5, "Droop Curve": 2.2,
"Branch Thickness": 0.16,
"Branch Taper": 0.45,
"Root Flare": 0.5, # 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,
"Sub Count": 0, # Fiederung = _Leaf-Ebene
"Detail": 0.55,
"Sides": 11, "Branch Sides": 4,
},
"busch": {
"Height": 1.6, "Trunk Radius": 0.07, "Bend": 0.4, "Taper": 0.8,
@@ -864,8 +867,27 @@ def build_group():
mesh_branch = _to_mesh(rsetp, "Geometry", V["Branch Sides"], 3400, 200)
mesh_sub = _to_mesh(sbset, "Geometry", V["Sub Sides"], 3400, -500)
# FALLE: "Curve to Points" klemmt Count auf mindestens 1 -> Sub Count = 0
# schaltet die Zweige NICHT ab, es entsteht trotzdem einer pro Ast (gemessen:
# Sub Count 0 und 1 ergeben identische 583 Verts). Bei Palme und Kaktus waren
# das duenne, gerade "Nadeln" neben den richtigen Aesten. Deshalb hier ein
# echter Schalter, der die Sub-Ebene bei 0 komplett verwirft.
sub_on = N("FunctionNodeCompare"); sub_on.location = (4400, -350)
try:
sub_on.data_type = 'INT'; sub_on.operation = 'GREATER_THAN'
L(V["Sub Count"], sub_on.inputs[2])
sub_on.inputs[3].default_value = 0
except Exception:
sub_on = N("ShaderNodeMath"); sub_on.location = (4400, -350)
sub_on.operation = 'GREATER_THAN'; sub_on.inputs[1].default_value = 0.5
L(V["Sub Count"], sub_on.inputs[0])
sub_sw = N("GeometryNodeSwitch"); sub_sw.location = (4550, -250)
sub_sw.input_type = 'GEOMETRY'
L(sub_on.outputs[0], _sock(sub_sw, "Switch"))
L(_out(mesh_sub, "Geometry"), _sock(sub_sw, "True"))
join = N("GeometryNodeJoinGeometry"); join.location = (4700, 300)
L(_out(mesh_sub, "Geometry"), join.inputs[0])
L(_out(sub_sw, "Output"), join.inputs[0])
L(_out(mesh_branch, "Geometry"), join.inputs[0])
L(_out(mesh_trunk, "Geometry"), join.inputs[0])
stuv = join # Name beibehalten fuer den nachfolgenden Merge-Zweig
+1 -1
View File
@@ -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.20.0.zip"
ZIP = r"A:\eco\stylized_rock_generator\dist\stylized_tree_generator-1.21.0.zip"
fails = []
tmp = tempfile.mkdtemp()