Commit Graph
2 Commits
Author SHA1 Message Date
D4rkst3randClaude Opus 4.8 d170e4067f Tree Gen 1.32.0: Deckung pro Stufe, mitwachsender Radius-Filter, LOD als Teilset
Drei Befunde aus der Turnhalle abgearbeitet.

1) Deckung PRO STUFE statt globaler Formel
   Die alte Rechnung (Dichte durch faktor^2) hielt den Setzling vor der
   Kahlheit, gab ihm aber die Deckung eines Altbaums. Jetzt Tabelle
   LEAF_STUFEN. S4 traegt die volle Dichte 170, S2 liegt 15 % darunter, S1
   deutlich. Der Dichte-Anteil bei S1/S2 sieht hoch aus - "Dichte" ist Punkte
   pro m2 ZWEIGFLAECHE, und die waechst ueber die Stufen dramatisch. Was zaehlt
   ist die Anzahl: 17 / 43 / 67 / 130 Cards, Kante 0.19 / 0.29 / 0.37 / 0.45.
   Budget S3/S4 auf 4300 (die Spielseite hebt ASSETS.md nach dem 170er-Export
   entsprechend an).

2) Radius-Filter skaliert mit dem Wachstum (der S3-Befund)
   Der Filter trennt duenne Zweige von dickem Geaest - aber mit starren 0.04 m
   greift er bei jungen Baeumen nicht: gemessen sassen bei S2 81 % der Cards am
   Stamm, bei S3 58 %. Jetzt 48 bzw. 52 %.

   Dabei eine eigene Fehldeutung korrigiert: bei S1 bleiben ~88 % am Stamm, und
   das ist KEIN Defekt. Nachgemessen ist die zulaessige Flaeche dort fuer jeden
   Schwellwert identisch (0.013 m2) - der Saemling hat kein dickes Geaest, an
   dem sich etwas trennen liesse. Blaetter am Stiel sind bei einem Saemling der
   Normalfall. Ein erster Sweep hatte mich in die Irre gefuehrt, weil ich
   growth_t=0 auf einen AUSGEWACHSENEN Baum gesetzt hatte - der hat die volle
   Zweigflaeche und verhaelt sich voellig anders als ein echter Setzling.

3) LOD-Reduktion als TEILSET der LOD0-Cards
   Bisher wurde je Stufe neu gestreut - die Cards sassen an anderen Stellen und
   die Silhouette sprang beim LOD-Wechsel um. Jetzt wird ausgeduennt: jede
   verbleibende Card liegt genau dort, wo sie in LOD0 schon war, die
   Ueberlebenden werden groesser. Gearbeitet wird auf zusammenhaengenden
   INSELN, nicht auf Faces - eine Card muss ganz bleiben oder ganz verschwinden.
   Auswahl ist seed-stabil.

   Gemessen am reimportierten FBX: 260 / 156 / 78 / 32 Blatt-Faces, und 100 %
   der Cards auf LOD1-3 sitzen auf einer LOD0-Position. Der Versatz zu LOD0 ist
   dabei kleiner geworden als beim Neustreuen.

23 Tests bestehen.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-06 09:44:52 +02:00
D4rkst3randClaude Opus 4.8 b1fdad8106 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>
2026-08-06 08:23:27 +02:00