From e210789eaa9ba042363f537808f601bcb90b0348 Mon Sep 17 00:00:00 2001 From: D4rkst3r Date: Wed, 29 Jul 2026 10:52:15 +0200 Subject: [PATCH] Tree Generator v1.4.0: Zweige gebogen wie der Stamm Sub-Aeste hatten gar keine Biegung -> gerade Staebe. Jetzt nutzen Stamm, Aeste und Zweige dieselbe Noise-Kruemmung (nach Realize ueber die Weltposition, damit jeder Zweig anders faellt). Zweige ausserdem duenn + fast gleichmaessig statt dick-kegelig (das war die eigentliche Dorn-Ursache). Co-Authored-By: Claude Opus 4.8 --- blender_manifest_tree.toml | 2 +- dist/index.json | 8 ++--- dist/stylized_tree_generator-1.3.0.zip | Bin 10852 -> 0 bytes dist/stylized_tree_generator-1.4.0.zip | Bin 0 -> 11373 bytes stylized_tree_generator.py | 46 +++++++++++++++++++++---- 5 files changed, 44 insertions(+), 12 deletions(-) delete mode 100644 dist/stylized_tree_generator-1.3.0.zip create mode 100644 dist/stylized_tree_generator-1.4.0.zip diff --git a/blender_manifest_tree.toml b/blender_manifest_tree.toml index 5b5be0b..502829f 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.3.0" +version = "1.4.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 479b63d..67429f5 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.3.0", + "version": "1.4.0", "type": "add-on", "maintainer": "D4rkst3r", "license": [ @@ -48,9 +48,9 @@ "Mesh", "Modeling" ], - "archive_url": "./stylized_tree_generator-1.3.0.zip", - "archive_size": 10852, - "archive_hash": "sha256:31c7a72133a6c28d24f95d661cabf0be56dc00c3102ad57a4a3c1e1c5a30bcd4" + "archive_url": "./stylized_tree_generator-1.4.0.zip", + "archive_size": 11373, + "archive_hash": "sha256:421a702f2e5b088988db638dd7cbfb49de8126397476cfe192441bf069983c55" } ] } \ No newline at end of file diff --git a/dist/stylized_tree_generator-1.3.0.zip b/dist/stylized_tree_generator-1.3.0.zip deleted file mode 100644 index 5d0dc28f815adbc7419b37531c91967b5de3d9e7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10852 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 yr!DY*)c+Cn{ohmk?=0*8n*ac43sm`!82 Sidebar > Tree Gen", "description": "Parametrischer Baum-/Palmen-/Busch-Generator (Geometry Nodes) mit Wachstums-Stufen", @@ -36,10 +36,10 @@ DEFAULTS = { "Branch Up": 1.3, # >1 = Aeste zeigen nach oben; negativ = haengend "Branch Start": 0.35, # ab wo am Stamm Aeste sitzen (0..1) "Branch End": 0.95, - "Branch Bend": 0.45, # Variation je Ast (0 = gerade Staebe) + "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) "Branch Thickness": 0.32, # Ast-Dicke relativ zum Stamm - "Branch Taper": 0.85, # wie der Stamm: laeuft NICHT auf 0 -> keine Nadeln + "Branch Taper": 0.55, # schwach verjuengen -> Roehre statt Kegel/Dorn "Sub Count": 3, # Sub-Aeste je Hauptast (0 = aus) "Sub Length": 0.55, "Sub Up": 1.4, @@ -403,20 +403,24 @@ def build_group(): L(V["Sub Length"], stop.inputs["Z"]) L(stop.outputs[0], _sock(sline, "End")) sres = N("GeometryNodeResampleCurve"); sres.location = (2250, 760) - _sock(sres, "Count").default_value = 6 + _sock(sres, "Count").default_value = 9 # genug Punkte, damit die Biegung sichtbar wird L(_out(sline, "Curve"), _sock(sres, "Curve")) # Sub-Aeste: gleiche Verjuengungs-Logik wie Hauptaeste (Branch Taper + Kuppel). # Vorher lief der Radius hier hart auf 0 -> die Sub-Aeste wurden zu Nadeln. sspar = N("GeometryNodeSplineParameter"); sspar.location = (2250, 900) + # ... und verjuengen sich nur SCHWACH. Ein dicker Ansatz, der spitz zulaeuft, + # ist genau die Dorn-Form - ein echter Zweig ist duenn und gleichmaessig. + shalf = N("ShaderNodeMath"); shalf.location = (2180, 1000); shalf.operation = 'MULTIPLY' + L(V["Branch Taper"], shalf.inputs[0]); shalf.inputs[1].default_value = 0.35 stap = N("ShaderNodeMath"); stap.location = (2330, 1000); stap.operation = 'MULTIPLY' - L(V["Branch Taper"], stap.inputs[0]); L(sspar.outputs["Factor"], stap.inputs[1]) + L(shalf.outputs[0], stap.inputs[0]); L(sspar.outputs["Factor"], stap.inputs[1]) sinv = N("ShaderNodeMath"); sinv.location = (2400, 900) sinv.operation = 'SUBTRACT'; sinv.inputs[0].default_value = 1.0 L(stap.outputs[0], sinv.inputs[1]) sbase = N("ShaderNodeMath"); sbase.location = (2550, 900); sbase.operation = 'MULTIPLY' L(V["Trunk Radius"], sbase.inputs[0]) - sbase.inputs[1].default_value = 0.32 # duenner als Hauptaeste, aber keine Nadel + sbase.inputs[1].default_value = 0.12 # Zweige sind DUENN ... sdome = _dome(sspar, 2550, 1200) srad2 = _shape(sinv.outputs[0], sdome, sbase.outputs[0], 2750, 900) ssetr = N("GeometryNodeSetCurveRadius"); ssetr.location = (2550, 760) @@ -443,8 +447,36 @@ def build_group(): sreal = N("GeometryNodeRealizeInstances"); sreal.location = (3000, 520) L(_out(sinst, "Instances", "Geometry"), _sock(sreal, "Geometry")) + # Sub-Aeste genauso biegen wie Stamm und Hauptaeste. Ohne diesen Schritt + # blieben sie schnurgerade - das ist der Grund, warum sie wie angeklebte + # Staebe wirkten. Auch hier NACH dem Realize, damit die Weltposition jedem + # Zweig ein eigenes Noise gibt (sonst biegen alle identisch). + sbspar = N("GeometryNodeSplineParameter"); sbspar.location = (3000, 300) + sbpos = N("GeometryNodeInputPosition"); sbpos.location = (3000, 160) + sbnoise = N("ShaderNodeTexNoise"); sbnoise.location = (3150, 160) + sbnoise.noise_dimensions = '4D' + _sock(sbnoise, "Scale").default_value = 1.6 + L(sbpos.outputs[0], _sock(sbnoise, "Vector")) + L(V["Seed"], _sock(sbnoise, "W")) + sbsub = N("ShaderNodeVectorMath"); sbsub.location = (3320, 160) + sbsub.operation = 'SUBTRACT'; sbsub.inputs[1].default_value = (0.5, 0.5, 0.5) + L(sbnoise.outputs["Color"], sbsub.inputs[0]) + sbfac = N("ShaderNodeMath"); sbfac.location = (3150, 300); sbfac.operation = 'MULTIPLY' + L(V["Branch Bend"], sbfac.inputs[0]) + L(sbspar.outputs["Factor"], sbfac.inputs[1]) + sbamt = N("ShaderNodeMath"); sbamt.location = (3320, 300); sbamt.operation = 'MULTIPLY' + sbamt.inputs[1].default_value = 0.5 # Zweige biegen etwas weniger als Aeste + L(sbfac.outputs[0], sbamt.inputs[0]) + sboff = N("ShaderNodeVectorMath"); sboff.location = (3480, 220) + sboff.operation = 'SCALE' + L(sbsub.outputs[0], sboff.inputs[0]) + L(sbamt.outputs[0], _sock(sboff, "Scale")) + sbset = N("GeometryNodeSetPosition"); sbset.location = (3640, 520) + L(_out(sreal, "Geometry"), _sock(sbset, "Geometry")) + L(sboff.outputs[0], _sock(sbset, "Offset")) + join = N("GeometryNodeJoinGeometry"); join.location = (3150, 200) - L(_out(sreal, "Geometry"), join.inputs[0]) + L(_out(sbset, "Geometry"), join.inputs[0]) L(_out(rsetp, "Geometry"), join.inputs[0]) L(_out(setrad, "Curve"), join.inputs[0])