UCX bei LOD-Gruppen nach dem MESH-Node benennen (Tree 1.45.0, Rock 2.20.0)

Der Legacy-Importer matcht UCX_<Mesh-Node>, nicht das LodGroup-Empty. Eine
Huelle mit dem Gruppennamen liegt in der Datei und ein Reimport nach Blender
zeigt sie an - Unreal verwirft sie aber STILL. Gemeldet von der Spielseite:
convex = 0 an 108 Stand-Baeumen und 57 Fels-Meshes; dieselbe Datei mit der
Huelle auf dem LOD0-Node liefert convex = 1.

UCX_<Basisname> stimmt nur OHNE LOD-Kette, weil der Mesh-Node dann so heisst -
deshalb waren Faell-Teile und _Pieces_All die ganze Zeit in Ordnung.

BEIDE Addons betroffen: der Fels-Export hatte den Fehler zuerst, der
Baum-Export hat ihn 1.42 von dort uebernommen.

Wie es durchrutschen konnte, ist die eigentliche Lehre: fuer 1.42 habe ich die
Konvention am Fels-Export NACHGEMESSEN statt sie zu raten - exportieren,
reimportieren, Name und Hierarchie pruefen. Das war richtig und hat trotzdem
nichts bewiesen, weil die Quelle denselben Fehler hatte. Gemessen wurde die
STRUKTUR, nicht die WIRKUNG. Eine abgeschaute Konvention ist nur so gut wie die
Quelle, von der sie stammt.

Die Tests pruefen jetzt die REGEL statt des Namens: hinter UCX_ muss ein
Mesh-Node aus derselben Datei stehen, und zwar LOD0 (hoechste Vertexzahl). Das
haette den Fehler in beiden Addons gefunden, ohne die Antwort vorher zu kennen.
Gegenproben: Baum 9 Fehler, Fels 1 Fehler.

27 Tests bestehen.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
2026-08-07 07:18:33 +02:00
co-authored by Claude Opus 4.8
parent b5ec4a4bc0
commit 5e6b84369f
13 changed files with 130 additions and 29 deletions
+15 -3
View File
@@ -1,7 +1,7 @@
bl_info = {
"name": "Stylized Tree Generator",
"author": "D4rkst3r",
"version": (1, 44, 0),
"version": (1, 45, 0),
"blender": (4, 2, 0),
"location": "View3D > Sidebar > Tree Gen",
"description": "Parametrischer Baum-/Palmen-/Busch-Generator (Geometry Nodes) mit Wachstums-Stufen",
@@ -2943,8 +2943,20 @@ class TREEGEN_OT_export_game(Operator):
# und bei LOD1-3 zusaetzlich dezimiert. Sie durchlaufen dieselbe
# Kette wie die Stufen: eigene Weltmatrix, dann die gemeinsame
# Zentrierung `versatz`.
stamm_ucx_name = (basis_name + "_LODGroup") if s.generate_lods \
else basis_name
#
# NAME nach dem MESH-Node (LOD0), nicht nach dem LodGroup-Empty.
# Der Legacy-Importer matcht `UCX_<Mesh-Node>`; mit dem
# LodGroup-Namen lag die Huelle zwar in der Datei, wurde von
# Unreal aber STILL verworfen - gemeldet mit convex = 0 an 108
# Stand-Baeumen.
#
# 1.42 hatte die Konvention vom Fels-Export abgeschaut und dabei
# nur die STRUKTUR nachgemessen (Reimport nach Blender: Huelle
# da, kein Elternteil, richtiger Name). Dass Unreal sie ANNIMMT,
# war ungeprueft - und genau daran lag es. Ohne LOD-Kette heisst
# der Mesh-Node wie die Basis; deshalb funktionierten die
# Einzel-Teile und Pieces_All die ganze Zeit.
stamm_ucx_name = lods[0].name
hull = None
if s.stand_ucx:
pts = _stamm_punkte(baum, baum.matrix_world)