Skinning issues in custom loader

ezgif-7aba6f7d5f9cea

Hi all! I’m working on a game engine that translates WebGL2 to OpenGL (not super practical, but a fun little project), and I’m running into some issues translating AssImp imported animations into Three.js.

The image above is what I have right now. I’ve been researching both AssImp and Three.js animations the last few days, and have double checked the skeleton, bone hierarchy, indices, skin weights and matrix4 conversion between AssImp and Three.js. The mesh is still offset from the bones. I’ve narrowed it down to a few possible issues:

  1. There’s a mismatch in coordinate system between AssImp and Three.js
  2. Order of transform is different between AssImp and Three.js
  3. Keyframes are recorded in a different format between AssImp and Three.js

The specific model loader code is here on a branch in Github if anyone is interested in reading some Java. But I’m thoroughly stumped right now. Will welcome any and all insights into the matter!