I’m not really sure this is the best place to ask this question as I am fairly new to 3d asset creation. I have mostly dealt with the code side of things. My goal is to load this file using my own renderer engine but my renderer and threejs have a very similar output and both have the same problem so I am hoping someone here can help me out. I assume it is something with my model as the issue doesn’t present itself in any of the gltf sample models.
So I have created this stylized model in blender. It has the standard textures for glTF and nothing more for the shader. It’s fairly low poly with a high poly normal map baked into it. It looks as I would like in blender, however, when I export it as glb and load it into the threejs viewer there are visible seams that cross over some of the quads. I can’t figure out where they are coming from.
I know gltf doesn’t really have quads and they get converted to triangles so I have tried a few things to try to correct it.
a. Mesh -> Clean Up -> Make Planar Faces
b. Scale the faces along the normal axis to 0, AKA a manual make planar
c. Triangulate the quads before export
d. various AutoSmooth settings
None seem to have any affect on it.
I tried the model in threejs and babylonjs and while still slightly visible in babylon, it’s significantly less so.
At first I thought it might just be the blender exporter but if I re-import in blender, it looks fine. If I load the glb file in Clay Viewer it looks fine. I’m at a loss for what I am doing wrong.
Is this a common problem and is there any way to solve it, or at least minimize the effect?
I have attached the glb file and some screen shots of the various renderers. I can upload the Blender file and textures if that helps at all.
@donmccurdy That does look much better. I’m using the same URL as you there. Maybe it’s my export. I’m using Blender 2.81. is there anything else I need to do besides click the Tangents checkbox on the export?
Ah that makes sense. Sorry for the confusion there, I wish we had a way to display those warnings in the Blender exporter more clearly.
Do you think I should still open a bug in threejs or is this expected behavior?
When tangents aren’t present, three.js approximates them with derivatives in the shader. Whether that methodology could be improved for the seams you see here, I’m afraid I have no idea.
Glad you were able to reach a solution, and thanks for writing up the details!