# Why OBJ export writes face normals instead of vertex normals

I am confused by the content of OBJ Blender exports. When I export a (default) cube object (8 vertices, 6 faces) to OBJ and then inspect the OBJ file, the "vn" entries obviously correspond to face normals and not to vertex normals. That is clear from the values and the fact that there are only 6 "vn" entries. Every "f" entry then points to the very same normal for each vertex in that line. Should not there be exactly 8 "vn" entries (since for the cube model there will be exactly 8 distinct vertex normals) which represent vertex (not face) normals as specified by Wavefront OBJ format? Furthermore, should not each "f" entry point to a different normal for each vertex?

I used Blender versions 2.79 and 2.80, both act the same. While exporting the OBJ file, only "Write Normals" option is checked. Here is the content of the generated OBJ:

# Blender v2.80 (sub 37) OBJ File: ''
# www.blender.org
v 1.000000 1.000000 -1.000000
v 1.000000 -1.000000 -1.000000
v 1.000000 1.000000 1.000000
v 1.000000 -1.000000 1.000000
v -1.000000 1.000000 -1.000000
v -1.000000 -1.000000 -1.000000
v -1.000000 1.000000 1.000000
v -1.000000 -1.000000 1.000000
vn 0.0000 1.0000 0.0000
vn 0.0000 0.0000 1.0000
vn -1.0000 0.0000 0.0000
vn 0.0000 -1.0000 0.0000
vn 1.0000 0.0000 0.0000
vn 0.0000 0.0000 -1.0000
f 1//1 5//1 7//1 3//1
f 4//2 3//2 7//2 8//2
f 8//3 7//3 5//3 6//3
f 6//4 2//4 4//4 8//4
f 2//5 1//5 3//5 4//5
f 6//6 5//6 1//6 2//6


They are vertex normals. But because your cube is flat shaded, there are only 6 unique vector directions. In the obj file there are no duplicates. If you smooth shade your cube, you'll get 8 vn entries.