Tree Gen 1.36.0: Ursprung an der Stammbasis, Weide gedeckelt, Birke ueberarbeitet
1) Ursprung: Stammbasis statt tiefstem Slot-0-Punkt Zweimal war das schon "behoben". Erst kam der Ursprung aus der Gesamt-Bbox (eine Blatt-Card hob den Baum an), dann aus Material-Slot 0 - aber die AESTE gehoeren ebenfalls zum Rinden-Slot. Gemessen an Tanne_01_S1: tiefster Slot-0-Punkt -5.35 cm, tiefster STAMM-Punkt -0.02 cm. Die Stammbasis schwebte 5.3 cm ueber dem Boden. Die exakte Trennung liefert ast_id (0 = Stamm) - dasselbe Attribut, das der Baum fuer die Faell-Teile ohnehin traegt. Ein Schwellwert auf den Achsabstand faellt beim Kaktus um: dessen Stamm ist dicker als jeder sinnvolle Schwellwert. X/Y kommt jetzt aus dem untersten RING statt aus der Stamm-Bbox; bei Bend 1.5 liegt die Bbox-Mitte in der Kruemmung. Neu: tests/test_ursprung.py, gemessen am reimportierten FBX. Die erste Fassung des Tests suchte den "tiefsten Punkt nahe der Achse" - die Gegenprobe hat sie umgeworfen, weil bei der Tanne eine Astspitze ins Achsband faellt. Ein Schwellwert, der die Bugfassung durchlaesst, prueft nichts. Jetzt wird ein Stammquerschnitt gesucht: Vertices, die die Achse in allen Himmelsrichtungen umschliessen. Gegenprobe bestanden. Nebenbefund: ein Baum ohne Aeste traegt gar kein ast_id (Branch Count 0 schaltet den Ast-Zweig des Graphen ab). Dann ist alles Stamm und der Fallback exakt. 2) Weide S4 auf 350 Cards gedeckelt - Entscheidung des Users Gemessen 5456-5594 Tris ueber drei Seeds gegen 4300 Budget; nach der Deckelung 3890-3962. LEAF_STUFEN_PRESET haelt solche Ausnahmen je Preset. 3) Birke war eine Saeule Gemessen B/H 0.15 - schmaler als der Standardbaum (0.22), nicht die Haelfte der Eiche (0.36). Ursache: Branch Up 1.1, die Aeste klebten am Stamm. Zielband 0.35-0.55 aus Van den Berk (8-12 m bei 15-20 m) und Woodland Trust (6-10 m bei 15-25 m); jetzt 0.51. Haengende Zweigenden ueber Branch Droop 0.8 + Droop Curve 3.5, nicht ueber negatives Sub Up: das wurde von +2.2 bis -2.0 durchgemessen und bewegt nichts (1-6 %), weil die Sub-Aeste zu kurz sind. Mit Droop 26 % bei einem Fall von 0.033 x Hoehe - wie die Tanne (0.030), weit weg von der Weide (0.213). 4) run_tests.ps1 benennt Blender-Abstuerze test_export_robust starb rund in jedem sechsten Lauf mit EXCEPTION_ACCESS_VIOLATION und der Runner meldete "<keine Ergebniszeile>". Der Stack enthaelt keinen einzigen Addon-Frame (RNA_property_int_get -> rna_property_rna_or_id_get -> IDP_GetPropertyFromGroup, Null-Deref), und mit eingebauten Markern verschwindet der Absturz: Heisenbug in Blender 5.1.2. Der Runner wiederholt jetzt einmal und benennt den Absturz. 24 Tests bestehen. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -563,6 +563,68 @@ Der Kaktus erzeugt regulaer **0 Cards** — kein Ast ist duenner als `Max Radius
|
||||
und das ist botanisch richtig. Vorher lief das still durch und man stand vor
|
||||
einer leeren `_Leaf`-Ebene; jetzt sagt der Operator es und nennt den Regler.
|
||||
|
||||
### Der Ursprung sitzt an der Stammbasis, nicht am tiefsten Ast
|
||||
|
||||
Zweimal war dieser Fehler schon "behoben". Erst kam der Ursprung aus der
|
||||
Gesamt-Bbox - eine tief haengende Blatt-Card hob den ganzen Baum an. Dann aus
|
||||
Material-Slot 0, was die Cards ausnahm, aber die AESTE gehoeren ebenfalls zum
|
||||
Rinden-Slot. Gemessen an Tanne_01_S1 (Aeste ab 6 % Stammhoehe, haengend): der
|
||||
tiefste Slot-0-Punkt lag bei **-5.35 cm**, der tiefste STAMM-Punkt bei
|
||||
**-0.02 cm**. Die Stammbasis schwebte 5.3 cm ueber dem Boden, weil eine
|
||||
Astspitze den Nullpunkt bestimmte.
|
||||
|
||||
Die exakte Trennung liefert `ast_id` (0 = Stamm) - dasselbe Attribut, das der
|
||||
Baum ohnehin fuer die Faell-Teile traegt. Ein Schwellwert auf den Achsabstand
|
||||
waere die naheliegende Alternative und faellt beim Kaktus um: dessen Stamm ist
|
||||
dicker als jeder sinnvolle Schwellwert. X/Y kommt aus dem UNTERSTEN RING statt
|
||||
aus der Stamm-Bbox; bei einem krummen Stamm (Bend 1.5 am toten Baum) liegt die
|
||||
Bbox-Mitte irgendwo in der Kruemmung.
|
||||
|
||||
`tests/test_ursprung.py` misst am reimportierten FBX. Die erste Fassung des
|
||||
Tests suchte den "tiefsten Punkt nahe der Achse" - und die Gegenprobe hat sie
|
||||
umgeworfen: bei der Tanne faellt eine Astspitze ins Achsband, der Test meldete
|
||||
Fuss = 0, obwohl der Stamm 5 cm darueber schwebte. Ein Schwellwert, der die
|
||||
Bugfassung durchlaesst, prueft nichts. Jetzt wird ein STAMMQUERSCHNITT gesucht:
|
||||
Vertices, die die Achse in allen Himmelsrichtungen umschliessen. Eine Astspitze
|
||||
tut das nicht.
|
||||
|
||||
Nebenbefund: ein Baum ohne Aeste traegt gar kein `ast_id` - das Attribut
|
||||
entsteht auf dem Ast-Zweig des Graphen, und den schaltet `Branch Count 0`
|
||||
komplett ab (Kaktus-Setzling). Dann ist ohnehin alles Stamm, der Fallback ist
|
||||
also exakt und nicht bloss ausreichend.
|
||||
|
||||
### Weide: Ziel-Cardzahl je Preset
|
||||
|
||||
"Volle Dichte" auf S4 heisst: das Ergebnis haengt an der Zweigflaeche, und die
|
||||
faellt je Art verschieden aus. Die Weide traegt die meiste und landete gemessen
|
||||
bei 5456-5594 Tris ueber drei Seeds, gegen ein Stufenbudget von 4300. Mit der
|
||||
Deckelung auf 350 Cards: 3890-3962 Tris.
|
||||
|
||||
`LEAF_STUFEN_PRESET` haelt solche Ausnahmen. Das macht die Tabelle
|
||||
preset-abhaengig - bewusste Entscheidung der Spielseite, statt das Budget fuer
|
||||
alle anzuheben: die Weide ist der Ausreisser, nicht die Regel.
|
||||
|
||||
### Birke: keine Saeule
|
||||
|
||||
Gemessen war die alte Birke Breite/Hoehe **0.15** - schmaler als der
|
||||
Standardbaum (0.22) und nicht einmal die Haelfte der Eiche (0.36). Ursache war
|
||||
`Branch Up` 1.1: die Aeste zeigten fast senkrecht nach oben und klebten am
|
||||
Stamm.
|
||||
|
||||
Zielband aus zwei Quellen, die sich ueberlappen: Van den Berk nennt fuer
|
||||
*Betula pendula* 15-20 m Hoehe bei 8-12 m Kronenbreite (B/H 0.40-0.80), der
|
||||
Woodland Trust 15-25 m bei 6-10 m (0.24-0.67). Schnittmenge rund 0.35-0.55;
|
||||
gemessen jetzt **0.51**.
|
||||
|
||||
Den Habitus nennt Van den Berk woertlich: "spreading branches have clearly
|
||||
pendulous and thin twigs". Das ist der Palmen-Bogen im Kleinen - der Ast steigt
|
||||
erst und kippt dann ab -, deshalb `Branch Droop` mit spaeter `Droop Curve`.
|
||||
Negatives `Sub Up` waere der naheliegende Griff gewesen und bewegt hier nichts:
|
||||
durchgemessen von +2.2 bis -2.0 blieb der Anteil haengender Vertices bei 1-6 %,
|
||||
weil die Sub-Aeste zu kurz sind, um die Silhouette zu tragen. Mit Droop 0.8 sind
|
||||
es 26 % bei einem Fall von 0.033 x Hoehe - vergleichbar der Tanne (0.030), weit
|
||||
weg von der Weide (0.213). Die Zweige haengen, der Baum nicht.
|
||||
|
||||
### Die Node-Gruppe wird WIEDERVERWENDET, nicht neu gebaut
|
||||
|
||||
`build_group()` loeschte die Gruppe `GN_Tree` bei jedem Erzeugen und legte sie
|
||||
|
||||
Reference in New Issue
Block a user