Raise the character mesh budget to 8000
Full build / Import + headless tests (push) Successful in 33s
Full build / Full desktop build + optional release (push) Skipped

This commit is contained in:
zwitschi committed 2026-11-02 19:25:41 +01:00
1 parent cd5e0e0ff7
commit 7dc3d3c873
8 files changed
+50 -41

No files matched your search

+7 -6
View File
@@ -48,12 +48,13 @@ MANIFEST = OUT_DIR / "manifest.json"
SLOTS = ["skin", "cloth", "pants", "accessory", "hair"]
BONES = ["Head", "HipL", "HipR", "KneeL", "KneeR", "ShoulderL", "ShoulderR",
"ElbowL", "ElbowR", "HandL", "HandR"]
CHAR_MAX_TRIS = 6000
# Raised from 4000 to 5000 for the 2026-11-01 face/hand detail pass. The glTF
# vertex count is after UV-seam splits, so the extra eyes, lids, cheeks, nose and
# fingers cost ~700 verts per variant; `smoke_npc_budget.gd` measured 16 avatars at
# ~6.9 ms (budget 50 ms), and each avatar is still a single skinned mesh.
CHAR_MAX_VERTS = 5000
# The eight library variants may use more geometry than the frozen npc_base
# fallback (6000 tris / 4000 verts). Raised to 8000/8000 on 2026-11-02 so the
# remaining face, hand-grip and clothing work is not forced to replace detail.
# The glTF vertex count is after UV-seam splits; each avatar is still one
# skinned mesh, and `smoke_npc_budget.gd` must confirm the 24-NPC frame time.
CHAR_MAX_TRIS = 8000
CHAR_MAX_VERTS = 8000
GEAR_MAX_TRIS = 1500
PROP_MAX_TRIS = 4000
+5 -4
View File
@@ -9,10 +9,11 @@ class CatalogueTests(unittest.TestCase):
def test_contract_matches_npc_pipeline(self):
self.assertEqual(ba.SLOTS, npc_pipeline.SLOTS)
self.assertEqual(sorted(ba.BONES), sorted(npc_pipeline.BONES))
# The base mesh keeps the frozen 6000/4000 contract; library variants may
# spend up to 5000 verts on face/hand detail (documented in blender-assets.md).
self.assertLessEqual(ba.CHAR_MAX_TRIS, npc_pipeline.MAX_TRIANGLES)
self.assertLessEqual(ba.CHAR_MAX_VERTS, 5000)
# The base mesh keeps the frozen 6000/4000 contract; the eight library
# variants have their own 8000/8000 detail budget (documented in
# blender-assets.md and covered by smoke_npc_budget.gd).
self.assertLessEqual(ba.CHAR_MAX_TRIS, 8000)
self.assertLessEqual(ba.CHAR_MAX_VERTS, 8000)
def test_gear_uses_known_attach_points(self):
for name, attach in ba.GEAR.items():