Errors when exporting animations as "NLA tracks" from Blender 3.6.23

Blender V3.6.23

SDK V1.5.7

Asobo MSFS gltf I/O toolkit V5.4.7 (from the SDK)

I’m trying to export an animation with Animation Mode set to “NLA tracks”, but when I try to export I get errors as shown below, and the export does not work. I’ve included a screenshot of the NLA editor and export settings also at the bottom of the post.

I noticed that this has been raised before but as far as I can see, the solution was to lock the editability of the NLA animations. I have tried this and the results were the same.

I did manage to get the export to work by setting the Animation Mode to “Actions”, but I believe that the correct method is to use “NLA Tracks” and to bake all animations - is that correct? Also, by using “Actions” I ended up with two objects in MSFS, one static and one animated. I’m not sure whether this is related to using “Actions” as the Animation Mode.

Any help greatly appreciated.

Below is an extract of the output from the export showing the errors:-

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

19:36:57 | INFO: Extracting primitive: Circle.233Switching to fully guarded memory allocator.

Blender 3.6.23 (hash e467db79ca8c built 2025-06-17 03:22:43)

Blender 3.6.23

Build: 2025-06-17 03:22:43 Windows Release

argv[0] = C:\Program Files\Blender Foundation\Blender 3.6\blender.exe

argv[1] = F:\References\DA20\99c26cb4dcf5.blend

argv[2] = --background

argv[3] = --addons

argv[4] = io_scene_gltf2_msfs_2024

argv[5] = --python-expr

argv[6] = try:

    import bpy

    import traceback

    bpy.ops.msfs2024.multi_export_gltf(export_mode='PRESETS', called_in_subprocess=True)

except:

    traceback.print_exc()

print(‘[SUBPROCESS][ERROR]’)

argv[7] = --debug

argv[8] = 0

Read prefs: “C:\Users\k_l_m\AppData\Roaming\Blender Foundation\Blender\3.6\config\userpref.blend”

Read blend: “F:\References\DA20\99c26cb4dcf5.blend”

scene set 00000136FD7B8068

Traceback (most recent call last):

File “C:\Program Files\Blender Foundation\Blender 3.6\3.6\scripts\addons\io_scene_gltf2_init_.py”, line 852, in execute

return gltf2_blender_export.save(context, export_settings)

File “C:\Program Files\Blender Foundation\Blender 3.6\3.6\scripts\addons\io_scene_gltf2\blender\exp\gltf2_blender_export.py”, line 34, in save

json, buffer = __export(export_settings)

File “C:\Program Files\Blender Foundation\Blender 3.6\3.6\scripts\addons\io_scene_gltf2\blender\exp\gltf2_blender_export.py”, line 51, in __export

__gather_gltf(exporter, export_settings)

File “C:\Program Files\Blender Foundation\Blender 3.6\3.6\scripts\addons\io_scene_gltf2\blender\exp\gltf2_blender_export.py”, line 65, in __gather_gltf

active_scene_idx, scenes, animations = gltf2_blender_gather.gather_gltf2(export_settings)

File “C:\Program Files\Blender Foundation\Blender 3.6\3.6\scripts\addons\io_scene_gltf2\blender\exp\gltf2_blender_gather.py”, line 32, in gather_gltf2

animations += gather_animations(export_settings)

File “C:\Program Files\Blender Foundation\Blender 3.6\3.6\scripts\addons\io_scene_gltf2\blender\exp\animation\gltf2_blender_gather_animations.py”, line 21, in gather_animations

return gather_tracks_animations(export_settings)

File “C:\Program Files\Blender Foundation\Blender 3.6\3.6\scripts\addons\io_scene_gltf2\blender\exp\animation\gltf2_blender_gather_tracks.py”, line 26, in gather_tracks_animations

animations_, merged_tracks = gather_track_animations(obj_uuid, merged_tracks, len(animations), export_settings)

File “C:\Program Files\Blender Foundation\Blender 3.6\3.6\scripts\addons\io_scene_gltf2\blender\exp\animation\gltf2_blender_gather_tracks.py”, line 125, in gather_track_animations

animation = bake_animation(obj_uuid, track_name, export_settings, mode=on_type)

File “C:\Program Files\Blender Foundation\Blender 3.6\3.6\scripts\addons\io_scene_gltf2\blender\exp\animation\gltf2_blender_gather_animation_utils.py”, line 169, in bake_animation

animation = gather_action_object_sampled(obj_uuid, None, animation_key, export_settings)

File “C:\Program Files\Blender Foundation\Blender 3.6\3.6\scripts\addons\io_scene_gltf2\blender\exp\animation\sampled\object\gltf2_blender_gather_object_action_sampled.py”, line 18, in gather_action_object_sampled

channels=__gather_channels(object_uuid, blender_action.name if blender_action else cache_key, export_settings),

File “C:\Program Files\Blender Foundation\Blender 3.6\3.6\scripts\addons\io_scene_gltf2\blender\exp\animation\sampled\object\gltf2_blender_gather_object_action_sampled.py”, line 42, in __gather_channels

return gather_object_sampled_channels(object_uuid, blender_action_name, export_settings)

File “C:\Program Files\Blender Foundation\Blender 3.6\3.6\scripts\addons\io_scene_gltf2\blender\exp\animation\sampled\object\gltf2_blender_gather_object_channels.py”, line 32, in gather_object_sampled_channels

channel = gather_sampled_object_channel(

File “C:\Program Files\Blender Foundation\Blender 3.6\3.6\scripts\addons\io_scene_gltf2\blender\exp\gltf2_blender_gather_cache.py”, line 35, in wrapper_cached

result = func(*args, **kwargs)

File “C:\Program Files\Blender Foundation\Blender 3.6\3.6\scripts\addons\io_scene_gltf2\blender\exp\animation\sampled\object\gltf2_blender_gather_object_channels.py”, line 61, in gather_sampled_object_channel

sampler = __gather_sampler(obj_uuid, channel, action_name, node_channel_is_animated, node_channel_interpolation, export_settings)

File “C:\Program Files\Blender Foundation\Blender 3.6\3.6\scripts\addons\io_scene_gltf2\blender\exp\animation\sampled\object\gltf2_blender_gather_object_channels.py”, line 104, in __gather_sampler

return gather_object_sampled_animation_sampler(

File “C:\Program Files\Blender Foundation\Blender 3.6\3.6\scripts\addons\io_scene_gltf2\blender\exp\gltf2_blender_gather_cache.py”, line 35, in wrapper_cached

result = func(*args, **kwargs)

File “C:\Program Files\Blender Foundation\Blender 3.6\3.6\scripts\addons\io_scene_gltf2\blender\exp\animation\sampled\object\gltf2_blender_gather_object_sampler.py”, line 27, in gather_object_sampled_animation_sampler

keyframes = __gather_keyframes(

File “C:\Program Files\Blender Foundation\Blender 3.6\3.6\scripts\addons\io_scene_gltf2\blender\exp\animation\sampled\object\gltf2_blender_gather_object_sampler.py”, line 62, in __gather_keyframes

keyframes = gather_object_sampled_keyframes(

File “C:\Program Files\Blender Foundation\Blender 3.6\3.6\scripts\addons\io_scene_gltf2\blender\exp\gltf2_blender_gather_cache.py”, line 35, in wrapper_cached

result = func(*args, **kwargs)

File “C:\Program Files\Blender Foundation\Blender 3.6\3.6\scripts\addons\io_scene_gltf2\blender\exp\animation\sampled\object\gltf2_blender_gather_object_keyframes.py”, line 31, in gather_object_sampled_keyframes

mat = get_cache_data(

File “C:\Program Files\Blender Foundation\Blender 3.6\3.6\scripts\addons\io_scene_gltf2\blender\exp\gltf2_blender_gather_cache.py”, line 97, in wrapper_objectcache

result = func(*args)

File “C:\Program Files\Blender Foundation\Blender 3.6\3.6\scripts\addons\io_scene_gltf2\blender\exp\animation\sampled\gltf2_blender_gather_animation_sampling_cache.py”, line 100, in get_cache_data

if 'bone' not in data[obj_uuid][obj_uuid].keys():

KeyError: ‘e0907ede-925b-43fb-b730-af4e59f4605b’

Traceback (most recent call last):

File “C:\MSFS 2024 SDK\Tools\Blender\addons\io_scene_gltf2_msfs_2024\io\exp\msfs_multi_export.py”, line 321, in export

gltf = self.export_blender_3_6(context, file_path, self.msfs_export_settings)

File “C:\MSFS 2024 SDK\Tools\Blender\addons\io_scene_gltf2_msfs_2024\io\exp\msfs_multi_export.py”, line 167, in export_blender_3_6

return bpy.ops.export_scene.gltf(

File “C:\Program Files\Blender Foundation\Blender 3.6\3.6\scripts\modules\bpy\ops.py”, line 113, in call

ret = _op_call(self.idname_py(), None, kw)

RuntimeError: Error: Python: Traceback (most recent call last):

File “C:\Program Files\Blender Foundation\Blender 3.6\3.6\scripts\addons\io_scene_gltf2_init_.py”, line 852, in execute

return gltf2_blender_export.save(context, export_settings)

File “C:\Program Files\Blender Foundation\Blender 3.6\3.6\scripts\addons\io_scene_gltf2\blender\exp\gltf2_blender_export.py”, line 34, in save

json, buffer = __export(export_settings)

File “C:\Program Files\Blender Foundation\Blender 3.6\3.6\scripts\addons\io_scene_gltf2\blender\exp\gltf2_blender_export.py”, line 51, in __export

__gather_gltf(exporter, export_settings)

File “C:\Program Files\Blender Foundation\Blender 3.6\3.6\scripts\addons\io_scene_gltf2\blender\exp\gltf2_blender_export.py”, line 65, in __gather_gltf

active_scene_idx, scenes, animations = gltf2_blender_gather.gather_gltf2(export_settings)

File “C:\Program Files\Blender Foundation\Blender 3.6\3.6\scripts\addons\io_scene_gltf2\blender\exp\gltf2_blender_gather.py”, line 32, in gather_gltf2

animations += gather_animations(export_settings)

File “C:\Program Files\Blender Foundation\Blender 3.6\3.6\scripts\addons\io_scene_gltf2\blender\exp\animation\gltf2_blender_gather_animations.py”, line 21, in gather_animations

return gather_tracks_animations(export_settings)

File “C:\Program Files\Blender Foundation\Blender 3.6\3.6\scripts\addons\io_scene_gltf2\blender\exp\animation\gltf2_blender_gather_tracks.py”, line 26, in gather_tracks_animations

animations_, merged_tracks = gather_track_animations(obj_uuid, merged_tracks, len(animations), export_settings)

File “C:\Program Files\Blender Foundation\Blender 3.6\3.6\scripts\addons\io_scene_gltf2\blender\exp\animation\gltf2_blender_gather_tracks.py”, line 125, in gather_track_animations

animation = bake_animation(obj_uuid, track_name, export_settings, mode=on_type)

File “C:\Program Files\Blender Foundation\Blender 3.6\3.6\scripts\addons\io_scene_gltf2\blender\exp\animation\gltf2_blender_gather_animation_utils.py”, line 169, in bake_animation

animation = gather_action_object_sampled(obj_uuid, None, animation_key, export_settings)

File “C:\Program Files\Blender Foundation\Blender 3.6\3.6\scripts\addons\io_scene_gltf2\blender\exp\animation\sampled\object\gltf2_blender_gather_object_action_sampled.py”, line 18, in gather_action_object_sampled

channels=__gather_channels(object_uuid, blender_action.name if blender_action else cache_key, export_settings),

File “C:\Program Files\Blender Foundation\Blender 3.6\3.6\scripts\addons\io_scene_gltf2\blender\exp\animation\sampled\object\gltf2_blender_gather_object_action_sampled.py”, line 42, in __gather_channels

return gather_object_sampled_channels(object_uuid, blender_action_name, export_settings)

File “C:\Program Files\Blender Foundation\Blender 3.6\3.6\scripts\addons\io_scene_gltf2\blender\exp\animation\sampled\object\gltf2_blender_gather_object_channels.py”, line 32, in gather_object_sampled_channels

channel = gather_sampled_object_channel(

File “C:\Program Files\Blender Foundation\Blender 3.6\3.6\scripts\addons\io_scene_gltf2\blender\exp\gltf2_blender_gather_cache.py”, line 35, in wrapper_cached

result = func(*args, **kwargs)

File “C:\Program Files\Blender Foundation\Blender 3.6\3.6\scripts\addons\io_scene_gltf2\blender\exp\animation\sampled\object\gltf2_blender_gather_object_channels.py”, line 61, in gather_sampled_object_channel

sampler = __gather_sampler(obj_uuid, channel, action_name, node_channel_is_animated, node_channel_interpolation, export_settings)

File “C:\Program Files\Blender Foundation\Blender 3.6\3.6\scripts\addons\io_scene_gltf2\blender\exp\animation\sampled\object\gltf2_blender_gather_object_channels.py”, line 104, in __gather_sampler

return gather_object_sampled_animation_sampler(

File “C:\Program Files\Blender Foundation\Blender 3.6\3.6\scripts\addons\io_scene_gltf2\blender\exp\gltf2_blender_gather_cache.py”, line 35, in wrapper_cached

result = func(*args, **kwargs)

File “C:\Program Files\Blender Foundation\Blender 3.6\3.6\scripts\addons\io_scene_gltf2\blender\exp\animation\sampled\object\gltf2_blender_gather_object_sampler.py”, line 27, in gather_object_sampled_animation_sampler

keyframes = __gather_keyframes(

File “C:\Program Files\Blender Foundation\Blender 3.6\3.6\scripts\addons\io_scene_gltf2\blender\exp\animation\sampled\object\gltf2_blender_gather_object_sampler.py”, line 62, in __gather_keyframes

keyframes = gather_object_sampled_keyframes(

File “C:\Program Files\Blender Foundation\Blender 3.6\3.6\scripts\addons\io_scene_gltf2\blender\exp\gltf2_blender_gather_cache.py”, line 35, in wrapper_cached

result = func(*args, **kwargs)

File “C:\Program Files\Blender Foundation\Blender 3.6\3.6\scripts\addons\io_scene_gltf2\blender\exp\animation\sampled\object\gltf2_blender_gather_object_keyframes.py”, line 31, in gather_object_sampled_keyframes

mat = get_cache_data(

File “C:\Program Files\Blender Foundation\Blender 3.6\3.6\scripts\addons\io_scene_gltf2\blender\exp\gltf2_blender_gather_cache.py”, line 97, in wrapper_objectcache

result = func(*args)

File “C:\Program Files\Blender Foundation\Blender 3.6\3.6\scripts\addons\io_scene_gltf2\blender\exp\animation\sampled\gltf2_blender_gather_animation_sampling_cache.py”, line 100, in get_cache_data

if 'bone' not in data[obj_uuid][obj_uuid].keys():

KeyError: ‘e0907ede-925b-43fb-b730-af4e59f4605b’

Location: C:\Program Files\Blender Foundation\Blender 3.6\3.6\scripts\modules\bpy\ops.py:113

19:36:57 | INFO: Primitives created: 1

19:36:57 | INFO: Extracting primitive: Circle.234

19:36:57 | INFO: Primitives created: 1

If this is the same error - you referenced in my bug report, then make sure you have no animations in edit mode (green) and you have pushed down ALL you animations to NLA tracks.

I am in Blender 4.2 LTS and SU5 Beta SDK exporter 6.4.4

Hello @mossychops3092 ,

Can you send us your .blend to reproduce the issue please ?
See 3) Provide Private Content

Regards,
Boris

Hello @Boris,

Apologies for not following protocol. I’ve now sent my .blend file to PrivateContent as required.

Thanks,

Ken.

Hi @mossychops3092 ,

No need to apologize, that’s exactly what the community section is for :wink:
We checked your .blend file and can confirm that the issue is coming from Blender itself (khronos) and not the exporter.

We also tested it with Blender 4.5 and did not encounter any errors, so you can use that version instead.

Regards,
Boris

Hi @Boris ,

I can now export “NLA tracks” from Blender thanks. I tried with version 4.5 LTS but could not get the MSFS2024 glTF addon to install. So I re-read @DA40CGDFQ ‘s post and installed Blender version 4.2 LTS, which exports without problem now. So thanks @DA40CGDFQ and @Boris for the help.

Regards,

Ken