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 7dd4489..0000000 Binary files a/dist/stylized_tree_generator-1.12.0.zip and /dev/null differ 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 0000000..eca99ce Binary files /dev/null and b/dist/stylized_tree_generator-1.13.0.zip differ diff --git a/stylized_tree_generator.py b/stylized_tree_generator.py index f378080..0cab7fa 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, 12, 0), + "version": (1, 13, 0), "blender": (4, 2, 0), "location": "View3D > 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'