3D Data · Material-Import Bug Audit (renders_cond)
Detecting assets whose conditioning render lost its materials · 1.1M scanned · 2026-07-09
data-qualitymaterial-bugready_v4filtering
TL;DR
91,814 assets (8.4%) have a material-import bug: the Blender-3.0.1 conditioning render (the model INPUT) came out grey/untextured, while the object's real PBR material (the SUPERVISION) is colorful. Input and supervision disagree.
Detected by comparing two saturations per asset: cond_sat (render foreground) vs gt_sat (decoded PBR base_color). BUG = render grey AND material colorful. This separates true bugs from the 231,673 (21%) assets that are legitimately untextured.
The bug is not a Blender-version fault — re-rendering the same GLB (even with 3.0.1) restores the material; the original run had a transient material-import failure. Fix = re-render the flagged 91,814.
1 · Bug rate by subset
Concentrated in Sketchfab-sourced sets: TexVerse 11.3% (51,038) + SketchfabV1 9.7% (33,788) = 92% of all bugs.
ObjaverseXL_github looks clean (1.6%) but is mostly legitimately untextured raw meshes (51% legit-grey), not bug-free renders.
Cross-validated: SketchfabV1 gives 9.7% via PBR-decode and 8.7% via an independent raw-GLB read — the two methods agree.
① Material-bug rate per subset. Sketchfab-sourced sets (TexVerse, SketchfabV1) carry almost all of it.
2 · Detection logic
cond_sat = mean HSV saturation of the render's foreground (grey render → ~0).
gt_sat = mean saturation of the decoded PBR base_color (the true material).
③ 16 flagged bugs. The grey render on the left is the training input; the colorful projection on the right is the material it was supposed to show.
4 · How the GT was recovered (the enabling trick)
Decoding a stored PBR latent needs the geometry octree, which is thrown away on save. TexVerse/Obj_sketchfab raw meshes are gone, so no re-voxelization.
Fix: run shape_dec(return_subs=True) to regenerate the subdivision octree, then tex_dec(guide_subs=subs) to paint base_color onto it. Shape and tex latents share the exact same sparse structure, so the octree transfers.
Uniform, GPU-only, ~0 decode errors — covers every subset including the raw-deleted ones.
5 · Next step
Flag list written to material_bug_flags.jsonl (1,097,054 rows: sha / subset / cond_sat / gt_sat / verdict).
Re-render the 91,814 bug assets. SketchfabV1 + github + small sets have raw on disk; TexVerse's 51k need a raw re-download (TexVerse-1K).
Keep the 231,673 legit-untextured as-is — they are not bugs.
Detector: cond_sat (renders_cond webp) vs gt_sat (PBR base_color via shape_dec->tex_dec). 2x H200 nodes + 1 CPU node, ~4h. Scores at /fsx/home/weikai.huang/3dgen/data/material_bug_flags.jsonl