diff options
author | Julien Duroure <julien.duroure@gmail.com> | 2021-04-18 20:14:12 +0300 |
---|---|---|
committer | Julien Duroure <julien.duroure@gmail.com> | 2021-04-18 20:14:12 +0300 |
commit | 5ef60cb44a0cdf1e19a8a327995504d5f54ed157 (patch) | |
tree | 3fb4461b2dc4df307e0c75bf2eb1aabe6f8a7f07 /io_scene_gltf2 | |
parent | d04ee04c457335781863ca17175da323e0f65ff1 (diff) |
glTF exporter: fix shapekey export in some cases
Diffstat (limited to 'io_scene_gltf2')
-rwxr-xr-x | io_scene_gltf2/__init__.py | 4 | ||||
-rwxr-xr-x | io_scene_gltf2/blender/exp/gltf2_blender_extract.py | 13 |
2 files changed, 11 insertions, 6 deletions
diff --git a/io_scene_gltf2/__init__.py b/io_scene_gltf2/__init__.py index 8c1fb947..b1be1a1a 100755 --- a/io_scene_gltf2/__init__.py +++ b/io_scene_gltf2/__init__.py @@ -15,8 +15,8 @@ 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, 7, 0), - 'blender': (2, 93, 0), + "version": (1, 6, 10), + 'blender': (2, 91, 0), 'location': 'File > Import-Export', 'description': 'Import-Export as glTF 2.0', 'warning': '', diff --git a/io_scene_gltf2/blender/exp/gltf2_blender_extract.py b/io_scene_gltf2/blender/exp/gltf2_blender_extract.py index 0492c901..dc508d18 100755 --- a/io_scene_gltf2/blender/exp/gltf2_blender_extract.py +++ b/io_scene_gltf2/blender/exp/gltf2_blender_extract.py @@ -374,7 +374,8 @@ def extract_primitives(glTF, blender_mesh, library, blender_object, blender_vert def __get_positions(blender_mesh, key_blocks, armature, blender_object, export_settings): locs = np.empty(len(blender_mesh.vertices) * 3, dtype=np.float32) - blender_mesh.vertices.foreach_get('co', locs) + source = key_blocks[0].relative_key.data if key_blocks else blender_mesh.vertices + source.foreach_get('co', locs) locs = locs.reshape(len(blender_mesh.vertices), 3) morph_locs = [] @@ -408,10 +409,14 @@ def __get_positions(blender_mesh, key_blocks, armature, blender_object, export_s def __get_normals(blender_mesh, key_blocks, armature, blender_object, export_settings): """Get normal for each loop.""" - blender_mesh.calc_normals_split() + if key_blocks: + normals = key_blocks[0].relative_key.normals_split_get() + normals = np.array(normals, dtype=np.float32) + else: + normals = np.empty(len(blender_mesh.loops) * 3, dtype=np.float32) + blender_mesh.calc_normals_split() + blender_mesh.loops.foreach_get('normal', normals) - normals = np.empty(len(blender_mesh.loops) * 3, dtype=np.float32) - blender_mesh.loops.foreach_get('normal', normals) normals = normals.reshape(len(blender_mesh.loops), 3) morph_normals = [] |