Tree Gen 1.30.0: Bueschel-Defaults, Wachstums-Kopplung, Stufen-Budget
Blatt-Defaults auf die Bueschel-Atlas-Aera umgestellt. Eine Card ist ein ganzer
Zweigbueschel, kein einzelnes Blatt - die alten Werte streuten hunderte winziger
Cards, wo ein paar Dutzend grosse hingehoeren. Werte an einer S4-Eiche in UE
gemessen und abgenommen:
Groesse 0.22 -> 0.85
Dichte 500 -> 170
Max Radius 0.02 -> 0.04 <- der Volumen-Hebel
Kippung 0.5 -> 0.9
Max Radius ist der unscheinbare Held: bei 0.02 trugen nur die aeussersten
Zweigspitzen Laub, die Krone hatte nur Kontur und war innen nackt.
Bueschelgroesse haengt jetzt am Wachstum: make_object merkt growth_t am Objekt
(aus dem Namen zu lesen waere bruechig), der Blattwerk-Operator skaliert die
Cards damit. Gemessen ueber vier Stufen: Card-Kante 0.19/0.28/0.37/0.45.
Falle dabei: "Dichte" ist Punkte pro m2 Zweigflaeche, und ein Setzling hat davon
fast keine - bei Stufe 1 kamen exakt NULL Cards heraus, der Setzling stand kahl
da. Da die Bueschel um denselben Faktor kleiner sind, deckt jeder nur faktor^2
der Flaeche; die Dichte gegenlaeufig anzuheben haelt die Blattdeckung gleich.
Tri-Budget PRO STUFE (ASSETS.md Teil 6): S1 <= 800, S2 <= 1200, S3/S4 <= 4000.
Bewusst Stufen und keine Interpolation; die Schwellen greifen auch bei drei
Stufen richtig (t = 0 / 0.5 / 1.0). Gemessen 494 / 878 / 1032 / 1396 - alle im
Rahmen.
WICHTIGSTE FALLE, von der UE-Seite gemeldet und hier nachgestellt:
md[socket] = wert loest KEINE Neuauswertung des GN-Modifiers aus. Die
Blattebene blieb bei 118 Faces stehen, obwohl die Dichte von 90 auf 400
geschrieben war - auch view_layer.update() half nicht, erst ein
show_viewport-Toggle. Der Knopf-Weg funktionierte bisher nur ZUFAELLIG, weil
make_leaves jedes Mal auch die Objekt-Zeiger neu schreibt und das Aendern eines
ID-Zeigers die Depsgraph-Beziehungen umbaut. Wer das spaeter optimiert ("nur
geaenderte Werte schreiben"), haette den Fehler still zurueck.
_modifier_anstossen() macht es jetzt explizit - in make_leaves UND make_object.
Nebenbei: der Variantentest rundete Card-Flaechen auf 5 Stellen; seit die
Kippung bei 0.9 steht streuen sie in der sechsten und eine einzige Card-Sorte
zerfiel in vier Eimer.
Neu: tests/test_blatt_bueschel.py. 23 Tests bestehen.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -385,6 +385,51 @@ Zwei Fallen beim Bauen:
|
||||
- `join` loescht das zweite Objekt; jede gehaltene Referenz darauf ist danach
|
||||
tot. Die Aufraeumliste fuehrt deshalb **Namen** statt Objekte.
|
||||
|
||||
### Blatt-Defaults: Bueschel, nicht Blaettchen
|
||||
|
||||
Eine Card ist ein ganzer **Zweigbueschel**, kein einzelnes Blatt. Die alten Werte
|
||||
stammten aus der Blaettchen-Aera und streuten hunderte winziger Cards, wo ein
|
||||
paar Dutzend grosse hingehoeren. Die neuen Werte sind an einer S4-Eiche in UE
|
||||
gemessen und abgenommen:
|
||||
|
||||
| | vorher | jetzt | Wirkung |
|
||||
|---|---|---|---|
|
||||
| Groesse | 0.22 | **0.85** | Bueschel statt Bonsai |
|
||||
| Dichte | 500 | **170** | wenige grosse statt viele Fussel |
|
||||
| **Max Radius** | 0.02 | **0.04** | der Volumen-Hebel |
|
||||
| Kippung | 0.5 | **0.9** | Rotations-Chaos schliesst Sichtluecken |
|
||||
|
||||
`Max Radius` ist der unscheinbare Held: bei 0.02 trugen nur die aeussersten
|
||||
Zweigspitzen Laub, die Krone hatte nur Kontur und war innen nackt. Bei 0.04
|
||||
wachsen Bueschel auch am mittleren Geaest und die Krone bekommt Tiefe.
|
||||
|
||||
**Bueschelgroesse haengt am Wachstum.** Der Generator merkt sich `growth_t` am
|
||||
Objekt; der Blattwerk-Operator skaliert die Cards damit (`Setzlings-Anteil`,
|
||||
Standard 45 %). Gemessen ueber vier Stufen: Card-Kante 0.19 → 0.28 → 0.37 → 0.45.
|
||||
|
||||
> **Falle dabei:** „Dichte" ist Punkte pro m² Zweigflaeche, und ein Setzling hat
|
||||
> davon fast keine — bei Stufe 1 kamen exakt **null** Cards heraus, der Setzling
|
||||
> stand kahl da. Da die Bueschel um denselben Faktor kleiner sind, deckt jeder
|
||||
> nur faktor² der Flaeche; die Dichte entsprechend gegenlaeufig anzuheben haelt
|
||||
> die Blattdeckung ueber alle Stufen gleich.
|
||||
|
||||
**Tri-Budget pro Stufe** (ASSETS.md Teil 6) statt global: S1 ≤ 800, S2 ≤ 1200,
|
||||
S3/S4 ≤ 4000. Bewusst Stufen und keine Interpolation. Die Schwellen greifen auch
|
||||
bei drei Stufen richtig (t = 0 / 0.5 / 1.0). Die 2500 von frueher waren eine
|
||||
konservative Setzung — bei ISM-Instanzen mit LOD-Kette sind Roh-Dreiecke nicht
|
||||
der Engpass, sondern **Overdraw** der Cards (die GPU zahlt pro Bildschirmflaeche,
|
||||
nicht pro Dreieck) und die Schattenpaesse. Genau deshalb sind 170 grosse Bueschel
|
||||
guenstiger als 500 kleine, bei gleichem Tri-Zaehler.
|
||||
|
||||
> **Die wichtigste Code-Falle in diesem Addon.** `md[socket] = wert` loest
|
||||
> **keine** Neuauswertung des Geometry-Nodes-Modifiers aus. Nachgestellt: die
|
||||
> Blattebene blieb bei 118 Faces stehen, obwohl die Dichte von 90 auf 400
|
||||
> geschrieben war — auch `view_layer.update()` half nicht. Erst ein
|
||||
> `show_viewport`-Toggle brachte das Ergebnis. Der Knopf-Weg funktionierte
|
||||
> bisher nur ZUFAELLIG, weil `make_leaves` jedes Mal auch die Objekt-Zeiger neu
|
||||
> schreibt und das Aendern eines ID-Zeigers die Depsgraph-Beziehungen umbaut.
|
||||
> `_modifier_anstossen()` macht das jetzt explizit.
|
||||
|
||||
### LOD-Kette (Stand-Baum)
|
||||
|
||||
Haken `LOD-Kette erzeugen`: exportiert `<Name>_LODGroup.fbx` mit `_LOD0..3` unter
|
||||
@@ -699,6 +744,7 @@ gefiltert `.\run_tests.ps1 -Filter panels`.
|
||||
| Datei | prueft |
|
||||
|---|---|
|
||||
| `tests/test_baum_export.py` | Stand-Baum: ein Mesh, zwei Slots, Ursprung, **Kugel-Normalen im exportierten FBX** |
|
||||
| `tests/test_blatt_bueschel.py` | Bueschel-Defaults, Wachstums-Kopplung der Card-Groesse, Stufen-Budget 800/1200/4000 |
|
||||
| `tests/test_baum_lod.py` | LOD-Kette: 4 Stufen unter LodGroup, Cards werden nach oben duenner, **Kugel-Normalen auf jeder Stufe**, kein Hoehenversatz |
|
||||
| `tests/test_faell_teile.py` | Faell-Teile: **Blatt-Bilanz 170=170**, Pivot am Massenmittelpunkt, UCX je Teil, Gesamtdatei mit gemeinsamem Ursprung |
|
||||
| `tests/test_blatt_varianten.py` | Card-Sammlung: alle Varianten werden gezogen, seed-stabil, Einzelobjekt weiter moeglich |
|
||||
|
||||
Reference in New Issue
Block a user