Rock Gen 2.18.0: Material-Slots, Praefix Rock, Warnung bei zu grobem Erz-Mesh
Drei Rueckmeldungen von der Spielseite abgearbeitet. 1) Fehlende Material-Slots "Material zuweisen" stand auf Standard AUS, deshalb kamen alle Proben mit mats: [] an - Unreal legt dann nur einen Default-Slot an und die eingefrorene Konvention M_Rock_<Sorte> greift nicht. Jetzt Standard AN. Normale Steine rotieren durch M_Rock_Granite/Basalt/Sandstone/Mossy, das Erzfels-Set bekommt einen NEUTRALEN Slot M_Rock_Ore - ein Set fuer alle Erzsorten, die Sorte macht die Material-Instanz. 2) Namens-Drift Fels_ statt Rock_ War ein Versehen, keine Absicht: der Standard-Praefix stammte noch aus der ersten Fassung, bevor die Konvention Rock_<Set>_<Groesse>_<NN> stand. Der Erz-Set-Knopf setzte "Rock" schon selbst, der allgemeine Standard nicht. Standard ist jetzt "Rock" - keine Asset-Zwillinge, keine Migration noetig. 3) Erzfelsen mit ~870 statt ~2700 Tris Nachgestellt: aus den Werkseinstellungen liefert der Set-Knopf 2590-2690 Tris, die Automatik greift also. ~870 entstehen genau dann, wenn man den Erz-Haken setzt und den NORMALEN Erzeugen-Knopf nimmt - Werkseinstellung ist Decimate 0.20/0.50 statt 0.40/0.80. Das ist eine Bedienluecke, kein Fehler in der Automatik: die Dichte wird bewusst nur ueber den Set-Knopf gesetzt, damit niemandem seine Einstellungen unterm Hintern weggezogen werden. Deshalb warnt der Operator jetzt, wenn mit Erz-Haken ein Mesh unter 800 Verts entsteht, und nennt den Knopf "Smooth & dicht" beim Namen. Sonst faellt das erst in UE auf und sieht dort nach einem Material-Fehler aus. Tests halten den Vertrag jetzt fest: Auslieferungszustand (assign_material an, Praefix Rock), neutraler Erz-Slot, Sorten-Slots bei normalen Steinen. 17 Tests bestehen. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -11,11 +11,12 @@ for o in list(bpy.data.objects): bpy.data.objects.remove(o, do_unlink=True)
|
||||
|
||||
# --- Namensschema ---
|
||||
s.batch_count=3; s.subsurf_levels=3; s.use_modal=False; s.generate_lods=False
|
||||
s.name_prefix="Fels"; s.name_form="a"; s.name_class='L'
|
||||
# Eingefrorene EcoGame-Konvention: Rock_<Set>_<Groesse>_<NN>.
|
||||
s.name_prefix="Rock"; s.name_form="a"; s.name_class='L'
|
||||
bpy.ops.object.generate_rocks_batch()
|
||||
names=sorted(o.name for o in bpy.context.scene.objects if o.type=='MESH')
|
||||
print("NAMEN:", names)
|
||||
if not all(n.startswith("Fels_A_L") for n in names): fails.append("naming")
|
||||
if not all(n.startswith("Rock_A_L") for n in names): fails.append("naming")
|
||||
|
||||
# Einzeln (ohne Nummer)
|
||||
for o in list(bpy.data.objects): bpy.data.objects.remove(o,do_unlink=True)
|
||||
@@ -23,7 +24,7 @@ s.batch_count=1
|
||||
bpy.ops.object.generate_rocks_batch()
|
||||
single=[o.name for o in bpy.context.scene.objects if o.type=='MESH']
|
||||
print("EINZELN:", single)
|
||||
if single and single[0]!="Fels_A_L": fails.append("naming_single")
|
||||
if single and single[0]!="Rock_A_L": fails.append("naming_single")
|
||||
print("LIGHTMAP-DEFAULT aus:", not m.RockGenSettings.bl_rna.properties['generate_lightmap_uv'].default)
|
||||
|
||||
# --- Bake: nur _albedo + _normal, AO drin ---
|
||||
|
||||
Reference in New Issue
Block a user