glTF exporter: add some checks on animation data, fixing error with weird files

This commit is contained in:
Julien Duroure 2019-08-07 07:02:50 +02:00
parent 26c53aa581
commit 72599842ab
3 changed files with 6 additions and 1 deletions

View File

@ -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": (0, 9, 44),
"version": (0, 9, 45),
'blender': (2, 80, 0),
'location': 'File > Import-Export',
'description': 'Import-Export as glTF 2.0',

View File

@ -148,6 +148,9 @@ def __gather_target(channels: typing.Tuple[bpy.types.FCurve],
def __get_channel_groups(blender_action: bpy.types.Action, blender_object: bpy.types.Object, export_settings):
targets = {}
for fcurve in blender_action.fcurves:
# In some invalid files, channel hasn't any keyframes ... this channel need to be ignored
if len(fcurve.keyframe_points) == 0:
continue
try:
target_property = get_target_property_name(fcurve.data_path)
except:

View File

@ -181,6 +181,8 @@ def gather_keyframes(blender_object_if_armature: typing.Optional[bpy.types.Objec
else:
# Just use the keyframes as they are specified in blender
frames = [keyframe.co[0] for keyframe in channels[0].keyframe_points]
# some weird files have duplicate frame at same time, removed them
frames = sorted(set(frames))
for i, frame in enumerate(frames):
key = Keyframe(channels, frame, bake_channel)
# key.value = [c.keyframe_points[i].co[0] for c in action_group.channels]