From 902b8ba11efa98006b3a247e4549ca69fb458309 Mon Sep 17 00:00:00 2001
From: Julien Duroure <julien.duroure@gmail.com>
Date: Mon, 23 Aug 2021 19:08:27 +0200
Subject: [PATCH] glTF exporter: fix crash when trying to export some muted
 driver(s)

---
 io_scene_gltf2/__init__.py                                 | 2 +-
 io_scene_gltf2/blender/exp/gltf2_blender_gather_drivers.py | 6 +++++-
 2 files changed, 6 insertions(+), 2 deletions(-)

diff --git a/io_scene_gltf2/__init__.py b/io_scene_gltf2/__init__.py
index ab7aebb46..8787fe2e6 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, Scurest, Norbert Nopper, Urs Hanselmann, Moritz Becher, Benjamin Schmithüsen, Jim Eckerlein, and many external contributors',
-    "version": (1, 7, 19),
+    "version": (1, 7, 20),
     'blender': (2, 91, 0),
     'location': 'File > Import-Export',
     'description': 'Import-Export as glTF 2.0',
diff --git a/io_scene_gltf2/blender/exp/gltf2_blender_gather_drivers.py b/io_scene_gltf2/blender/exp/gltf2_blender_gather_drivers.py
index 4dcad66f1..561f246c1 100644
--- a/io_scene_gltf2/blender/exp/gltf2_blender_gather_drivers.py
+++ b/io_scene_gltf2/blender/exp/gltf2_blender_gather_drivers.py
@@ -56,6 +56,9 @@ def get_sk_drivers(blender_armature):
                 sk_name = child.data.shape_keys.path_resolve(get_target_object_path(sk_c.data_path)).name
             except:
                 continue
+            # Do not take into account this driver if corresponding SK is disabled
+            if child.data.shape_keys.key_blocks[sk_name].mute is True:
+                continue
             idx = shapekeys_idx[sk_name]
             idx_channel_mapping.append((shapekeys_idx[sk_name], sk_c))
         existing_idx = dict(idx_channel_mapping)
@@ -65,7 +68,8 @@ def get_sk_drivers(blender_armature):
             else:
                 all_sorted_channels.append(existing_idx[i])
 
-        drivers.append((child, tuple(all_sorted_channels)))
+        if len(all_sorted_channels) > 0:
+            drivers.append((child, tuple(all_sorted_channels)))
 
     return tuple(drivers)
 
-- 
GitLab