Rig weld: also require similar skin weights before welding (don't weld cavities / onion-skin layers shut) #626
Labels
No labels
amd
avatars
bug
builder
cannot-reproduce
crash
epic
feature
from-viewer
gl-removal
known-limitation
monitoring
parity
perf
platform
priority
critical
priority
high
priority
low
priority
medium
provenance
rendering
rt
status
in-progress
status
testing
status
up-next
triage
ui
upstream
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
sky_line/Slipstream#626
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Rigged vertex welding (RenderVKRigWeld, #574) currently pairs open-boundary vertices from different meshes of one avatar purely by bind-space distance (RenderVKRigWeldDistance, default now 0.2 mm; it was 1.5 mm) plus a skinned-distance cutoff (RenderVKRigWeldMaxGap). That is not enough on its own.
Problem
Some items have intentional geometry that sits within the weld distance of another mesh but must stay separate. Example: adult items with cavities, where a separate mesh is layered as an onion skin over the body. Their open edges sit fractions of a millimetre from the body's, so the cavity was welded shut at the old 1.5 mm default. Lowering the distance helps but is a blunt tool: real seams that don't quite coincide stop closing, and thin layered features can still sit within any distance we pick.
Proposal: weld only vertices that deform the same way
Two vertices should only be welded when their skin weights are similar, i.e. they would move together under animation anyway (true seams between body parts, garment edges sewn to the body):
sum over joints of min(w_a[j], w_b[j])(1 = identical, 0 = disjoint), and require it above a threshold (new setting, e.g.RenderVKRigWeldWeightMatch, default ~0.8).4983d29d2astays.Also check
Related: #574, #616 (skinned vertex layout),
4983d29d2a(weld only between meshes),5eb1254e99(default distance 0.2 mm).Shipped in 1.3.0 Beta 2: rig weld pairs are decided once at the rest pose and only vertices that deform the same way are paired, so cavities and onion-skin layers are no longer welded shut.