diff --git a/io_scene_gltf2/__init__.py b/io_scene_gltf2/__init__.py index 7e64f1812619bab8b869fae9a0ba09be5d49385a..02fc114f4455730ad31215038098aa19f402bdf0 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 704a7b4ee0d764f398290e2d5821bc7a2ce21474..c28fddf964363cadba962ccd03480ddce916a8ae 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]),)