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:
@@ -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"
|
||||
|
||||
Vendored
+4
-4
@@ -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"
|
||||
}
|
||||
]
|
||||
}
|
||||
BIN
Binary file not shown.
BIN
Binary file not shown.
+42
-20
@@ -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,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()
|
||||
|
||||
Reference in New Issue
Block a user