Tree Gen 1.42.0: UCX-Stammhuelle im Spielfertig-Export
Die Stand-Baeume bekommen eine konvexe Kollisionshuelle um den STAMM, vom Fuss bis zum Kronenansatz - keine Kronen-Huelle: gegen die liefe der Spieler, bevor er den Baum beruehrt. Die Trennung kommt aus ast_id (0 = Stamm), dasselbe Attribut wie beim Ursprung und bei den Faell-Teilen. Kronenansatz = tiefster Punkt mit ast_id > 0 plus ein Zehntel Stammhoehe Luft (der tiefste Astpunkt kann eine herabgebogene Spitze sein). Ohne Aeste ist die ganze Pflanze Stamm - beim Kaktus genau richtig. Name und Hierarchie sind NICHT geraten, sondern am Fels-Export nachgemessen, der in der Pipeline schon abgenommen ist: UCX_<LODGroup-Name>, als GESCHWISTER des LodGroup-Empty. Ein Kind der Gruppe wuerde Unreal als LOD-Stufe lesen. Zwei Befunde aus der Messung: - Die Huelle rutschte 4-6 cm UNTER den Boden. Das Vereinfachen auf 12 Verts schneidet Ecken ab, das anschliessende Aufblasen skaliert um die Huellenmitte und schiebt dabei die Unterseite nach unten. Im Spiel waere das eine Kollision, die aus dem Terrain ragt. Boden wird jetzt auf Z = 0 geklemmt. - Der erste Anlauf des Tests holte die FBX-Skala aus der Gesamthoehe - die Blatt-Cards ragen ueber die Rinde hinaus, die Skala kam zu gross heraus und die Huelle sah zu klein aus. Massstab kommt jetzt aus Material-Slot 0. Neu: tests/test_stamm_ucx.py, vier Faelle (gerader Stamm, krummer Stamm mit Bend 1.5, Obstbaum, einmal ohne LODs), gemessen im reimportierten FBX. Gegenprobe ohne Boden-Klemmung: vier Fehler. test_baum_export, test_baum_lod und test_ursprung zaehlten die Huelle als Render-Mesh mit und schlugen zu Recht an - sie filtern jetzt UCX_. Schalter im Export-Panel: "UCX-Stammhuelle" (an) + max. Verts (12). 27 Tests bestehen. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -563,6 +563,54 @@ Der Kaktus erzeugt regulaer **0 Cards** — kein Ast ist duenner als `Max Radius
|
||||
und das ist botanisch richtig. Vorher lief das still durch und man stand vor
|
||||
einer leeren `_Leaf`-Ebene; jetzt sagt der Operator es und nennt den Regler.
|
||||
|
||||
### Stamm-UCX fuer den Stand-Baum
|
||||
|
||||
Die Stand-Baeume bekommen eine konvexe Kollisionshuelle um den **Stamm**, vom
|
||||
Fuss bis zum Kronenansatz. Bewusst keine Kronen-Huelle: gegen die liefe der
|
||||
Spieler, bevor er den Baum ueberhaupt beruehrt.
|
||||
|
||||
Die Trennung kommt aus `ast_id` (0 = Stamm) - dasselbe Attribut wie beim
|
||||
Ursprung und bei den Faell-Teilen. Kronenansatz ist der tiefste Punkt mit
|
||||
ast_id > 0, plus ein Zehntel Stammhoehe Luft, weil der tiefste Astpunkt eine
|
||||
herabgebogene Spitze sein kann. Ohne Aeste (Kaktus-Setzling) ist die ganze
|
||||
Pflanze Stamm - und genau die soll dann die Kollision sein.
|
||||
|
||||
**Name und Hierarchie sind nicht geraten, sondern vom Fels-Export abgeschaut**,
|
||||
der in der Spiel-Pipeline schon abgenommen ist: dort exportiert eine LOD-Gruppe
|
||||
als `UCX_<LODGroup-Name>`, und zwar als GESCHWISTER des LodGroup-Empty, nicht
|
||||
als Kind - Unreal liest jedes Kind der Gruppe als LOD-Stufe. Nachgemessen im
|
||||
Fels-FBX, bevor eine Zeile Baum-Code entstand.
|
||||
|
||||
Ergebnis im reimportierten Baum-FBX:
|
||||
|
||||
```
|
||||
Eiche_01_LOD0..3 MESH parent = Eiche_01_LODGroup
|
||||
Eiche_01_LODGroup EMPTY parent = -
|
||||
UCX_Eiche_01_LODGroup MESH parent = - 12 Verts
|
||||
```
|
||||
|
||||
Zwei Dinge, die erst die Messung gezeigt hat:
|
||||
|
||||
* Die Huelle rutschte **4-6 cm unter den Boden**. Das Vereinfachen auf 12 Verts
|
||||
schneidet Ecken ab, und das anschliessende Aufblasen (damit wieder alles
|
||||
hineinpasst) skaliert um die Huellenmitte - dabei wandert die Unterseite nach
|
||||
unten. Im Spiel waere das eine Kollision, die aus dem Terrain herausragt.
|
||||
Jetzt wird der Boden auf Z = 0 geklemmt.
|
||||
* Der erste Anlauf des Tests rechnete die FBX-Skala aus der **Gesamthoehe**
|
||||
zurueck - die Blatt-Cards ragen aber ueber die Rinde hinaus, die Skala kam zu
|
||||
gross heraus und die Huelle sah zu klein aus. Jetzt kommt der Massstab aus
|
||||
Material-Slot 0. Ein Massstab, der etwas anderes misst als die Referenz,
|
||||
verschiebt jede Aussage.
|
||||
|
||||
`tests/test_stamm_ucx.py` prueft an vier Faellen (gerader Stamm, krummer Stamm
|
||||
mit Bend 1.5, Obstbaum, und einmal ohne LODs): genau eine Huelle, richtiger
|
||||
Name, kein Elternteil, 8-24 Verts, Radius zwischen Stammradius und dem
|
||||
2.5-fachen davon, Fuss auf Z = 0, Hoehe nicht ueber den Kronenansatz hinaus.
|
||||
Gegenprobe ohne die Boden-Klemmung: vier Fehler.
|
||||
|
||||
Drei bestehende Tests zaehlten die Huelle als Render-Mesh mit und schlugen zu
|
||||
Recht an - sie filtern jetzt `UCX_`.
|
||||
|
||||
### Vom Trichter ueber die Haube zur Kugel
|
||||
|
||||
Zielbild ist der **Lollipop** der stilisierten Vektor-Illustration: kurzer
|
||||
|
||||
Reference in New Issue
Block a user