That was kind of fun. I did manage to track down the issue. It is exported in a way that is parsed incorrectly.

If you look at line 2901 of your file, you will see the faces defined as:

f 289/1/289 283/1/283 284/1/284 285/4/285 286/5/286 287/1/287 288/1/288

So, 289 is a point in every triangle and it will take 2 triangles from each following set of vertices.

eg: {289,283,284}, {289,284,285}, {289,285,286}, {289,287,288}. Note that 289 is the first point in all triangles and I have drawn the â€śfan tesselationâ€ť in the attachment.

If you look at line 2903, to work in BabylonJS and many other programs (even Paint3D) to match then it should be:

f 296/1/296 290/1/290 291/1/291 292/1/292 293/1/293 294/6/294 295/2/295

But it is:

f 291/1/291 290/1/290 296/1/296 295/2/295 294/6/294 293/1/293 292/1/292

What the OBJ file loader is doing is taking the first position 291 and joining to 293, which is what is giving you those weird faces. So, the current algorithm works on the first group of faces, but not on the second. It would work on the 2nd group if it was done backwards or if the tessellation looked more intelligently for choosing a pivot point with no overlap (if possible). You have already marked as solved, so assuming there is nothing to do here.