Sometimes I need only showing reflection of a surface just like uv gloss oil,transmission of MeshPhysicalMaterial is not what I want,because when I rotate the mesh that have high envMapIntensity to observe it from a low angle it becomes very bright and almost totally white,it doesn’t look like real uv gloss oil,I found that MeshPhongMaterial won’t be that bright in the situation,but can’t make it transparent.
Any available solution to make such material with three.js?
I don’t think a .transmission property is likely to be added to MeshPhongMaterial. There are other properties available on MeshPhysicalMaterial like .roughness or .reflectivity, which may help?
it doesn’t look like real uv gloss oil …
I’m not sure what this means; could you share an image of what you’re looking for? I guess I’m imagining thin film / iridescence, like:
If so, see the three.js fresnel example. I could imagine options for iridescence being added to MeshPhysicalMaterial in the future, but it isn’t planned at the moment.
The glossy part of the surface is a decal that sticks close to the mesh that under it, it’s a MeshPhysicalMaterial with transmission turned on.You can see when it’s rotated the bright part of envMap makes it totally white.
It might help to share the rest of the settings on the material. But I’m not sure this is the right application of transmission, perhaps use a single material with clearcoat just on that area, instead? Here’s an example of how that might look: