High Roughness, Sharp Highlights: Auditing a glTF Material in Three.js
An imported car-body model still showed sharp highlights on its hood and rear fender after switching to a preset labeled Matte . The overall reflection became weaker, but some bright patches remained. That observation prompted a material audit: what did the preset actually change, and what properties had arrived with the imported asset? Affiliation: This case comes from WrapPrism, a project I…
A BMW M4 G82 ADRO-kit car body study was imported into a Three.js environment and rendered using a preset labeled Matte. The rendered image showed sharp highlights on the hood and rear fender despite the overall reflection becoming weaker. This prompted an audit of the material preset to determine what changes it introduced and what properties were carried over from the original imported asset.
The two parameters that differed between the Gloss, Satin, and Matte presets were roughness and metalness. Roughness changed between Gloss and Satin, while Matte also changed metalness. Consequently, the comparison between these three presets did not isolate roughness as a single variable. The original values for these parameters were defined in the MeshStandardMaterial documentation, but their rationale was not established and no physical calibration was performed.
The original GLB file contained another reflective layer in the form of a clearcoat extension. This layer has its own intensity and roughness, and can make a rough base material appear smoother. When the clearcoat extension is present, the GLTFLoader maps the glTF factors to the clearcoat properties of MeshPhysicalMaterial. Changing the base roughness to 0.86, while keeping the clearcoat roughness at 0.04, can explain the remaining highlights observed in the rendered image.
Written by urgent.news from Dev.to's reporting — not their text. Machine-written — may contain errors; check the original before relying on it.