Commit Graph
38 Commits
Author SHA1 Message Date
D4rkst3randClaude Opus 4.8 ef57050739 Neu: Stylized Asset Utils 1.0.0 (viertes Addon)
Fuer handgebaute Assets, die nicht durch einen Generator laufen (Pilze,
Baumstumpf, Erzfels, Props). Panel in fuenf einklappbaren Unter-Panels statt
einer langen Liste:

1 Vorbereiten  - Rotation/Scale anwenden, Ursprung unten-mittig, Normalen
2 Vertex-Farben - R=Cavity / G=Teil-oder-Moos-Maske / B=Hoehe / A=1
3 Benennung    - <Basis>_<NN>, Mesh-Daten ziehen mit
4 Pruefen      - Asset-Check auf alles, was in UE Aerger macht
5 Export       - FBX je Mesh mit colors_type='SRGB'

Zwei Bugs beim Bauen gefunden und gefixt:
- v.link_faces gibt es nur in bmesh, nicht auf Mesh.vertices -> lose Vertices
  ueber die tatsaechlich benutzten Indizes zaehlen.
- bpy.ops.paint.vertex_color_set braucht den Vertex-Paint-Modus und scheitert im
  Object-Mode mit "poll() failed". Zusammen mit vertex_color_dirt im selben try
  wurde dadurch der GANZE Bake stillschweigend uebersprungen (R/G/B blieben 1.0).
  Initialisierung laeuft jetzt direkt ueber Python.

Verifiziert am nachgebauten Pilz: Check meldet vorher Scale/Rotation/Ursprung,
nach "Vorbereiten" Scale 1/1/1, Rot 0/0/0, min_z 0.0000 und "ok". Teil-Maske
G=1 im Hut, 0 im Stiel. Nach FBX-Roundtrip G-Werte [0.0, 1.0] erhalten.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-31 11:51:26 +02:00
D4rkst3randClaude Opus 4.8 512d61e370 Rock Generator 2.12.0: Vertex-Cavity auf beliebige Meshes + Teil-Maske
Der User baut Pilze von Hand (Hut und Stiel als getrennte Objekte, mit Strg+J
verbunden) und fragte, was er wegen Vertex-Farben beachten muss.

Zwei Ergaenzungen:

1) Button "Vertex-Cavity auf Auswahl": backt R=Cavity / G / B=Hoehe auf JEDES
   markierte Mesh - nicht mehr nur auf generierte Steine. Damit lassen sich
   handgebaute Assets (Pilze, Baumstumpf, Erzfels) auf dasselbe Layout bringen.

2) Option "G = Teil-Maske (Shells)": statt der Moos-Maske werden getrennte
   Mesh-Teile markiert. Der oberste/breiteste Teil bekommt G=1, der Rest 0.
   Bei Strg+J-verbundenen Assets ist die Trennung dadurch EXAKT statt ueber
   Normalen geschaetzt - beim Pilz also Hut vs Stiel. Ein Material toent beide
   unterschiedlich, ein zweiter Material-Slot entfaellt.
   Einteilige Meshes bleiben bewusst unmarkiert (G=0), damit die Maske nichts
   Falsches behauptet.

Am nachgebauten Pilz geprueft: 2 Shells erkannt, G im obersten Teil ausschliess-
lich 1.0, im Rest ausschliesslich 0.0, Maske binaer, Einzelteil-Mesh -> nur 0.0.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-31 11:43:30 +02:00
D4rkst3randClaude Opus 4.8 2882c099b4 Rock Generator 2.11.0: Quader-Proportionen auf gleiches Volumen normiert
Beim Export von Form C (flache Platte) fiel auf: Fels_C_S war 1.45 m, waehrend
Fels_A_S nur 0.85 m misst - dieselbe Klasse, aber deutlich groesser, nur weil
eine Achse gestreckt ist. Damit waere die Groessen-Klasse formabhaengig gewesen.

Die Proportionen werden jetzt auf geometrisches Mittel 1.0 normiert. "M" bedeutet
bei jeder Form dasselbe Volumen; eine Platte ist dann flacher UND breiter, aber
nicht schwerer. Dass ihre laengste Kante groesser ausfaellt, ist geometrisch
zwangslaeufig und Absicht.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-31 11:35:57 +02:00
D4rkst3randClaude Opus 4.8 c7154ca690 Neu: Stylized Grass Generator 1.0.0 (drittes Addon im Repo)
Gras-, Blumen- und Farn-Bueschel. Kern ist die WIND-UV nach Vorgabe des Users:
UV0.V = 0 an der Wurzel, 1 an der Spitze - genau die Maske, die UEs
"SimpleGrassWind" als WindWeight braucht.

Am Zielmaterial geprueft (M_Grass.uasset): es nutzt SimpleGrassWind +
WorldPositionOffset + TextureCoordinate, aber KEINE VertexColor. Die Windmaske
kommt deshalb primaer ueber die UV - die Assets laufen damit ohne
Materialaenderung.

Vertex-Farben zusaetzlich, nicht als einzige Quelle:
  R = Kopie der Windmaske (Fallback)
  G = Variation je HALM - Ebene unter dem Biom-Tint, den die Engine bereits ueber
      PerInstanceCustomData 0/1 pro Instanz setzt; im Material multiplizieren
  B = AO (unten dunkel)

Presets gras / gras_hoch / steppengras / farn / blume, Zufalls-Button,
Tri-Budget-Warnung (400 laut ASSETS.md).

Gemessen: UV.V Wurzel 0.000 -> Spitze 1.000, 112 Tris bei 14 Halmen, G hat
exakt 14 verschiedene Werte bei 14 Halmen (also wirklich pro Halm, nicht pro
Vertex), min_z = 0.0000, UV und VCol ueberleben den FBX-Roundtrip.

build.ps1 baut jetzt drei Extensions - dieselbe URL liefert alle.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-31 10:46:01 +02:00
D4rkst3randClaude Opus 4.8 b16e5ab75a Rock Generator 2.10.0: Quader als Grundform (Platten und Riegel)
Auf Wunsch des Users neben Wuerfel und Ico-Sphere eine Quader-Grundform mit
frei einstellbaren Proportionen (X/Y/Z) plus Streuung je Stein. Damit entstehen
flache Platten und langgestreckte Riegel - passt besonders zum Plattenlook der
Genshin-Referenz, wo Felsen aus flachen Schichten bestehen.

Wichtiges Detail: die Proportionen werden auf die MESH-DATEN angewendet
(transform_apply), nicht auf das Objekt. Der Displace arbeitet mit globalen
Texturkoordinaten - eine Objekt-Skalierung wuerde das Rauschen mitverzerren
statt die Form zu aendern.

Gemessen bei Proportion (2.0, 1.5, 0.35): 3.43 / 2.56 / 0.79 m (Z = 23 % von X),
bei (2.2, 0.8, 0.9): 3.81 / 1.40 / 1.60 m. Der Zufalls-Button kennt die neue
Form ebenfalls. Neuer Test tests/test_base_shapes.py.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-31 10:41:16 +02:00
D4rkst3randClaude Opus 4.8 9d1660560c Rock Generator 2.9.0: Vertex-Farb-Layout v2 (kanal-getrennt)
Nach Wunschliste des Users. Attribut "Cavity" traegt jetzt drei UNABHAENGIGE
Masken statt einer eingebackenen Mischung:

  R = Cavity pur      1 = offene Flaeche, 0 = tiefe Fuge - OHNE Hoehen-Verlauf
  G = Moos/Schmutz    aus Oberseiten-Anteil + Fugennaehe + Noise, mit Reglern
                      fuer Menge, Aufbruch und Seed
  B = Hoehen-Verlauf  0 = Unterseite, 1 = oben, separat
  A = 1 (Reserve)

Der Punkt: Boden-Saum und Moosfarbe entscheidet jetzt das MATERIAL pro Instanz,
nicht mehr das Mesh. In v1 steckte der Verlauf fest in R und liess sich nicht
mehr trennen.

Gemessen: R ohne Hoehenabhaengigkeit (unten 0.62 / oben 0.59 - vorher war das
der eingebackene Verlauf), B steigt 0.08 -> 0.92, G oben 0.57 vs unten 0.20,
A konstant 1.00. Moos-Seed aendert die Verteilung. Alle drei Kanaele ueberleben
den FBX-Roundtrip.

tests/test_vertex_cavity.py prueft jeden Kanal einzeln inkl. Roundtrip.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-31 10:08:38 +02:00
D4rkst3randClaude Opus 4.8 4c8a268510 Rock Generator 2.8.1: colors_type beim FBX-Export explizit setzen
Der Export verliess sich auf den Default. Damit die Vertex-Cavity zuverlaessig in
der FBX landet, jetzt colors_type='SRGB' explizit. Verifiziert ueber einen
Roundtrip: alle 8 exportierten Felsen tragen das Attribut "Cavity" nach dem
Re-Import (Bereich 0.23..1.00).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-31 09:20:15 +02:00
D4rkst3randClaude Opus 4.8 de2acdd381 Rock Generator 2.8.0: Cavity in Vertex-Farben (texturfreier Weg)
Idee kam vom User: die Steine ueber "smart materials" in UE loesen statt ueber
gebackene Texturen. Prozedurales Noise/Voronoi im Shader waere zu teuer (laeuft
pro Pixel), aber der Kern der Idee traegt - deshalb dieser Weg:

Neue Option "Cavity in Vertex-Farben": schreibt Cavity/AO plus optionalen
Hoehen-Verlauf in das Farb-Attribut "Cavity" (vertex_color_dirt + eigene
Nachbearbeitung fuer Staerke und Verlauf). Das Material braucht damit KEINE
Textur:  Base Color = Farbton x VertexColor, dazu Kantenlicht und Schattentint.

Gegenueber Triplanar sitzen die dunklen Fugen dadurch auf den ECHTEN Kanten des
Meshes statt darueberzuschweben - genau das passiert in der Genshin-Referenz.

Verifiziert: Attribut wird angelegt, Wertebereich 0.250..0.947 (echter Kontrast),
und es ueberlebt den FBX-Roundtrip UNVERAENDERT (gleicher Bereich nach Import).
Regler: Cavity-Staerke, Hoehen-Verlauf, Weichzeichnen.
Neuer Test tests/test_vertex_cavity.py.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-31 09:10:54 +02:00
D4rkst3randClaude Opus 4.8 1df70c9e50 Rock Generator 2.7.0: Plattenstil nach Genshin-Referenz
Der User hat Genshin-Screenshots als Stilvorlage geschickt. Auswertung: die
Felsen dort bestehen aus WENIGEN GROSSEN, fast leeren Platten mit SCHMALEN
DUNKLEN FUGEN. Das Detail steckt in der Fuge, nicht in der Flaeche.

Meine Textur machte das Gegenteil - viele kleine Zellen mit breitem Verlauf ueber
die ganze Oberflaeche. Deshalb half weder TexScale noch die Zellgroesse: beide
haben nur am Symptom gedreht, waehrend das Muster grundsaetzlich zu dicht war.

Neue Regler:
- "Fugenbreite" (Default 0.05): Breite des Uebergangs Fuge -> Flaeche. Klein =
  harte Fuge und flache Platte. War vorher fest auf 0.32 = weicher Verlauf ueber
  die ganze Zelle ("Golfball").
- "Platten flach" (Default 1.0): 1 = Flaeche nahezu einfarbig, Kontrast wandert
  komplett in die Fuge.
- "Zellgroesse" heisst jetzt "Plattengroesse" (Default 0.7 statt 2.5) - kleiner
  = GROESSERE Platten. Der alte Name war irrefuehrend.
Grundton auf helles warmes Grau, AO-Staerke 1.0 -> 0.55 (weniger Unruhe).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-31 08:46:01 +02:00
D4rkst3randClaude Opus 4.8 d58bfe05e8 Rock Generator 2.6.0: Groessen-Klassen wirken jetzt + Randomize-Bug gefixt
1) KLASSEN-GROESSE (vom User gemeldet): S und M kamen gleich gross raus.
   Ursache war eine Luecke im Design, nicht in der Bedienung: "keep_size"
   normiert die Zufalls-Streuung auf konstantes Volumen - damit wurde alles,
   was ueber scale_min/max eingestellt war, wieder herausgerechnet. Fuer die
   Groesse der KLASSE gab es schlicht keinen Regler.
   Neu: CLASS_SIZES (S=0.45, M=1.0, L=1.9, XL=3.2) plus "Groesse aus Klasse"
   und eine freie "Basis-Groesse". Die Klassengroesse ist bewusst gesetzt und
   von der Streuung getrennt; sie greift auch bei abgeschalteter Randomisierung.
   Gemessen: S 0.85 m | M 1.9 m | L 3.5 m | XL 6.0 m, Volumen-Streuung
   INNERHALB jeder Klasse bleibt bei 1.11x (nur Form).

2) BUG im Zufalls-Button (kam mit 2.5.0): jitter() schrieb einen float in die
   int-Property subsurf_levels -> TypeError, der Operator brach komplett ab.
   jitter() rundet jetzt fuer Int-Properties. Von tests/test_randomize.py
   gefangen.

Neuer Test tests/test_rock_classes.py deckt die Klassengroessen ab.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-31 02:42:17 +02:00
D4rkst3randClaude Opus 4.8 833e929f82 Tree Generator v1.23.0: Blattwerk auf die Zweige streuen
Blatt-Card waehlen -> wird auf die duennen Zweige gestreut (Filter ueber das
Radius-Attribut des Meshes) und als <Name>_Leaf mit identischem Ursprung abgelegt.
Regler fuer Dichte, Groesse, Streuung, Kippung, Zweig-Schwelle. Der Button meldet
Stamm + Blatt = Summe und warnt bei Ueberschreitung des Tri-Budgets.

Gemessen: Eiche 1428 + Blattwerk 1032 = 2460 von 2500 Tris bei Default-Dichte 150.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-30 11:42:52 +02:00
D4rkst3randClaude Opus 4.8 1112797138 Tree Generator v1.22.0: Phototropismus (Attraction Up)
Aeste kruemmen sich zur Spitze hin zur Senkrechten - als echte Rotation um den
Astansatz, nicht als Z-Versatz. Die Astlaenge bleibt dabei erhalten (gemessen:
+0.08 m Hoehe statt +0.93 m beim alten Droop-Hack). Pro Preset abgestimmt.

Idee aus UE 5.8 Procedural Vegetation / Weber-Penn.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-30 09:52:45 +02:00
D4rkst3randClaude Opus 4.8 2eb0131a0e 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>
2026-07-30 07:58:28 +02:00
D4rkst3randClaude Opus 4.8 5db92a3c74 Tree Generator v1.20.0: Palme neu abgestimmt
Palmenstamm mit nahezu konstantem Durchmesser (Taper 0.22), glatt geschwollener
Fuss ohne Wurzelbretter, 15 kraeftige Wedelstiele im Bogen statt duenner
haengender Draehte. 1784 von 2500 Tris.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-30 07:47:11 +02:00
D4rkst3randClaude Opus 4.8 1bb547c70c Zufalls-Funktion in beiden Addons + Zusatz-Ebenen + Form-statt-Groesse
Rock Generator 2.5.0:
- "Zufaellig"-Button: wuerfelt Seed und Form-Parameter, "Streuung" steuert die
  Abweichung von den aktuellen Werten (0 = nur neuer Seed). Optional werden auch
  Basis-Form und Noise-Typ gewuerfelt. Werte werden auf ihre Grenzen geklemmt.
- Skalierung streut jetzt die FORM, nicht die Groesse: nicht-uniform ist Default,
  und "Gesamtgroesse konstant halten" normiert das geometrische Mittel auf 1.
  Gemessen ueber 6 Rocks: Volumen-Spanne 1.92x -> 1.11x. Wichtig, weil EcoGame
  die Groesse zusaetzlich ueber ScaleMin/Max streut.

Tree Generator 1.19.0:
- "Zufaellig"-Button: neuer Seed plus Streuung auf Hoehe, Radius, Biegung,
  Ast-Anzahl/-Laenge, Kronenform und Wurzelanlauf. Preset-Charakter bleibt, weil
  relativ zu den aktuellen Werten gestreut wird (gemessen: Hoehe 6.65 -> 8.34 m).
- "_Leaf"- und "_Frucht"-Ebenen: leere Objekte mit IDENTISCHEM Ursprung neben dem
  Baum (gemessen: Abstand 0.000000), damit die Ebenen in UE deckungsgleich sitzen.

Vier Test-Suiten liegen jetzt unter tests/ statt nur im Scratchpad.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-29 13:30:11 +02:00
D4rkst3randClaude Opus 4.8 f5bbd1bc35 Beide Addons auf die EcoGame-Konventionen abgestimmt
Rock Generator 2.4.0:
- Benennung Fels_<Form>_<Klasse> statt Rock_000 (Praefix/Form/Klasse im Panel,
  Klasse S/M/L/XL, optionale Durchnummerierung bei Batches)
- Bake liefert jetzt <name>_albedo und <name>_normal. AO/Cavity wird per Option
  MULTIPLIKATIV ins Albedo gebacken (Staerke regelbar) - separate Roughness- und
  AO-Paesse sind Default aus, weil Roughness in EcoGame eine Zahl im Master-
  Material ist. Gemessen: Albedo-Mittelwert 0.549 -> 0.433 mit AO, Kontrast rauf.
- UV1 Lightmap Default AUS (EcoGame beleuchtet dynamisch)

Tree Generator 1.18.0:
- Benennung <Art>_<Variante>_S<Stufe>, z.B. Birke_01_S1..S4 (statt stage0..3);
  Art-Feld und Varianten-Nummer im Panel, Art leer = Preset-Name
- UV1 Lightmap Default AUS

README: Konventionen dokumentiert.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-29 12:25:09 +02:00
D4rkst3randClaude Opus 4.8 ca13e9f573 Tree Generator v1.17.0: Stammfuss am Referenzbaum ausgemessen
Basisring trifft den TreeIt-Baum jetzt fast exakt (r 0.178 vs 0.179, Unrundheit
1.61 vs 1.60). Lappen zentriert moduliert, damit die Lappentiefe nicht mehr den
mittleren Radius mit anhebt.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-29 12:03:27 +02:00
D4rkst3randClaude Opus 4.8 4c4ea5b9cf Tree Generator v1.16.0: Zweig-Dicke korrigiert, Eiche/Birke entwirrt
Zweige waren 70 % so dick wie ihre Aeste (jetzt ~35 %). Eiche und Birke hatten
durch verkettete Replaces vertauschte Ast-Dicken.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-29 11:56:37 +02:00
D4rkst3randClaude Opus 4.8 44d0b824c4 Tree Generator v1.15.0: Ast-Proportionen am TreeIt-Referenzbaum ausgerichtet
Aeste waren mit 32 % des Stammradius doppelt zu dick (Referenz: 11-16 %). Das
war die Ursache der groben Astansaetze - nicht fehlende Verschweissung.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-29 11:53:02 +02:00
D4rkst3randClaude Opus 4.8 c9ac31d864 Tree Generator v1.14.0: weiche Astansaetze, schlankerer Stamm
Collar-Abfall von Exponent 6 auf 2.5 (bei ~7 Segmenten pro Ast war 6 nur einen
Punkt breit = Widerhaken statt Uebergang). Trunk Radius 0.13 -> 0.085.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-29 11:49:36 +02:00
D4rkst3randClaude Opus 4.8 10b27a25a9 Tree Generator v1.13.0: Kaktus als echter Saguaro + Trunk Tip
Beide Arme laufen flach raus, knicken und steigen parallel zum Stamm, ohne ihn
zu ueberragen (Droop und Hoehe aufeinander abgestimmt). Neu 'Trunk Tip': steuert,
ob der Stamm duenn auslaeuft oder mit stumpfer Kuppe endet.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-29 11:44:16 +02:00
D4rkst3randClaude Opus 4.8 794ed4ba38 Tree Generator v1.12.0: Gabelung statt Nadeln, Droop-Kurve regelbar
- 'Sub Start'/'Sub End' + hoeheres 'Sub Up': Zweige folgen ihrem Elternast und
  bilden Y-Gabelungen (Weber-Penn "split") statt seitlich abzustehen
- 'Droop Curve': 2 = weicher Bogen (Palme), 4+ = scharfer Ellbogen (Kaktus)

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-29 11:37:52 +02:00
D4rkst3randClaude Opus 4.8 d9c642fcd2 Tree Generator v1.10.0: Kronenform + 5 neue Baum-Varianten
Crown Taper / Crown Bulge steuern die botanische Huellkurve (kegelfoermig bis
rund) - damit sind Tanne, Eiche, Birke, Weide und toter Baum als Presets
moeglich. Alle neun Presets liegen im Tri-Budget des Projekts.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-29 11:27:50 +02:00
D4rkst3randClaude Opus 4.8 e3ad1727b6 Tree Generator v1.9.0: Wurzelbretter am Stammfuss
Gelappter Wurzelanlauf statt glattem Trichter (Root Lobes / Root Lobe Depth /
Root Height). Als Mesh-Offset umgesetzt -> 0 zusaetzliche Tris. Stamm-Sides auf
12 fuer saubere Lappen (+104 Tris, gemessen).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-29 11:23:32 +02:00
D4rkst3randClaude Opus 4.8 55beb2bb2f Tree Generator v1.8.0: Profilaufloesung je Ast-Ebene (Branch Sides / Sub Sides)
Stamm rund (8 Seiten), Aeste 4, Zweige 3 - wie im TreeIt-Referenzbaum. Runderer
Stamm bei gleichzeitig ~25% weniger Tris (baum 1368 -> 1032).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-29 11:17:36 +02:00
D4rkst3randClaude Opus 4.8 57b4c12725 Tree Generator v1.7.0: Tri-Budget, Detail-Regler, Wurzelanlauf
- 'Detail' skaliert alle Resample-Counts -> zentrale Budget-Stellschraube
- Defaults treffen jetzt das Projekt-Budget (baum 1368, busch 532 Tris)
- 'Root Flare': Wurzelanlauf am Stammfuss, kostet keine Tris

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-29 11:13:43 +02:00
D4rkst3randClaude Opus 4.8 91e30ca05a Tree Generator v1.6.0: Ansatz-Verdickung (Collar), Stammspitze, optionaler Merge
- 'Branch Collar': Aeste werden an der Basis leicht breiter -> gewachsener
  Uebergang zum Stamm, ohne einen einzigen zusaetzlichen Vert
- Stammspitze laeuft duenn aus statt mit flachem Deckel zu enden
- 'Merge'/'Merge Voxel' (Voxel-Remesh) optional, Default AUS: verschmilzt Aeste
  organisch, kostet aber die UVs und bis zu 14x Verts (gemessen), duenne Zweige
  zerfallen -> fuer Game-Assets nicht empfohlen

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-29 11:07:16 +02:00
D4rkst3randClaude Opus 4.8 514684f576 Tree Generator v1.5.0: Ast-Dicke folgt der Elterndicke
Aeste/Zweige werden per Instanz-Scale an den Radius ihres Elternpunktes gekoppelt
('Input Radius' auf der Punkt-Domain von Instance on Points). Oben am duennen
Stamm sind die Aeste dadurch automatisch kuerzer und duenner statt gleich dick.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-29 10:57:26 +02:00
D4rkst3randClaude Opus 4.8 e210789eaa Tree Generator v1.4.0: Zweige gebogen wie der Stamm
Sub-Aeste hatten gar keine Biegung -> gerade Staebe. Jetzt nutzen Stamm, Aeste
und Zweige dieselbe Noise-Kruemmung (nach Realize ueber die Weltposition, damit
jeder Zweig anders faellt). Zweige ausserdem duenn + fast gleichmaessig statt
dick-kegelig (das war die eigentliche Dorn-Ursache).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-29 10:52:15 +02:00
D4rkst3randClaude Opus 4.8 89aa74c056 Tree Generator v1.3.0: Sub-Aeste ohne Nadelspitzen
Mindestdicke (Tip Blunt) wirkt jetzt auf Verjuengung*Kuppel statt nur auf die
Kuppel. Duennster Querschnitt 0.8 mm -> 7.5 mm (gemessen).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-29 10:46:30 +02:00
D4rkst3randClaude Opus 4.8 bb576292fa Tree Generator v1.2.0: world-space UVs, UV1-Lightmap, keine Nadelspitzen
- UVMap aus Geometry Nodes (V = Bogenlaenge, U = Umfang*Radius) -> Rinde ueberall
  gleich dicht, Regler 'UV Scale'
- 'UV1 Lightmap-UV' beim Modifier-Apply (Parity zum Rock-Generator; aktiver Kanal
  wird gesetzt, damit lightmap_pack UV0 nicht ueberschreibt)
- Sub-Aeste enden nicht mehr als Nadeln
- Test prueft jetzt beide UV-Kanaele + world-space-Skalierung

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-29 10:41:08 +02:00
D4rkst3randClaude Opus 4.8 f9e3fe4223 Tree Generator v1.1.0: Aeste folgen der Elternkurve
Kern aus EcoGame tools/blender_tree_gen.py regeneriert. Ast-Richtung jetzt ueber
Tangent/Normal von 'Curve to Points' (Goldener Winkel) statt Weltkoordinaten ->
Sub-Aeste wachsen entlang ihres Elternastes statt quer dazu. 'Tip Blunt' neu.

Headless getestet: alle 4 Presets, Stufen aufsteigend, Modifier-Apply ok.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-29 10:33:09 +02:00
D4rkst3randClaude Opus 4.8 9240cc6d80 Rock-Generator auf v2.3.0 (Zell-Look-Bake) + Listing neu gebaut
Die Zell-Look-Aenderung am Textur-Bake (Voronoi statt fBm, Grundfarbe/Zellgroesse
regelbar) war im vorigen Commit ohne Versions-Bump mitgelaufen -> Blender haette
kein Update angeboten. Version nachgezogen, Listing enthaelt jetzt
Rock 2.3.0 + Tree 1.0.0.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-29 10:25:11 +02:00
D4rkst3randClaude Opus 4.8 7406d30d4a Tree Generator als zweite Extension im selben Repo
Ein Extension-Repo kann mehrere Addons ausliefern (server-generate listet jedes
Zip in dist/) -> die bereits eingetragene Blender-URL liefert jetzt Rock UND Tree,
ein 'Check for Updates' aktualisiert beide.

- stylized_tree_generator.py: Panel 'Tree Gen', Presets baum/palme/busch/kaktus,
  Wachstums-Stufen (gleicher Seed = dieselbe Baum-Identitaet), Modifier-Apply
- Node-Kern 1:1 aus EcoGame tools/blender_tree_gen.py generiert (keine Abweichung)
- build.ps1 baut jetzt beide Extensions
- Headless getestet: alle 4 Presets, Stufen aufsteigend (504/744/1236/1872), Apply ok

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-29 10:23:54 +02:00
D4rkst3randClaude Opus 4.8 a8ca7a6453 v2.2.0: Textur-Bake-Button (tileable, fuer Triplanar in UE) + UE-Material-Anleitung
- Bake BaseColor/Normal/Roughness/AO als PNG
- Nahtlos tileable via 4D-Torus-Projektion der UV (cos/sin u,v)
- Cycles-Bake mit Zustands-Restore, temporaere Bake-Plane + Cleanup
- docs/UE_Material_Triplanar.md: WorldAlignedTexture/Normal-Verdrahtung
- _deselect_all gegen transiente None-Refs nach Objekt-Removal gehaertet
- Live gegen Blender 5.1.2 getestet (4 Maps, Normal jetzt mit Struktur), Headless gruen

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-29 07:11:35 +02:00
D4rkst3randClaude Opus 4.8 46fc05eec4 v2.1.0: FBX-Export, Shading-Toggle, Pro-Rock-Varianz, Boden abflachen + Origin
- FBX-Export-Button (UE-ready): je Rock/LOD-Gruppe eine FBX, use_custom_props fuer LodGroup, Triangulate, EDGE/FACE-Smoothing je nach Shading
- Shading-Modus: Faceted / Smooth / Auto-Smooth-nach-Winkel
- Pro-Rock-Varianz: Noise/Displace Min-Max + nicht-uniforme Skalierung
- Boden abflachen (Bisect) + Origin unten-mittig
- Live gegen Blender 5.1.2 getestet, Headless-Test gruen

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-29 07:01:10 +02:00
D4rkst3randClaude Opus 4.8 32317c446c Extension-Packaging: blender_manifest.toml + Build-Skript + dist/ (Zip + index.json)
Installierbar als Remote-Extension via Gitea-Raw-URL, Updates per Klick.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-29 06:45:35 +02:00
D4rkst3randClaude Opus 4.8 c5bb3e2612 Stylized Rock Generator v2.0.0: Haertung, Presets, LODs, Material, Tests
- Fix: smart_project/dissolve_limited angle_limit jetzt in Radiant (Blender 4.x/5.x)
- Fix: Lightmap-UV-Kanal vor lightmap_pack aktiv setzen (UV0 nicht mehr ueberschrieben)
- Fehlerbehandlung pro bpy.ops-Call; einzelner Rock-Fehler bricht Batch nicht ab
- Modaler Batch-Modus mit Progress-Bar (ab modal_threshold)
- Bevel + Weighted Normal Toggle
- LOD-Set als fbx_type=LodGroup-Gruppe fuer Unreal
- Preset-System (JSON) + eingebaute Presets
- Platzhalter-Material-Zuweisung
- Headless-Testskript (tests/test_rock_gen.py)

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-29 06:24:06 +02:00