GlbMeshStore setzt fuer texturlose Military-GLBs die Pack-Palette-Textur (Atlas per absolutem Pfad aus dem Client-Mesh-Lager, NEAREST + Mipmaps), gen_thumbs nutzt denselben Helfer → Thumbs zeigen die echten Palette- Farben statt weisser Silhouetten. 261 Thumbs neu gerendert (317 gesamt). Beweis: tests/probe_pack_texturen.gd headless — 7/7 Flaechen texturiert.
43 lines
1.6 KiB
GDScript
43 lines
1.6 KiB
GDScript
extends SceneTree
|
|
## Beweis-Probe (Karte t_9675e48d, EDITOR): GlbMeshStore liefert Military-
|
|
## Meshes MIT Pack-Textur (Palette-Atlas) statt weiß. Headless-Logikprobe:
|
|
## pro OID jede Oberfläche auf albedo_texture prüfen.
|
|
##
|
|
## /opt/data/home/bin/godot4 --headless --path . -s res://tests/probe_pack_texturen.gd
|
|
## Ausgabe: PROBE_PACK_TEX_EDITOR_OK/FAIL
|
|
|
|
const OIDS := ["box_001", "barrel_001", "shell_001", "training_item_001",
|
|
"wall_001", "container_001"]
|
|
|
|
|
|
func _initialize() -> void:
|
|
var fehler: Array = []
|
|
var tex_gesamt := 0
|
|
var weiss_gesamt := 0
|
|
for oid in OIDS:
|
|
var mesh := GlbMeshStore.mesh_fuer(oid)
|
|
if mesh == null:
|
|
fehler.append("%s: kein Mesh (GLB fehlt im Lager?)" % oid)
|
|
continue
|
|
var tex := 0
|
|
var weiss := 0
|
|
for s in mesh.get_surface_count():
|
|
var mat := mesh.surface_get_material(s)
|
|
if mat is BaseMaterial3D and (mat as BaseMaterial3D).albedo_texture != null:
|
|
tex += 1
|
|
else:
|
|
weiss += 1
|
|
if weiss > 0:
|
|
fehler.append("%s: %d/%d Fläche(n) OHNE Textur" % [oid, weiss, tex + weiss])
|
|
else:
|
|
print(" %s: %d Fläche(n) mit Pack-Textur" % [oid, tex])
|
|
tex_gesamt += tex
|
|
weiss_gesamt += weiss
|
|
print("Flächen gesamt: %d texturiert, %d weiß" % [tex_gesamt, weiss_gesamt])
|
|
# Negative-Kontrolle: unbekanntes Material liefert null (kein Crash).
|
|
if GlbMeshStore.pack_material("gibt_es_nicht") != null:
|
|
fehler.append("pack_material('gibt_es_nicht') sollte null liefern")
|
|
for f in fehler:
|
|
print(" FEHLER: %s" % f)
|
|
print("PROBE_PACK_TEX_EDITOR_%s" % ("FAIL" if not fehler.is_empty() else "OK"))
|
|
quit(1 if not fehler.is_empty() else 0)
|