Animation 'Stutter' glitch from Blender to Babylon Sandbox

Hey everone!

So I’m hoping I can get this figured out, I’ve tried alot of different approaches to basically have 7 animation clips export out from Blender into Babylon JS with 1 mesh/joint setup. So it exports just fine with the animation ranges I want and in sandbox the textures, materials and even most of the animation look solid. Unfortunately, there is a ‘stutter’ or ‘glitch jump’ that comes up in some of the looped animations (Clapping ones, Walking & Idle specifically) where they look fine in Blender but when brought into Babylon they just don’t loop like they are supposed too. I’ve interpolated them properly in Blender but still no success. I’m just wondering if there’s something I’m missing upon exportation or if there’s something I need to edit it in notepad? Here is my .babylon file below. Thank you!

femrobot3.zip (2.7 MB)

Here is also my text document that exports with the .babylon file

femrobot3)TXTFile.zip (1.5 KB)

Hey @chrisrcampart, please check out the latest responses by @DarkMatter in Mixamo Multiple Animations .fbx → Blender → .babylon Format

I think you will have to go into the .babylon text file and add/subtract 1 frame from from and to in ranges for the stuttering animations. You may need to do this by trial and error until the animations are no longer stuttering, but I find that removing 1 frame from the start and/or end of an animation eliminates the stuttering.

Sorry I haven’t been able to get the changes pushed! I’ve been getting my butt kicked by some chemo lately. Attached are the three files I’ve modified in the latest blender2babylon plugin.

  • In armature.py the to_json method should be exporting the rest matrix as ‘matrix.’
  • Animations.py line #26 the starting animation point has been moved to account for animations that don’t start at zero.
  • json_exporter.py I set the mesh to ‘edit’ mode before exporting the mesh data. This makes sure that your mesh is in the correct t-pose.

blender2Babylon fixes.zip (8.1 KB)

2 Likes

No idea what is going wrong, but it seems like there has always been trouble with Mixamo animations going back a long time.

@chrisrcampart : I loaded your .babylon file into a text editor (Notepad++), did a search for “ranges” and found at line 26951

,“ranges”:[
{“name”:“Cheering”,“from”:0,“to”:88},
{“name”:“Dancing”,“from”:100,“to”:265},
{“name”:“HardClap”,“from”:270,“to”:317},
{“name”:“Idle”,“from”:330,“to”:688},
{“name”:“Jumping”,“from”:700,“to”:766},
{“name”:“SoftClap”,“from”:780,“to”:816},
{“name”:“Walking”,“from”:830,“to”:862}]}],
“meshes”:[{“name”:“femRobot”,“id”:“femRobot”,

just like @gbz, followed by the start of the “meshes” data. However, continuing the search, I found this (at line 73016, at the very end of the file) :

“ranges”:[{“name”:“Idle”,“from”:0,“to”:358}]

I am curious as to why this “idle” animation is being exported twice?

From a few years back : Mixamo baseball animation

Stay Safe, gryff :slight_smile:

PS: Always easier to look for issues with the .blend files :slight_smile:

1 Like

Hey Dark MAtter!

First off, I hope your treatments go great and best wishes on getting well :slight_smile:

I appreciate you dropping in the zip file for the blender2Babylon fixes, I just overwrote the previous ones with them and I’m stoked to have these fixes now in my plugin! Thank you!

2 Likes

@gbz @gryff Thank guys for the input and for trying to break down this issue! I was kind of hoping there would be a fix or step in blender that I’m missing but I ended up doing the ‘add/subtract’ 1 frame from the beginning and end of the animation ranges. I did not unfortunately get the results I’m looking for, there was still stuttering. I ended up having to remove/add several frames beginning or end to get as close to ‘non-jittery’ animations and the result isn’t too bad but still not perfect/seamless.

Also @gryff thank you for pointing out the duplicate idle animation, I had no idea there was one I just kind of let the exporter do it’s thing. There are no duplicated frames or animation clips in Blender so I’m not really sure why it’s there, but it appears to be for no reason because I removed that range and everything still appears to be functional in .babylon.

Also, per your request @gryff I have attached my blender file to my google drive with this link:

https://drive.google.com/file/d/1v6IPoXzZanFyYl70RUjjp4y3HSu9vnzM/view?usp=sharing

and my updated .babylon file via these zip folders. I hope it helps figure some blender step that I missed!

femrobot3.zip (1.6 MB)

Whoops. Here is the corrected .babylon file not the 1st one I provided, apologies.

femrobot3_fixedAnims.zip (1.6 MB)

@DarkMatter, thank you so much for taking the time and effort to look into this, and I hope things are looking bright for you :slight_smile:

@gryff, thanks for catching that! @chrisrcampart, thanks for uploading the Blender file as gryff mentioned, although, it seems we are unable to access the download from the google drive link. Is it possible to zip and attach the Blender file to the Babylon forum post like you did for the femrobot3.zip?

1 Like

From @gbz :

it seems we are unable to access the download from the google drive link

I had the same problem :frowning:

Stay Safe, gryff :slight_smile:

@gbz Sadly not, even zipped it says it’s too big :slightly_frowning_face: I’m not quite sure of another place to drop my blender file. Anyone else know?

@chrisrcampart - you have a GitHub account?

Stay Safe, gryff :slight_smile:

@gryff I do not, I probably will get on that if this dropbox link does not work:

https://www.dropbox.com/home?preview=femRobot_blender.zip

Please let me know if that works or not. I’m going to get a GitHub account.

@chrisrcampart : I have to create a Dropbox account :frowning:

Stay Safe, gryff :slight_smile:

I messed up the animation.py file. The change should have been:

self.frame_start = AnimationRange.nextStartingFrame(frameOffset) + self.frames_in[0]

instead of

self.frame_start = AnimationRange.nextStartingFrame(frameOffset + self.frames_in[0])

Sorry!!!

3 Likes