Rock Gen 2.17.0: Erz-Maske invertiert - Nuggets laufen auf A = 0 zu

Entscheidung der Spielseite: die A-Semantik bleibt eingefroren (1.0 = kein Erz),
der Master loest es ueber

    Erz = (1 - A) * ErzMenge

mit ErzMenge als MI-Regler, Standard 0. Normale Stein-MIs ignorieren den Kanal
damit vollstaendig, nur die Erz-MIs drehen ihn auf. Kein Re-Export des
25er-Sets noetig, keine Fallunterscheidung im Addon.

Dafuer musste die Maske umgedreht werden: bisher lag das Nugget-ZENTRUM auf
A = 1.0 - also auf demselben Wert wie "kein Erz". Unter der Master-Formel waere
das Erz damit unsichtbar gewesen und der ganze RESTLICHE Stein haette als Erz
gegolten. Jetzt laufen die Nuggets auf A = 0 zu.

Gemessen: ohne Erz A 1.00..1.00 und (1-A) max 0.000 - ein normaler Stein zeigt
im Master garantiert nichts. Mit Erz erreicht (1-A) 1.00, Abdeckung unveraendert
4/9/15 % bei Anteil 0.08/0.18/0.35. Die Erzstellen sitzen an denselben Punkten
wie vorher, nur andersherum kodiert.

Die Tests pruefen jetzt direkt gegen die Master-Formel statt gegen den Rohwert -
am Rohkanal ist die Richtung zu leicht zu verwechseln. Panel zeigt bei aktivem
Erz-Bake "A=Erz (0=Erz)" plus den Hinweis auf die Formel, damit das niemand
versehentlich zurueckdreht.

Nugget-Groesse bleibt wie entschieden ABSOLUT (Radius in Metern).

ACHTUNG: Erz-Assets, die mit 2.15/2.16 exportiert wurden, tragen die alte
Richtung und muessen neu exportiert werden. Steine ohne Erz-Bake sind nicht
betroffen - deren A war und ist durchgehend 1.0.

17 Tests bestehen.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
2026-08-03 08:38:46 +02:00
co-authored by Claude Opus 4.8
parent 2bf2f907bf
commit a2d46424ec
9 changed files with 86 additions and 36 deletions
+24 -3
View File
@@ -78,7 +78,7 @@ Abgestimmt auf `A:\eco\EcoGame` (UE 5.8). Kurzfassung:
| **R** | Cavity pur — 1 = offene Flaeche, 0 = tiefe Fuge (**ohne** Hoehen-Verlauf) |
| **G** | Moos-/Schmutzmaske — 1 = hier waechst was (Oberseite + Fugennaehe + Noise) |
| **B** | Hoehen-Verlauf — 0 = Unterseite, 1 = oben |
| **A** | Erz-Maske — 1 = Erz, 0 = kein Erz. Ohne Erz-Bake bleibt der Kanal auf 1.0 |
| **A** | Erz-Maske, **invertiert**: 1.0 = kein Erz, 0.0 = Erz. Ohne Erz-Bake bleibt der Kanal durchgehend auf 1.0 |
Getrennt statt eingebacken: der erdige **Boden-Saum** am Stein-Fuss und die
**Moosfarbe** werden pro Material-Instanz geregelt, nicht im Mesh festgelegt.
@@ -127,6 +127,27 @@ die Material-Instanz in UE. Knopf: **Erzfels-Set erzeugen (S + M)** erzeugt
Regler: `Erz-Anteil`, `Nugget-Groesse` (Radius in m), `Erz-Seed`.
**Richtung des A-Kanals — wichtig.** Die Nuggets laufen auf **A = 0** zu, nicht
auf 1. Der Master rechnet:
```
Erz = (1 - A) * ErzMenge
```
`ErzMenge` ist ein MI-Regler mit **Standard 0**. Damit ignorieren normale
Stein-MIs den A-Kanal vollstaendig, und nur die Erz-MIs drehen ihn auf. Ein
Stein ohne Erz-Bake behaelt seine durchgehende 1.0 und liefert `(1-A) = 0`
deshalb musste das bestehende 25er-Set **nicht** neu exportiert werden.
Andersherum gebacken waere das Erz unsichtbar und der ganze *restliche* Stein
wuerde als Erz gelesen. `tests/test_erz.py` prueft deshalb direkt gegen diese
Formel und nicht gegen den Rohwert.
Die **Nugget-Groesse bleibt absolut** (Radius in Metern): ein kleiner Brocken
bekommt weniger, dafuer proportional groessere Einschluesse. Das ist physikalisch
richtig, und das Spiel skaliert die Meshes per ScaleMin/Max ohnehin zufaellig -
eine groessenrelative Optik waere dadurch sowieso wieder zerlegt.
Nuggets statt Rauschen: gestreute Zentren mit weichem Abfall. Ein Noise-Feld
gaebe wolkige Schlieren ueber den ganzen Stein, Erz sitzt aber in abgegrenzten
Einschluessen. Die Zentren bevorzugen Fugen — Adern folgen Rissen, und das
@@ -155,8 +176,8 @@ Material-Slots** wie der Mutterstein (die UE-Skripte mappen darueber) und beim
Export eine eigene `UCX_`-Huelle.
**Punkt 4a:** mit `Ein Stueck mit Erz` heisst ein zufaelliges Teil
`<Name>_Piece_Erz` und traegt Erz-Adern im A-Kanal. Alle anderen Teile behalten
A = 1.0. Ob das Erz-Stueck gespawnt wird, entscheidet die Loot-Logik im Spiel.
`<Name>_Piece_Erz` und traegt Erz-Adern im A-Kanal (Richtung 0). Alle anderen
Teile behalten durchgehend A = 1.0 und sind damit fuer den Master erzfrei. Ob das Erz-Stueck gespawnt wird, entscheidet die Loot-Logik im Spiel.
**Wie die Bruchkanten zusammenpassen:** Voronoi ueber Halbraeume. Fuer jedes
andere Zentrum wird an der Mittelsenkrechten geschnitten und die abgewandte