[Bf-extensions-cvs] [422c47c5] master: glTF exporter: use split normals when exporting morph targets

Julien Duroure noreply at git.blender.org
Tue Jul 21 20:33:17 CEST 2020


Commit: 422c47c5f79ed0e693d6b876b232736d34af83d9
Author: Julien Duroure
Date:   Tue Jul 21 20:27:00 2020 +0200
Branches: master
https://developer.blender.org/rBA422c47c5f79ed0e693d6b876b232736d34af83d9

glTF exporter: use split normals when exporting morph targets

Thanks scurest!

===================================================================

M	io_scene_gltf2/__init__.py
M	io_scene_gltf2/blender/exp/gltf2_blender_extract.py

===================================================================

diff --git a/io_scene_gltf2/__init__.py b/io_scene_gltf2/__init__.py
index 7e64f181..02fc114f 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, Norbert Nopper, Urs Hanselmann, Moritz Becher, Benjamin Schmithüsen, Jim Eckerlein, and many external contributors',
-    "version": (1, 3, 36),
+    "version": (1, 3, 37),
     '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 704a7b4e..c28fddf9 100755
--- a/io_scene_gltf2/blender/exp/gltf2_blender_extract.py
+++ b/io_scene_gltf2/blender/exp/gltf2_blender_extract.py
@@ -34,10 +34,9 @@ class Prim:
         self.indices = []
 
 class ShapeKey:
-    def __init__(self, shape_key, vertex_normals, polygon_normals):
+    def __init__(self, shape_key, split_normals):
         self.shape_key = shape_key
-        self.vertex_normals = vertex_normals
-        self.polygon_normals = polygon_normals
+        self.split_normals = split_normals
 
 
 #
@@ -210,16 +209,14 @@ def extract_primitives(glTF, blender_mesh, library, blender_object, blender_vert
         for blender_shape_key in blender_mesh.shape_keys.key_blocks:
             if blender_shape_key == blender_shape_key.relative_key or blender_shape_key.mute:
                 continue
+
+            split_normals = None
             if use_morph_normals:
-                vertex_normals = blender_shape_key.normals_vertex_get()
-                polygon_normals = blender_shape_key.normals_polygon_get()
-            else:
-                vertex_normals = None
-                polygon_normals = None
+                split_normals = blender_shape_key.normals_split_get()
+
             shape_keys.append(ShapeKey(
                 blender_shape_key,
-                vertex_normals,
-                polygon_normals,
+                split_normals,
             ))
 
 
@@ -330,20 +327,8 @@ def extract_primitives(glTF, blender_mesh, library, blender_object, blender_vert
                 vert += ((v_morph[0], v_morph[1], v_morph[2]),)
 
                 if use_morph_normals:
-                    if blender_polygon.use_smooth:
-                        normals = shape_key.vertex_normals
-                        n_morph = Vector((
-                            normals[vertex_index * 3 + 0],
-                            normals[vertex_index * 3 + 1],
-                            normals[vertex_index * 3 + 2],
-                        ))
-                    else:
-                        normals = shape_key.polygon_normals
-                        n_morph = Vector((
-                            normals[blender_polygon.index * 3 + 0],
-                            normals[blender_polygon.index * 3 + 1],
-                            normals[blender_polygon.index * 3 + 2],
-                        ))
+                    normals = shape_key.split_normals
+                    n_morph = Vector(normals[loop_index * 3 : loop_index * 3 + 3])
                     n_morph = n_morph - n  # store delta
                     vert += ((n_morph[0], n_morph[1], n_morph[2]),)



More information about the Bf-extensions-cvs mailing list