Skip to content

analyze_texture assigns metal finish classes to fabric and silently rewrites authored roughness #137

Description

@jarvisthegreat2-svg

Version: 2.0.0 (6e60b5e) · Profile: generic, no domain plugins installed

Summary

Run against verified interior crops of a wool/leather/knit garment with --spec ... --in-place, analyze_texture.py assigned every fabric a metal finish class and silently rewrote the authored roughness scalars to match.

material actual finish assigned finishClass roughness before → after
wool melton woven matte painted-metal 0.92 → 0.50
leather pebbled dielectric brushed-steel 0.50 → 0.35
rib knit knit matte candy-coat 0.85 → 0.18

A rib knit at roughness 0.18 renders as polished plastic.

What I think is happening

The finish vocabulary looks weapon-skin oriented (painted-metal, brushed-steel, candy-coat). With no domain plugin installed there is no fabric class available, so each crop is forced into the nearest class rather than the classification being refused. No warning is emitted, and the spec is patched in place.

The crops themselves were verified first — I had already checked each one visually to confirm it was on the part I thought it was, and the corresponding extract_pbr_evidence runs returned 0.80–0.86 confidence on the same pixels.

Suggested fix

Two things, either of which would have caught this:

  1. Refuse to classify when no finish class is within some confidence bound, rather than returning the nearest match. "I do not have a class for this" is a useful answer.
  2. Never silently overwrite an authored roughness scalar. The repo's own rule (grimoire/build/threejs_skin_and_cloth_materials.md:115-116) is that roughness is reported, never gated, because screen-space geometryRoughness is added at shade time — so an authored value being replaced by an inferred one is a meaningful loss, and it happens with no record in the spec that it occurred.

Related: #135, #136 — all three surfaced in the same run, and all three share a root cause in the intake and material tooling assuming a rigid, saturated object photographed against a background.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions