Posted 6 years ago

Back to news

Skeletal animation in SWTOR

Since we started data mining SWTOR back in 2011, we have figured out most of SWTOR's file formats, but one file format always eluded us: the animation data. We are proud to announce that we have finally reverse engineered the proprietary .jba files, containing the joint-bone animation data.

SWTOR uses Linear Blend Skinning, a popular method for skeletal animation where each vertex is influenced by up to four bones. The animations typically have a frame rate of 15 or 30 FPS and are stored explicitly for each frame, where each bone consists of a compressed 48-bit quaternion and an optional 32-bit translation.

The main skeletons used for player characters and humanoid NPCs consists of 137 bones, but only 102 bones are actually animated; the other bones are used to attach items like a lightsaber and blaster, or visual effects. Also, some 3D models are actually animated dynamically using cloth simulation, for example skirts or Twi'lek head-tails.

The humanoid skeletons use as many as 8,000 animations each. To blend between these animations, SWTOR employs Morpheme by NaturalMotion. During cutscenes, FaceFX by OC3 Entertainment ensures that the lip movement is synced with the spoken words. Both tools are industry standard middleware and they are used in nearly every AAA title, most recently in Horizon: Zero Dawn.

While we have no plans to add animation support to NPC pages in the database just yet, we continue to improve our data mining tools. Our animation viewer is implemented entirely in JavaScript using WebGL2. There still is lots more to do, but with this breakthrough, we have gotten a lot closer to emulating an even larger part of the game.