diff options
author | Julien Duroure <julien.duroure@gmail.com> | 2020-09-17 19:53:03 +0300 |
---|---|---|
committer | Julien Duroure <julien.duroure@gmail.com> | 2020-09-17 19:53:03 +0300 |
commit | 051770b36de923a34a023ccd598dd315d2428f3a (patch) | |
tree | 2f642864d3680bc00c9d5fddb4ed11d76ac2deb3 | |
parent | f8e313f6267742a10b8df07977182e179fa0e6f4 (diff) |
glTF exporter: Fix T79104: avoid zero normals when degenerate tris
-rwxr-xr-x | io_scene_gltf2/__init__.py | 2 | ||||
-rwxr-xr-x | io_scene_gltf2/blender/exp/gltf2_blender_extract.py | 6 |
2 files changed, 7 insertions, 1 deletions
diff --git a/io_scene_gltf2/__init__.py b/io_scene_gltf2/__init__.py index 873b844d..24ccb2e0 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 ca38aa72..5b9e68f5 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 |