Rock Gen 2.16.0: Bruchstuecke (Punkt 4) + Erz-Stueck (Punkt 4a)
Kein Laufzeit-Fracturing im Spiel - die Teile werden beim Anschlagen als Physik-Actors gespawnt, entstehen hier also als vollwertige Assets. Knopf "In Bruchstuecke zerlegen" arbeitet auf der Auswahl: <Name>_Piece_01..NN, 2-4 Teile, Bruch-Seed, optional Mutterstein ausblenden. Jedes Teil bekommt Vertex-Layout v2, Ursprung unten-mittig, die gleichen Material-Slots wie der Mutterstein und beim Export eine eigene UCX-Huelle. Punkt 4a: "Ein Stueck mit Erz" benennt ein zufaelliges Teil <Name>_Piece_Erz und schreibt Erz-Adern in dessen A-Kanal. Alle anderen Teile behalten A = 1.0. Ob es gespawnt wird, entscheidet die Loot-Logik im Spiel. Zusammenpassende Bruchkanten ohne Abstimmung: Voronoi ueber Halbraeume. Fuer jedes andere Zentrum wird an der Mittelsenkrechten geschnitten und die abgewandte Seite verworfen - benachbarte Zellen schneiden dadurch an GENAU derselben Ebene. Bewusst ohne das Cell-Fracture-Addon (muesste aktiviert sein, haengt an Operator-Kontext); bmesh laeuft immer. Die Falle, die mich mehrere Anlaeufe gekostet hat: jeder Schnitt muss SOFORT geschlossen werden, und zwar ueber genau die Kanten aus geom_cut. Der naheliegende Weg - am Ende alle Randkanten suchen und fuellen - erzeugte Kanten mit vier Flaechen (hauchduenne Splitter, 0.000007 m2 gegen Median 0.0025); raeumte man die ab, blieben Loecher. dissolve_degenerate half nicht, weil es nach KantenLAENGE geht und ein langer duenner Splitter keine kurze Kante hat. Aufgefallen ist das Ganze am Volumen, nicht am Auge: die Teile kamen zusammen auf 72.7 % des Muttersteins, weil calc_volume bei offenen Meshes Unsinn liefert. Jetzt 100.2 % bei 2, 3 und 4 Teilen, 0 offene und 0 non-manifold Kanten. Genau dieser Vergleich steht im Test - er ist zugleich das Warnsignal fuer kaputte Topologie. Neu: tests/test_bruchstuecke.py. 17 Tests bestehen. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -142,6 +142,40 @@ Gemessen (dicht, ~2700 Tris): Erz-Anteil 0.08 → 4 %, 0.18 → 9 %, 0.35 → 15
|
||||
der Oberflaeche. A faellt auf 0.00 und erreicht 1.00, und die Maske ueberlebt
|
||||
den FBX-Roundtrip.
|
||||
|
||||
## Bruchstuecke (Steine zerschlagen)
|
||||
|
||||
Kein Laufzeit-Fracturing im Spiel: die Teile werden beim Anschlagen als
|
||||
Physik-Actors gespawnt. Sie entstehen deshalb hier als vollwertige Assets.
|
||||
Knopf **In Bruchstuecke zerlegen** arbeitet auf der Auswahl und liefert
|
||||
`<Name>_Piece_01..NN`. Regler: `Bruchstuecke` (2-4), `Bruch-Seed`,
|
||||
`Ein Stueck mit Erz`, `Mutterstein ausblenden`.
|
||||
|
||||
Jedes Teil bekommt: Vertex-Layout v2, Ursprung unten-mittig, die **gleichen
|
||||
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.
|
||||
|
||||
**Wie die Bruchkanten zusammenpassen:** Voronoi ueber Halbraeume. Fuer jedes
|
||||
andere Zentrum wird an der Mittelsenkrechten geschnitten und die abgewandte
|
||||
Seite verworfen. Benachbarte Zellen schneiden dadurch an *genau derselben*
|
||||
Ebene - die Bruchflaechen passen zusammen, ohne dass man sie abstimmen muesste.
|
||||
Bewusst ohne das Cell-Fracture-Addon: das muesste beim User aktiviert sein und
|
||||
haengt an Operator-Kontext, bmesh laeuft immer.
|
||||
|
||||
> **Die entscheidende Falle.** Jeder Schnitt muss **sofort** geschlossen werden,
|
||||
> und zwar ueber genau die Kanten, die `bisect_plane` als `geom_cut` zurueckgibt.
|
||||
> Der naheliegende Weg - am Ende alle Randkanten suchen und fuellen - erzeugte
|
||||
> Kanten mit vier Flaechen; raeumte man die ab, blieben Loecher. Aufgefallen ist
|
||||
> das am **Volumen**: die Teile kamen zusammen auf 72.7 % des Muttersteins,
|
||||
> weil `calc_volume` bei offenen Meshes Unsinn liefert. Jetzt sind es **100.2 %**
|
||||
> bei 2, 3 und 4 Teilen, mit 0 offenen und 0 non-manifold Kanten.
|
||||
|
||||
`tests/test_bruchstuecke.py` prueft genau diesen Volumen-Vergleich - er ist
|
||||
zugleich das Warnsignal fuer kaputte Topologie.
|
||||
|
||||
## Smooth & dicht
|
||||
|
||||
Knopf im Form-Panel: setzt Unterteilung 5, Decimate 0.40/0.80 und Auto-Smooth.
|
||||
@@ -484,6 +518,7 @@ gefiltert `.\run_tests.ps1 -Filter panels`.
|
||||
| Datei | prueft |
|
||||
|---|---|
|
||||
| `tests/test_proportionen.py` | Baum-Proportionen: Palmenkrone, Strauch-Breite, Setzling-Schlankheit, Branch Count 0 |
|
||||
| `tests/test_bruchstuecke.py` | Bruchstuecke: Volumen 100 % des Muttersteins, dichte Topologie, genau ein Erz-Stueck, Material-Slots, Ursprung, UCX je Teil |
|
||||
| `tests/test_erz.py` | Erz-Maske: A=1.0 ohne Erz, Anteil monoton, Set-Namen/Groessen, Einstellungen zurueckgesetzt, FBX-Roundtrip, Tri-Fenster |
|
||||
| `tests/test_export_robust.py` | Export am **reimportierten** FBX: Ursprung erzwungen, flach = liegend, UCX geschlossen/umschliessend/im Budget, LOD+Vertex-Farben |
|
||||
| `tests/test_panels.py` | Alle vier Addons: registrieren, jedes Panel zeichnet, Unter-Panels im richtigen Tab, **jede Property irgendwo erreichbar** |
|
||||
|
||||
Reference in New Issue
Block a user