Rigged LOD: un-subdivide meshes with subdivision structure instead of decimating them #612

Closed
opened 2026-10-10 01:15:49 +00:00 by sky_line · 2 comments
Owner

Proper un-subdivision gives cleaner, more workable reduced meshes than vertex-removal decimation, and one level cuts triangles / vertices about 4x.

Approach (hybrid)

  • Per rigged source mesh: rebuild quads from triangle pairs, then test for subdivision structure (regular valence, consistent even/odd vertex split, quad rings). Quad-modelled bases and heads usually have it; Marvelous Designer clothing, sculpted props and already-decimated creator LODs usually don't.
  • If it passes: un-subdivide one or two levels and measure the geometric error, then use it as the step (same error-driven step choice in the cull, same cache, shadow LOD and RT replay).
  • Prefer a real reverse subdivision (solve for the cage) over dropping the odd vertices: the cage lies outside the smoothed surface, so reduced clothing grows slightly instead of sinking into the body (see the clothing-shrinkage ticket).
  • Otherwise, or if the error is too high: fall back to the current meshoptimizer decimation.
  • Skin weights, UVs and seams: kept vertices are exact; solved cage positions need weights / UVs carried from the even vertices.

Related: #561, the clothing-shrinkage ticket.

Proper un-subdivision gives cleaner, more workable reduced meshes than vertex-removal decimation, and one level cuts triangles / vertices about 4x. ## Approach (hybrid) - Per rigged source mesh: rebuild quads from triangle pairs, then test for subdivision structure (regular valence, consistent even/odd vertex split, quad rings). Quad-modelled bases and heads usually have it; Marvelous Designer clothing, sculpted props and already-decimated creator LODs usually don't. - If it passes: un-subdivide one or two levels and measure the geometric error, then use it as the step (same error-driven step choice in the cull, same cache, shadow LOD and RT replay). - Prefer a real reverse subdivision (solve for the cage) over dropping the odd vertices: the cage lies outside the smoothed surface, so reduced clothing grows slightly instead of sinking into the body (see the clothing-shrinkage ticket). - Otherwise, or if the error is too high: fall back to the current meshoptimizer decimation. - Skin weights, UVs and seams: kept vertices are exact; solved cage positions need weights / UVs carried from the even vertices. Related: #561, the clothing-shrinkage ticket.
sky_line added this to the Slipstream project 2026-10-10 01:15:49 +00:00
Author
Owner

Built and pushed (9aeee8dea7, 2d5d56b7a5; RenderVKRigUnsubdivide), shipped in 1.2.0. Not yet verified in-world on real rigged content, so it moves from In Progress to Testing: waiting on an in-world check that subdivided avatar meshes reduce cleanly and non-subdivided ones fall back to decimation.

Built and pushed (9aeee8dea7, 2d5d56b7a5; RenderVKRigUnsubdivide), shipped in 1.2.0. Not yet verified in-world on real rigged content, so it moves from In Progress to Testing: waiting on an in-world check that subdivided avatar meshes reduce cleanly and non-subdivided ones fall back to decimation.
Author
Owner

Shipped in a published release and tested; closing (testing-lane sweep 2026-10-11).

Shipped in a published release and tested; closing (testing-lane sweep 2026-10-11).
sky_line 2026-10-11 13:25:16 +00:00
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
sky_line/Slipstream#612
No description provided.