Welcome to ShapeNet Q&A, where you can ask questions and receive answers from other members of the community.

Does anyone else find that the models load incorrectly in Blender?

+9 votes

I've noticed that the .obj files in ShapeNet v2 don't load very well in Blender and other programs like MeshLab, but the Windows 3D Builder works just fine.

I've asked on Stack Overflow and apparently these models have 'bad topology'. Has anyone managed to fix this?

Solid view

Textured view

asked May 7, 2017 by cjxd (250 points)
Does anyone know if this is fixed in shapenet v2?

4 Answers

0 votes
I've experienced the same thing, and been told the same regarding the topology. Different rendering programs seem to handle them just fine, but Blender seems very particular about the topology.

I know I've seen people using (some incarnation) of this dataset with blender. I'm curious which data they used.

I was told to try using meshlab to fix the topology but haven't investigated that further.
answered May 25, 2017 by jjennings955 (150 points)
0 votes

Deactivate Auto Smooth in Properties > Data > Normals > Autosmooth for every mesh in blender and afterwards apply an edge split modifier for all meshes.

answered Sep 25, 2018 by SleepOnTree (180 points)
0 votes

In the case of the ShapeNet car models, the issue seems to be that there are duplicate faces, so how the rendering software handles those determines how the models will look. For my tool using ModernGL as the graphics engine, turning on back-face culling fixed the issue. Here is model ShapeNetCore/02958343/114b662c64caba81bb07f8c2248e54bc with back-face culling off:

and with back-face culling on:

Enabling back-face culling in Blender doesn't produce the same results, but this is hopefully enough information to help you fix the issue (I have very little experience with Blender). More information can be found on my GitHub issue here.

answered Mar 18, 2019 by airalcorn2 (200 points)
+2 votes

I found out how to solve this problem.

You can use obj2gltf: https://github.com/CesiumGS/obj2gltf. Firstly convert all your obj models to glb/gltf model. Then, when you use blender to import it, write a script or mannually turn face culling off for all textures. Then, disable the auto normal smoothing. Then you will view the model properly.

answered Mar 23, 2020 by UncleM (180 points)
Thank you for this! Converting all the objects to .gltf with that application fixed it for me too. I also had to put the textures (.jpg images) in the same directory as the .obj files when converting, otherwise it couldn't find the textures. That was enough for me, I did not need to turn off face-culling or auto smoothing.

I am using the ShapeNetSem objects in Blender 2.83.
I am not sure my findings match yours?

Using obj2gltf on the model above, results in these outcomes:

(post contains GLTF binary model, and screenshots in a GL and PBR renderer)