Panels aufgeraeumt (alle vier Addons) + Test-Suite instandgesetzt
Panel-Umbau
-----------
Jedes Addon hatte seine Einstellungen als Kette dauerhaft offener Boxen - beim
Rock Generator 15 Stueck, man musste am ganzen Panel vorbeiscrollen, um an den
Erzeugen-Knopf zu kommen. Jetzt steht oben nur, was man bei jedem Asset anfasst
(Vorlage, Name, grosser Erzeugen-Knopf, Zufall), der Rest liegt in nummerierten,
eingeklappten Unter-Panels in der Reihenfolge des Arbeitsablaufs:
Rock Gen 9 Unter-Panels (Benennung ... Textur-Bake)
Tree Gen 4 (Wachstum, Blattwerk, Zusatz-Ebenen, Export)
Grass Gen 4 (Form, Haltung, Batch, Kanal-Belegung)
Asset Utils 5 (war schon so, dient als Vorlage)
Schalter, die ein ganzes Unter-Panel steuern (Vertex-Farben backen,
Wachstums-Stufen), sitzen jetzt als Haekchen im Panel-Kopf - Zustand sichtbar
ohne aufzuklappen.
Gemessen statt geglaubt: test_panels.py registriert alle vier Addons, laesst
jedes Panel zeichnen, prueft Tab-Zugehoerigkeit und Auf-/Zugeklappt-Absicht,
dass jeder angebotene Operator existiert - und vor allem, dass JEDE definierte
Property irgendwo erreichbar bleibt (Zweige wie base_shape='BOX' werden dabei
durchgeschaltet). Ergebnis: 0 von 122 Properties beim Umbau verloren.
Test-Suite
----------
Beim Gegenpruefen kam heraus, dass fuenf Tests still veraltet waren und eine
echte Regression nicht gemeldet haetten:
test_rock_gen suchte Objekte mit Praefix "Rock_" - die heissen seit dem
Benennungssystem "Fels_A_M_01". Fand 0 von 3.
test_base_shapes loeschte am Schleifenanfang ALLE Objekte, auch die eigenen
Kopien aus vorigen Durchlaeufen -> StructRNA removed.
test_ecogame_tree erwartete eine feste Namensliste ohne die spaeter
dazugekommenen _Leaf-Objekte.
test_tree_addon dito, ausserdem Zip-Version 1.22.0 fest verdrahtet.
test_leaves Zip-Version 1.23.0 fest verdrahtet.
Drei Muster vermieden statt nur die Symptome geflickt: neue Objekte ueber die
Differenz vorher/nachher finden statt ueber ein Namens-Praefix, Zips per glob
statt mit fester Version, Zusatz-Ebenen beim Zaehlen herausfiltern.
Neu: run_tests.ps1 faehrt die komplette Suite mit einem Befehl (-Filter fuer
einzelne). Genau das fehlte - deshalb war das Veralten nicht aufgefallen.
13 von 13 Tests bestehen.
Nebenbei
--------
build.ps1 ruft server-generate jetzt mit --html auf (browsbare index.html fuer
statisches Hosting). Nachgemessen und im README festgehalten: zwei Zips
derselben Extension-ID sind KEIN Versions-Archiv - server-generate warnt
("archive found with duplicates ... conflicting blender versions"), mehrere
Versionen einer ID gehen nur bei verschiedenen Blender-Bereichen.
Versionen: Rock 2.13.0, Tree 1.24.0, Grass 1.1.0, Asset Utils 1.1.0
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -14,6 +14,35 @@
|
||||
|
||||
---
|
||||
|
||||
## Panel-Aufbau (alle vier Addons)
|
||||
|
||||
Jedes Addon hat oben im N-Panel nur das, was man **bei jedem Asset** anfasst -
|
||||
Vorlage, Name, den grossen Erzeugen-Knopf, Zufall. Alles andere sitzt in
|
||||
nummerierten, eingeklappten Unter-Panels in der Reihenfolge des Arbeitsablaufs:
|
||||
|
||||
| Addon | Unter-Panels |
|
||||
|---|---|
|
||||
| Rock Gen | 1 Benennung & Groesse · 2 Form · 3 Detail & Cleanup · 4 Shading · 5 Vertex-Farben · 6 UV/LOD/Material · 7 Batch & Transform · 8 FBX-Export · 9 Textur-Bake |
|
||||
| Tree Gen | 1 Wachstum · 2 Blattwerk · 3 Zusatz-Ebenen · 4 Export |
|
||||
| Grass Gen | 1 Form · 2 Haltung · 3 Batch & Budget · 4 Kanal-Belegung |
|
||||
| Asset Utils | 1 Vorbereiten · 2 Vertex-Farben · 3 Benennung · 4 Pruefen · 5 Export |
|
||||
|
||||
Schalter, die ein ganzes Unter-Panel an- und ausknipsen (Vertex-Farben backen,
|
||||
Wachstums-Stufen), sitzen als Haekchen **im Panel-Kopf** - so sieht man den
|
||||
Zustand, ohne aufzuklappen.
|
||||
|
||||
In den Generatoren sind alle Unter-Panels zugeklappt, weil es Einstellungen sind,
|
||||
die man selten aendert. In Asset Utils ist jedes Unter-Panel ein Arbeitsschritt;
|
||||
1, 2 und 4 macht man bei jedem Asset und bleiben deshalb offen. `tests/test_panels.py`
|
||||
haelt diese Absicht fest, damit sie nicht versehentlich verrutscht.
|
||||
|
||||
**Falle beim Bauen:** Unter-Panels brauchen dieselbe `bl_category` wie das
|
||||
Eltern-Panel - sonst landen sie in einem anderen Tab und sind praktisch
|
||||
unsichtbar. Und das Eltern-Panel muss **vor** seinen Kindern registriert werden,
|
||||
sonst findet Blender die `bl_parent_id` nicht.
|
||||
|
||||
---
|
||||
|
||||
## EcoGame-Konventionen (beide Addons)
|
||||
|
||||
Abgestimmt auf `A:\eco\EcoGame` (UE 5.8). Kurzfassung:
|
||||
@@ -203,6 +232,19 @@ zeigen lassen.
|
||||
|
||||
## Installation als Extension (via URL, mit Auto-Update)
|
||||
|
||||
> **Ein Repo, vier Extensions.** `blender --command extension server-generate`
|
||||
> scannt `dist/` und listet jedes gefundene Zip - eine URL liefert in Blender
|
||||
> alle vier Addons. `build.ps1` ruft das mit `--html` auf, dann entsteht
|
||||
> zusaetzlich eine `index.html` zum Durchblaettern (auf einem statischen
|
||||
> Webserver; Gitea liefert rohes HTML als Text aus).
|
||||
>
|
||||
> **Kein Versions-Archiv:** zwei Zips derselben Extension-ID nebeneinander sind
|
||||
> nicht der Weg, eine alte Version zum Zurueckrollen bereitzuhalten -
|
||||
> server-generate warnt dann (`archive found with duplicates ... conflicting
|
||||
> blender versions`). Mehrere Versionen einer ID sind nur erlaubt, wenn sie
|
||||
> verschiedene Blender-Bereiche abdecken. Alte Version wieder her: per
|
||||
> `git checkout` des Zips.
|
||||
|
||||
Ab Blender 4.2 / 5.x als **Remote-Extension-Repository** – einmal die URL
|
||||
eintragen, danach gehen Updates per Klick.
|
||||
|
||||
@@ -291,14 +333,28 @@ Referenz:
|
||||
|
||||
## Tests
|
||||
|
||||
Alles auf einmal:
|
||||
|
||||
```bash
|
||||
blender --background --python tests/test_rock_gen.py
|
||||
pwsh -File run_tests.ps1
|
||||
```
|
||||
|
||||
Weitere Suiten (jeweils `blender --background --python <datei>`):
|
||||
Einzeln geht weiterhin `blender --background --python tests/<datei>.py`,
|
||||
gefiltert `.\run_tests.ps1 -Filter panels`.
|
||||
|
||||
> **Warum der Runner existiert.** Die Tests lagen einzeln herum und wurden nur
|
||||
> beim Bauen des jeweiligen Features gestartet. Beim Aufraeumen der Panels stellte
|
||||
> sich heraus, dass **fuenf davon still veraltet waren**: sie prueften gegen
|
||||
> Objekt-Namen aus der Zeit vor dem Benennungssystem (`Rock_` statt `Fels_A_M_01`),
|
||||
> gegen fest verdrahtete Zip-Versionen, oder zaehlten die spaeter dazugekommenen
|
||||
> `_Leaf`-Objekte mit. Sie haetten eine echte Regression nicht gemeldet. Die drei
|
||||
> Muster, die das ausgeloest haben, sind jetzt vermieden: Objekte ueber die
|
||||
> **Differenz** vorher/nachher finden statt ueber ein Namens-Praefix, Zips per
|
||||
> **glob** statt mit fester Version, und Zusatz-Ebenen beim Zaehlen herausfiltern.
|
||||
|
||||
| Datei | prueft |
|
||||
|---|---|
|
||||
| `tests/test_panels.py` | Alle vier Addons: registrieren, jedes Panel zeichnet, Unter-Panels im richtigen Tab, **jede Property irgendwo erreichbar** |
|
||||
| `tests/test_tree_addon.py` | Tree-Addon: Presets, Wachstums-Stufen, UVs, Modifier-Apply |
|
||||
| `tests/test_ecogame_rock.py` | Fels-Benennung, Bake liefert nur `_albedo`/`_normal`, AO im Albedo |
|
||||
| `tests/test_ecogame_tree.py` | Baum-Benennung `<Art>_<Variante>_S<Stufe>`, Ursprung, Lightmap-Default |
|
||||
|
||||
Reference in New Issue
Block a user