diff options
Diffstat (limited to 'io_scene_gltf2/blender/exp/gltf2_blender_gather_drivers.py')
-rw-r--r-- | io_scene_gltf2/blender/exp/gltf2_blender_gather_drivers.py | 18 |
1 files changed, 13 insertions, 5 deletions
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 1f82c2b3..4e77f60e 100644 --- a/io_scene_gltf2/blender/exp/gltf2_blender_gather_drivers.py +++ b/io_scene_gltf2/blender/exp/gltf2_blender_gather_drivers.py @@ -5,13 +5,20 @@ from io_scene_gltf2.blender.exp.gltf2_blender_gather_cache import skdriverdiscovercache, skdrivervalues from io_scene_gltf2.blender.com.gltf2_blender_data_path import get_target_object_path - @skdriverdiscovercache -def get_sk_drivers(blender_armature): +def get_sk_drivers(blender_armature_uuid, export_settings): + + blender_armature = export_settings['vtree'].nodes[blender_armature_uuid].blender_object drivers = [] - for child in blender_armature.children: + for child_uuid in export_settings['vtree'].nodes[blender_armature_uuid].children: + + if export_settings['vtree'].nodes[child_uuid].blender_type == "BONE": + continue + + child = export_settings['vtree'].nodes[child_uuid].blender_object + if not child.data: continue # child.data can be an armature - which has no shapekeys @@ -63,13 +70,14 @@ def get_sk_drivers(blender_armature): all_sorted_channels.append(existing_idx[i]) if len(all_sorted_channels) > 0: - drivers.append((child, tuple(all_sorted_channels))) + drivers.append((child_uuid, tuple(all_sorted_channels))) return tuple(drivers) @skdrivervalues -def get_sk_driver_values(blender_object, frame, fcurves): +def get_sk_driver_values(blender_object_uuid, frame, fcurves, export_settings): sk_values = [] + blender_object = export_settings['vtree'].nodes[blender_object_uuid].blender_object for f in [f for f in fcurves if f is not None]: sk_values.append(blender_object.data.shape_keys.path_resolve(get_target_object_path(f.data_path)).value) |