diff --git a/io_scene_gltf2/__init__.py b/io_scene_gltf2/__init__.py index 873b844dd6ff6ac92ab8d4e3739b0a1e5d08685f..24ccb2e03433784185b3b2f502db152317d55d28 100755 --- a/io_scene_gltf2/__init__.py +++ b/io_scene_gltf2/__init__.py @@ -15,7 +15,7 @@ bl_info = { 'name': 'glTF 2.0 format', 'author': 'Julien Duroure, Scurest, Norbert Nopper, Urs Hanselmann, Moritz Becher, Benjamin SchmithĂĽsen, Jim Eckerlein, and many external contributors', - "version": (1, 4, 27), + "version": (1, 4, 28), 'blender': (2, 90, 0), 'location': 'File > Import-Export', 'description': 'Import-Export as glTF 2.0', diff --git a/io_scene_gltf2/blender/exp/gltf2_blender_extract.py b/io_scene_gltf2/blender/exp/gltf2_blender_extract.py index ca38aa7250fe6c6776c21a1373ac4157872ac6c3..5b9e68f51775ea136bba16e8ca3823eabedf9ed8 100755 --- a/io_scene_gltf2/blender/exp/gltf2_blender_extract.py +++ b/io_scene_gltf2/blender/exp/gltf2_blender_extract.py @@ -348,6 +348,12 @@ def __get_normals(blender_mesh, key_blocks, armature, blender_object, export_set ns[:] = __apply_mat_to_all(normal_transform, ns) __normalize_vecs(ns) + for ns in [normals, *morph_normals]: + # Replace zero normals with the unit UP vector. + # Seems to happen sometimes with degenerate tris? + is_zero = ~ns.any(axis=1) + ns[is_zero, 2] = 1 + # glTF stores deltas in morph targets for ns in morph_normals: ns -= normals