[Bf-extensions-cvs] [a0cad0df] master: glTF exporter: export shapekeys names as target names

Julien Duroure noreply at git.blender.org
Tue May 28 22:51:38 CEST 2019


Commit: a0cad0df8b2c82bf50dca39778c0d57a405e8896
Author: Julien Duroure
Date:   Tue May 28 17:38:29 2019 +0200
Branches: master
https://developer.blender.org/rBAa0cad0df8b2c82bf50dca39778c0d57a405e8896

glTF exporter: export shapekeys names as target names

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

M	io_scene_gltf2/blender/exp/gltf2_blender_gather_mesh.py

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

diff --git a/io_scene_gltf2/blender/exp/gltf2_blender_gather_mesh.py b/io_scene_gltf2/blender/exp/gltf2_blender_gather_mesh.py
index 9106c941..7e24319f 100755
--- a/io_scene_gltf2/blender/exp/gltf2_blender_gather_mesh.py
+++ b/io_scene_gltf2/blender/exp/gltf2_blender_gather_mesh.py
@@ -14,6 +14,7 @@
 
 import bpy
 from typing import Optional, Dict, List, Any
+from .gltf2_blender_export_keys import MORPH
 from io_scene_gltf2.blender.exp.gltf2_blender_gather_cache import cached
 from io_scene_gltf2.io.com import gltf2_io
 from io_scene_gltf2.blender.exp import gltf2_blender_gather_primitives
@@ -68,8 +69,23 @@ def __gather_extras(blender_mesh: bpy.types.Mesh,
                     modifiers: Optional[bpy.types.ObjectModifiers],
                     export_settings
                     ) -> Optional[Dict[Any, Any]]:
+    extras = {}
+
     if export_settings['gltf_extras']:
-        return gltf2_blender_generate_extras.generate_extras(blender_mesh)
+        extras = gltf2_blender_generate_extras.generate_extras(blender_mesh)
+
+    if export_settings[MORPH] and blender_mesh.shape_keys:
+        morph_max = len(blender_mesh.shape_keys.key_blocks) - 1
+        if morph_max > 0:
+            target_names = []
+            for blender_shape_key in blender_mesh.shape_keys.key_blocks:
+                if blender_shape_key != blender_shape_key.relative_key:
+                    target_names.append(blender_shape_key.name)
+            extras['targetNames'] = target_names
+
+    if extras:
+        return extras
+
     return None
 
 
@@ -94,5 +110,19 @@ def __gather_weights(blender_mesh: bpy.types.Mesh,
                      modifiers: Optional[bpy.types.ObjectModifiers],
                      export_settings
                      ) -> Optional[List[float]]:
-    return None
+
+    if not export_settings[MORPH] or not blender_mesh.shape_keys:
+        return None
+
+    morph_max = len(blender_mesh.shape_keys.key_blocks) - 1
+    if morph_max <= 0:
+        return None
+
+    weights = []
+
+    for blender_shape_key in blender_mesh.shape_keys.key_blocks:
+        if blender_shape_key != blender_shape_key.relative_key:
+            weights.append(blender_shape_key.value)
+
+    return weights



More information about the Bf-extensions-cvs mailing list