Skip to content

The body hides skin under clothing by splitting primitives, so the visible/hidden border follows triangle edges #736

Description

@gidich

The body hides the skin under clothing by splitting the mesh into eight primitives and making seven
of them fully transparent. The cut follows triangle edges, so the boundary between visible skin and
hidden skin is a zigzag rather than a line.

Measured 2026-08-27 on mpfb-peds-parent-aisha.motion-bind.glb

mpfb_ob_patient_aisha_body carries eight primitives:

material alpha cutoff tris baseColorFactor texture
mpfb_skin_ob_patient_aisha OPAQUE 0.5 20,242 [1,1,1,1] 819,496 B PNG
openclinxr_hidden_upper_… MASK 0.5 2,664 [0,0,0,0] none
openclinxr_hidden_foot_… MASK 0.5 2,760 [0,0,0,0] none
openclinxr_hidden_lower_… MASK 0.5 506 [0,0,0,0] none
openclinxr_hidden_upper_….001 MASK 0.5 218 [0,0,0,0] none
openclinxr_hidden_foot_….001 MASK 0.5 140 [0,0,0,0] none
openclinxr_hidden_orphan_… MASK 0.5 138 [0,0,0,0] none
openclinxr_hidden_lower_….001 MASK 0.5 88 [0,0,0,0] none

20,242 + 6,514 = 26,756, the body's total.

Every hidden primitive has alpha 0 with a MASK cutoff of 0.5, so all of its fragments are discarded.
The regions vanish cleanly. What does not vanish cleanly is the border: a primitive split is a
partition of triangles, so the edge between the visible skin and the discarded skin runs along
triangle edges and cannot follow a smooth line.

The observation this explains, stated as an inference

I have graded "the neck ends in a jagged sawtooth collar at the garment" across several head-framed
captures of this actor. A triangle-granularity visibility boundary at the neckline is a mechanism
that produces exactly that silhouette.

I have not proven those are the same boundary. I measured the mechanism, not the correspondence.
Verifying it needs the visible/hidden triangle border projected into the graded frame, which I did
not do.

A second, separate finding in the same table

The hair material is baseColorFactor = [0.16, 0.11, 0.09, 1], OPAQUE, no texture. Flat dark
brown across 4,975 triangles. That is consistent with the featureless cap I have graded, and with
part of the tone break at the hairline where an untextured flat colour meets a skin primitive
carrying an 819 KB PNG. Also unproven as correspondence.

The fix shape, and what is not decided

A texture-space alpha mask cuts at texel granularity and can follow a smooth neckline; a primitive
split cannot. Whether that is worth the change here is not determined — it costs a mask texture per
body and the current approach is free at runtime.

Also open: whether the eight-way split is why the body is eight primitives at all, or whether
something else needs them separate.

Not measured

Whether the other ten shipped humanoids use the same split; only the parent was read. Whether the
.001 duplicates and the hidden_orphan primitive are intentional or residue — seven hidden
primitives for three named regions is more than the naming suggests.

factory_step: clothing_consume

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions