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:
@@ -1,7 +1,7 @@
|
||||
bl_info = {
|
||||
"name": "Stylized Rock Generator",
|
||||
"author": "D4rkst3r",
|
||||
"version": (2, 19, 0),
|
||||
"version": (2, 20, 0),
|
||||
"blender": (4, 2, 0),
|
||||
"location": "View3D > Sidebar > Rock Gen",
|
||||
"description": (
|
||||
@@ -1695,10 +1695,25 @@ def _prepare_export_copies(context, top, lay_flat=True, want_ucx=True,
|
||||
for o in meshes:
|
||||
o.data.transform(off)
|
||||
|
||||
# 3) UCX. Bei einer LOD-Gruppe darf die Huelle NICHT unter das LodGroup-Empty:
|
||||
# Unreal wuerde jedes Kind als LOD-Stufe lesen. Also als Geschwister.
|
||||
# 3) UCX. Zwei Regeln, beide teuer gelernt:
|
||||
#
|
||||
# a) Bei einer LOD-Gruppe darf die Huelle NICHT unter das LodGroup-Empty:
|
||||
# Unreal wuerde jedes Kind als LOD-Stufe lesen. Also als Geschwister.
|
||||
# b) Der Name muss auf den MESH-Node zeigen, nicht auf das Empty. Der
|
||||
# Legacy-Importer matcht `UCX_<Mesh-Node>`; hiess die Huelle nach der
|
||||
# LodGroup, lag sie zwar in der Datei, wurde aber STILL verworfen -
|
||||
# gemeldet von der Spielseite mit convex = 0 an 57 Fels-Meshes.
|
||||
# `UCX_<Basisname>` stimmt nur OHNE LOD-Kette, weil dort der Mesh-Node
|
||||
# genau so heisst. Ein Reimport nach Blender zeigt die Huelle in
|
||||
# beiden Faellen - er beweist nur, dass sie in der Datei liegt, nicht
|
||||
# dass Unreal sie annimmt.
|
||||
#
|
||||
# `referenz` ist LOD0 (hoechste Vertexzahl) - derselbe Bezug, den oben
|
||||
# schon der Ursprung benutzt. Ohne LOD-Kette ist es das Mesh selbst, dann
|
||||
# faellt der Name mit export_name zusammen.
|
||||
if want_ucx and meshes:
|
||||
ucx = _make_ucx(context, [meshes[0]], export_name,
|
||||
ucx_ziel = referenz if referenz is not None else meshes[0]
|
||||
ucx = _make_ucx(context, [ucx_ziel], ucx_ziel.name,
|
||||
max_verts=ucx_max_verts)
|
||||
if ucx is not None:
|
||||
made.append(ucx)
|
||||
|
||||
Reference in New Issue
Block a user