Punkt 1 - Ursprung erzwingen (keine Option mehr) Der Export schrieb die Objekt-Transformation mit ins FBX. Dadurch trug das 25er-Set seine Szenen-Rasterpositionen (bis 20 m) im Asset und die Steine schwebten im Spiel neben ihrem Platzierungspunkt. Jetzt wandert jedes Objekt an den Welt-Ursprung, Origin unten-mittig der Bbox. Am REIMPORTIERTEN FBX gemessen: Bbox-Mitte 0.000/0.000, min.Z 0.000. Punkt 2 - flache Steine hinlegen Kuerzeste Bbox-Achse zeigt nach oben. Gedreht wird nur, wenn es etwas bringt: bei 2.53/1.40/1.54 wuerde Kippen die Form nur willkuerlich drehen. Punkt 3 - UCX-Kollisionshuellen Konvexe Huelle als UCX_<Name> im selben FBX, Budget einstellbar (Default 32 Verts). Gemessen 29-32 Verts, geschlossen, umschliesst den Stein. Alles auf temporaeren KOPIEN - die Szene des Users bleibt unveraendert (Test prueft Namen und Objektzahl vorher/nachher). Offener Punkt der Spielseite beantwortet: LOD-Gruppen + Vertex-Farben gingen NICHT. Der LOD-Zweig in make_one_rock sprang komplett am Cavity-Bake vorbei - gemessen: kein Farbattribut auf einer der vier Stufen, dazu fehlten Origin und Material. Jetzt wird auf LOD0 gebacken, BEVOR dupliziert wird; das Decimate interpoliert mit, damit alle Stufen dieselbe Cavity zeigen und der LOD-Wechsel nicht poppt. Nach Roundtrip: LOD0 40 V R 0.30..1.00, LOD1 21 V, LOD2 11 V, LOD3 6 V - alle mit Farben. Vier Fallen, die der Test aufgedeckt hat: - Blender haengt an Kopien ".001" an; Unreal ordnet UCX ueber den EXAKTEN Mesh-Namen zu -> Original bekommt fuer die Exportdauer einen Hilfsnamen. - bmesh.from_mesh bringt die Originalflaechen mit, convex_hull legt seine Huelle obendrauf -> 16-21 offene Kanten. Nur die PUNKTE einlesen. - Jede Vereinfachung schneidet Ecken ab, die Huelle wird KLEINER als der Stein (der Spieler wuerde einsinken). Jetzt exakt so weit aufgeblasen, dass wieder alles hineinpasst - fuer Kollision ist minimal zu gross unkritisch. - ob.matrix_world = Identity loescht die Transformation NICHT bei geparenteten Objekten; bei einer LOD-Gruppe auf (13/-7.5/2.2) landete das Mesh bei MINUS dieser Position. matrix_basis und matrix_parent_inverse direkt nullen. Neu: tests/test_export_robust.py misst am reimportierten FBX statt an der Szene - nur so faellt eine mitgeschriebene Transformation ueberhaupt auf. 15 Tests bestehen. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
106 lines
3.1 KiB
JSON
106 lines
3.1 KiB
JSON
{
|
|
"version": "v1",
|
|
"blocklist": [],
|
|
"data": [
|
|
{
|
|
"schema_version": "1.0.0",
|
|
"id": "stylized_asset_utils",
|
|
"name": "Stylized Asset Utils",
|
|
"tagline": "Handgebaute Assets auf EcoGame-Konvention bringen",
|
|
"version": "1.1.0",
|
|
"type": "add-on",
|
|
"maintainer": "D4rkst3r",
|
|
"license": [
|
|
"SPDX:GPL-3.0-or-later"
|
|
],
|
|
"blender_version_min": "4.2.0",
|
|
"website": "https://git.d4rkst3r.de/D4rkst3r/stylized-rock-generator",
|
|
"copyright": [
|
|
"2026 D4rkst3r"
|
|
],
|
|
"tags": [
|
|
"Object",
|
|
"Mesh",
|
|
"Modeling"
|
|
],
|
|
"archive_url": "./stylized_asset_utils-1.1.0.zip",
|
|
"archive_size": 6351,
|
|
"archive_hash": "sha256:71f3d1ee0db0b8ebb8a5e042a763e27de7accb83b655cb374bd2e8a3c6a3d94a"
|
|
},
|
|
{
|
|
"schema_version": "1.0.0",
|
|
"id": "stylized_grass_generator",
|
|
"name": "Stylized Grass Generator",
|
|
"tagline": "Gras, Blumen und Farne mit Wind-UV fuer SimpleGrassWind",
|
|
"version": "1.1.0",
|
|
"type": "add-on",
|
|
"maintainer": "D4rkst3r",
|
|
"license": [
|
|
"SPDX:GPL-3.0-or-later"
|
|
],
|
|
"blender_version_min": "4.2.0",
|
|
"website": "https://git.d4rkst3r.de/D4rkst3r/stylized-rock-generator",
|
|
"copyright": [
|
|
"2026 D4rkst3r"
|
|
],
|
|
"tags": [
|
|
"Object",
|
|
"Mesh",
|
|
"Modeling"
|
|
],
|
|
"archive_url": "./stylized_grass_generator-1.1.0.zip",
|
|
"archive_size": 5027,
|
|
"archive_hash": "sha256:7a6335f0fabc8620d42a234a1c70856e1cf05b9fbd555306eec15e11d7f7ee7e"
|
|
},
|
|
{
|
|
"schema_version": "1.0.0",
|
|
"id": "stylized_rock_generator",
|
|
"name": "Stylized Rock Generator",
|
|
"tagline": "Batch-Generator fuer stylized Rocks mit UE5-Export",
|
|
"version": "2.14.0",
|
|
"type": "add-on",
|
|
"maintainer": "D4rkst3r",
|
|
"license": [
|
|
"SPDX:GPL-3.0-or-later"
|
|
],
|
|
"blender_version_min": "4.2.0",
|
|
"website": "https://git.d4rkst3r.de/D4rkst3r/stylized-rock-generator",
|
|
"copyright": [
|
|
"2026 D4rkst3r"
|
|
],
|
|
"tags": [
|
|
"Object",
|
|
"Mesh",
|
|
"Modeling"
|
|
],
|
|
"archive_url": "./stylized_rock_generator-2.14.0.zip",
|
|
"archive_size": 26683,
|
|
"archive_hash": "sha256:f60aa4d5c8d73cabfccbccf19020ea30d31e77ad22dca5f8a7151e46c7ec1c42"
|
|
},
|
|
{
|
|
"schema_version": "1.0.0",
|
|
"id": "stylized_tree_generator",
|
|
"name": "Stylized Tree Generator",
|
|
"tagline": "Parametrische Baeume, Palmen, Bueschen mit Wachstums-Stufen",
|
|
"version": "1.25.0",
|
|
"type": "add-on",
|
|
"maintainer": "D4rkst3r",
|
|
"license": [
|
|
"SPDX:GPL-3.0-or-later"
|
|
],
|
|
"blender_version_min": "4.2.0",
|
|
"website": "https://git.d4rkst3r.de/D4rkst3r/stylized-rock-generator",
|
|
"copyright": [
|
|
"2026 D4rkst3r"
|
|
],
|
|
"tags": [
|
|
"Object",
|
|
"Mesh",
|
|
"Modeling"
|
|
],
|
|
"archive_url": "./stylized_tree_generator-1.25.0.zip",
|
|
"archive_size": 24729,
|
|
"archive_hash": "sha256:51006e9a2968cfce6dcb7ce13888a5e410b25119916c300013a7105ee83f78e5"
|
|
}
|
|
]
|
|
} |