JKHub CommlinkCouncil Review

The State of JKA Animation Tooling: Blender vs. Legacy Workflows

A technical discussion regarding the challenges of importing and exporting the massive JKA _humanoid.gla in Blender. Users explore performance bottlenecks in Blender's keyframe handling, the merits of XSI vs. FBX, and recent community efforts to optimize GLA merging and Ghoul2 property support.

Channel: #models-skinsSource window: 2026-03-26 14:21 - 2026-04-16 15:3811 posts4 views0 votes
Tags: JKAGLABlenderAnimationGhoul2
Contributors: bearbiter (13), maui.94 (12), minilogoguy18 (6), mrwonko (4), .mjt (3), +5 more
Comms log
[2026-03-26 14:21] <bearbiter> I really wish an IA to handle JKA Skeleton would exists 😢
[2026-03-26 14:21] <bearbiter> (such a pain in the ass)
[2026-03-26 14:22] <mrwonko> Better tooling would be nice.
[2026-03-26 14:52] <bearbiter> and cross compat also. / The blender + merge tool are not much compatible with 3DS Max skeleton 🙁
[2026-03-28 06:41] <maui.94> Merge tool?
[2026-03-28 06:42] <maui.94> Who uses 3ds max still while Blender already beated it for years now? 🤓
[2026-03-28 07:59] <tempust85> It's my opinion that while Blender can export directly to GLA, it's more suitable to creating small animsets or creating new animations to merge into existing GLAs. 3ds Max and Softimage even are only really needed for the XSI exporter to compile new anims with the base humanoid anim source with carcass, or creating larger animsets with more ease. One day I'll get around to finishing up an XSI exporter for Blender. 😄 (edited)
[2026-03-28 17:54] <minilogoguy18> So are the blender people bringing the entire GLA into blender, adding a small amount of animations and just exporting the entire thing?
[2026-03-28 17:58] <soupinthegrass> Nah to import the entire humanoid gla would take an insane amount of time, I'm not even sure it'd finish without crashing. If you wanna import from it you can select a range of frames to keep it to just what's needed
[2026-03-28 17:59] <soupinthegrass> Other than that I'm not sure about merging back into it these days since I've only been working with a gla I made brand new (edited)
[2026-03-28 17:59] <minilogoguy18> Yeah I mean the last project I did was the same
[2026-03-28 18:00] <minilogoguy18> I rarely ever bothered with _humanoid.gla modding just because it felt like more trouble than it was worth
[2026-03-28 18:00] <minilogoguy18> Also breaking MP compatibility wasn't worth it either since I played online 90% of the time (edited)
[2026-03-28 18:13] <maui.94> Concerning the animations, you can import the entire thing but it takes up to 15-20 minutes because blender can only handle 1 thread. If we had the possibility to multi thread it, the speed but be increased tremendously
[2026-03-28 18:14] <maui.94> As for the crashing, it looks like it crashes because it uses up your entire resources to load them. (This was in previous versions of mrwonko's plugin, this has been fixed in later versions)
[2026-03-28 19:25] <mrwonko> It has never crashed for me, but it takes hours. It's impractical.
[2026-03-28 19:26] <mrwonko> The issue is not really threading, just that adding a frame gets slower with each frame
[2026-03-28 19:47] <maui.94> It's because it goes over each and every bone per frame. But if you could multi thread it, it could load it much faster as it doesnt load it one by one if I'm not mistaken
[2026-03-29 12:27] <.somaz> blender just gets slower and slower adding new keys with number of keys in the current timeline. multi thread wouldn't make it much faster. has to be related to creating interpolation curves in the background.
[2026-03-29 14:21] <daggolin> If you multithread some task under optimal circumstances you can divide the duration by the amount of threads. Realistically however you usually need to synchronize things and wait for things, so that’s usually not reached. And some tasks can’t be paralyzed at all. So if you’re dealing with something that takes hours or even days to complete as it is, you won’t magically get seconds or even minutes as a result. It would still freeze for hours. /  / I don’t know what the importer does or why it takes so long, but it sounds like it would need a different approach, different algorithms, etc. to improve things rather than just trying to throw more threads at it.
[2026-03-29 15:03] <.mjt> When the task get's decission paralysis... Do I speed up, do I sleep? hmmmmm
[2026-03-29 15:04] <.mjt> Maybe an intermediate format would be farster to import but tbh - I haven't seen an external format import as what SomaZ approach to wonkos importer produces...
[2026-03-30 06:22] <tempust85> Importing the JKA humanoid animset as FBX into blender, it doesn't die at all. Not sure what the difference is (edited)
[2026-03-30 08:20] <maui.94> The animations are completely stored when you export it as fbx?
[2026-03-30 09:29] <bearbiter> If you work with a existing modded gla file created with 3DS Max, you need it to add the new animation without it looking like a stick figure.
[2026-03-30 09:31] <bearbiter> https://jkhub.org/files/file/1471-glamerge/
[2026-03-30 20:08] <.mjt> And this .FBX stores them sequential or as animtracks like SomaZ can import them as?*
[2026-03-30 22:46] <tempust85> Just the frames, the FBX importer doesn't read from the animation.cfg. My point was the FBX importer can handle importing 21,000+ frames but the GLA importer (importing all frames, not reading animation.cfg) chugs or fails and I'm not sure why it's different.
[2026-03-31 01:50] <minilogoguy18> I'm like you and prefer the old toolset. Why was it never possible to just have carcass and assimilate use FBX? Seems like that would have solved a lot of things early on.
[2026-03-31 01:51] <minilogoguy18> If Avid (back when it owned softimage) could develop crosswalk and release its code then the file formats could have been updated it seemed like unless I'm dumb and just don't know shit about fuck lol.
[2026-04-05 13:21] <bearbiter> Tried your last importer and : Takes around 10 minutes to load a whole _humanoid gla, I had to write a small script to update the slot of each actions clips :  / import bpy /  / TARGET_SLOT_NAME = "OBskeleton_root" /  / obj = bpy.context.object / anim_data = obj.animation_data /  / if not anim_data: /  print("Pas d'animation_data") / else: /  count = 0 /  /  for track in anim_data.nla_tracks: /  for strip in track.strips: /  if strip.type == 'CLIP' and strip.action: /   /  slot = strip.action.slots.get(TARGET_SLOT_NAME) /   /  if slot: /  strip.action_slot = slot /  count += 1 /  /  print(f"{count} strips updated") (edited)
[2026-04-05 13:23] <bearbiter> For the export, I had a problem, but it was because I didn't set correct data for the export, better documentation would be nice as I didn't knew that the "glaname" had to be "models/players/_my_humanoid/_humanoid.gla" and that "_humanoid.gla" was not enough.
[2026-04-05 13:49] <bearbiter> (it's seems like a huge improvement tough)
[2026-04-05 13:50] <mrwonko> Yeah there's a lot you can do wrong, it sucks
[2026-04-05 14:11] <bearbiter> To be honest, the actual wip state is usable to handle a full _humanoid.gla. Which is more than something. it wasn't last year.
[2026-04-05 17:48] <.somaz> Pretty sure I fixed that. I didn't update the release on my fork though. Theres fixes for latest blender versions by maui, so I didn't feel the necessity.
[2026-04-05 18:44] <bearbiter> It might be that. can't wait for the next stable version 🙂
[2026-04-05 19:07] <maui.94> As a matter of fact, I managed to get a full import within 3 minutes and exports aswell. It is stable as far as I could test, but I wont update my fork just yet.
[2026-04-05 20:14] <bearbiter> I'm using blender 5.1 and I just notice the add Ghoul2 Properties don't seems to work anymore.
[2026-04-05 20:28] <maui.94> Look on my GitHub, you'll find the Ghoul2 fix there.
[2026-04-05 20:28] <maui.94> Or perhaps mr wonko already pushed that fix through
[2026-04-05 20:32] <bearbiter> Thanks, it did work !
[2026-04-05 20:33] <bearbiter> I made a build of "the big merging" and seems to work as expected
[2026-04-05 21:30] <maui.94> Glad it works out. I am currently working on a faster import/export and it is a challenge I must say. It needs a manual on how to do it flawless. I have a working inporter for SomaZ' build that imports the cfg close to instant. And today I got a faster exporter to work. But the tests are all but complete. I still need to test a model ingame
[2026-04-05 21:30] <maui.94> Modview works
[2026-04-05 21:34] <maui.94> If the ingame test works, I might try to make a gla merger. /  / Do keep in mind that ChatGPT is helping with ideas and I am carefully picking code snippets and testing each and every one of the interesting ones. So the build I would "release" will be an experimental one with an AI tag with all credits going to the original contributors and author, none for myself since my respect goes to those who started this marvellous addon.
[2026-04-16 15:38] <archangel35757> Because, the FBX format is not stable it is changed/updated every year by Autode$k. And that would be a pain in the ass to keep updating your toolsets for new FBX SDK versions that break compatibility. XSI format does all we ever need. (edited)
Transmission Thread

bearbiter

I really wish an AI to handle the JKA Skeleton existed; it's such a pain in the ass. Cross-compatibility is also a nightmare. The Blender tools and merge tools aren't very compatible with the 3DS Max skeleton.

tempust85

In my opinion, while Blender can export directly to GLA, it's more suitable for creating small animsets or new animations to merge into existing GLAs. 3ds Max and Softimage are still really only needed for the XSI exporter to compile new anims with the base humanoid anim source via Carcass, or for creating larger animsets with more ease. One day I'll get around to finishing up an XSI exporter for Blender.

minilogoguy18

Are the Blender people bringing the entire GLA into Blender, adding a small amount of animations, and just exporting the entire thing? I rarely ever bothered with _humanoid.gla modding because it felt like more trouble than it was worth, and breaking MP compatibility wasn't worth it since I played online 90% of the time.

soupinthegrass

Nah, to import the entire humanoid GLA would take an insane amount of time; I'm not even sure it'd finish without crashing. If you want to import from it, you can select a range of frames to keep it to just what's needed. Other than that, I'm not sure about merging back into it these days since I've only been working with GLAs I made from scratch.

mrwonko

It has never crashed for me, but it takes hours. It's impractical. The issue is not really threading, just that adding a frame gets slower with each frame added.

maui.94

Concerning the animations, you can import the entire thing but it takes up to 15-20 minutes because Blender can only handle one thread. If we had the possibility to multi-thread it, the speed would be increased tremendously. As for the crashing, it looks like it crashes because it uses up your entire resources to load them, though this was fixed in later versions of mrwonko's plugin.

daggolin

If you multithread some task under optimal circumstances you can divide the duration by the amount of threads, but realistically you usually need to synchronize and wait, so that’s usually not reached. If you’re dealing with something that takes hours or even days, you won’t magically get seconds or even minutes as a result. It would still freeze for hours. It sounds like it would need a different approach or different algorithms to improve things rather than just throwing more threads at it.

tempust85

Importing the JKA humanoid animset as FBX into Blender doesn't die at all. The FBX importer can handle importing 21,000+ frames, but the GLA importer (importing all frames, not reading animation.cfg) chugs or fails and I'm not sure why it's different. Why was it never possible to just have Carcass and Assimilate use FBX? Seems like that would have solved a lot of things early on.

bearbiter

If you work with an existing modded GLA file created with 3DS Max, you need it to add the new animation without it looking like a stick figure. I've been using this: https://jkhub.org/files/file/1471-glamerge/

I tried the latest importer and it takes around 10 minutes to load a whole _humanoid GLA. I had to write a small script to update the slot of each action clip:

python
import bpy

TARGET_SLOT_NAME = "OBskeleton_root"

obj = bpy.context.object
anim_data = obj.animation_data

if not anim_data:
    print("No animation_data")
else:
    count = 0
    for track in anim_data.nla_tracks:
        for strip in track.strips:
            if strip.type == 'CLIP' and strip.action:
                slot = strip.action.slots.get(TARGET_SLOT_NAME)
                if slot:
                    strip.action_slot = slot
                    count += 1
    print(f"{count} strips updated")

For the export, I realized the 'glaname' must be the full path, e.g., models/players/_my_humanoid/_humanoid.gla. Just _humanoid.gla is not enough. The actual WIP state is usable to handle a full _humanoid.gla now, which is a huge improvement over last year.

maui.94

I managed to get a full import within 3 minutes and exports as well. I am currently working on a faster import/export and it is a challenge. I have a working importer for SomaZ's build that imports the cfg almost instantly. If the in-game tests work, I might try to make a GLA merger.

I am using some AI-assisted ideas for code snippets, so any build I release will be marked as experimental with an AI tag, with all credits going to the original contributors. Also, if you are on Blender 5.1 and the Ghoul2 properties aren't working, check my GitHub for the fix.

archangel35757

The reason FBX wasn't used is because the format is not stable; it is changed/updated every year by Autodesk. It would be a pain in the ass to keep updating toolsets for new FBX SDK versions that break compatibility. XSI format does all we ever need.