OBJ numbers its corners from one. The first vertex is 1, not 0. Plenty of exporters, and plenty of people who have spent their lives in other formats, write the first face as 0 1 2. If every face index in the file is zero-based and still lands inside the vertex list, this page shifts them to the one-based order OBJ expects. The bench says so. You are not looking at a silent reinterpretation of a single broken corner.
A mix is different. A face that uses 0 beside a face that uses an index past the end of the vertex list is not a consistent dialect. It is a file that two writers touched, or a file that was cut in half. The page refuses it. Guessing which half was meant would produce an arch that looks familiar and is attached to the wrong points. Refusal is the result you can explain in one sentence to the person who exported it.
Relative indexes, the negative numbers some OBJ files use to mean “count back from here,” are counted when they appear. They are not a mystery the download is allowed to drop. What the download does drop is a face that was removed because it was degenerate or an exact duplicate. That face does not keep its texture coordinate. The coordinate belonged to a corner of a face that is no longer in the list.
The illustrative rim is a small arch of lines, including a face that starts at zero, a duplicate, and a degenerate face, plus an object name, a group, a material name, and an mtllib line. It is labeled illustrative. It is not a scan. It lets you see the shift and the surviving names before you open a clinic file.


