Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender-addons.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJulien Duroure <julien.duroure@gmail.com>2020-07-21 21:27:00 +0300
committerJulien Duroure <julien.duroure@gmail.com>2020-07-21 21:27:00 +0300
commit422c47c5f79ed0e693d6b876b232736d34af83d9 (patch)
treecd1ba2b2e3bbb7e805a457589a628eaa38f035a8
parentbd8e1f3e576f2a00b957789715762491c7fe765d (diff)
glTF exporter: use split normals when exporting morph targets
Thanks scurest!
-rwxr-xr-xio_scene_gltf2/__init__.py2
-rwxr-xr-xio_scene_gltf2/blender/exp/gltf2_blender_extract.py33
2 files changed, 10 insertions, 25 deletions
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]),)