Skip to content

Binding a character to a posing skeleton

ZeroGravitas edited this page Mar 16, 2024 · 50 revisions

Our latest Character Assembler tools can automate the importing of skeletons ("armatures") and the binding of player characters and NPCs' parts to it, but it happens to be a VERY EASY thing to do manually (which we still need to know in order to rig, pose and animate Creature-type NPCs).

It's the simplest thing, a ten seconds or less-long operation! And it goes like this:

  1. Import the correct skeleton object.
  2. Select all the character's objects.
  3. Select the skeleton last so that it becomes the selection's "active object".
  4. Parent the objects to the skeleton with the Armature Deform option, and we are done!

One of the virtues of the .gr2 import/export add-on for Blender is that, when importing models, it preserves their rigging information (vertex groups and weights) so that, first of all, Blender can know which regions of the objects have to be influenced by which bones in the skeleton, and how to deform the objects to produce good-looking push and pull of limbs and gear (well, up to a point, because SWTOR can be a bit wonky at that at times 😅 , but it's a great start and we can further improve that with Blender's own features).

Skeletons in the spec closet.

All the game's skeletons are stored in our SWTOR Slicers app's Output Folder \resources\art\dynamic\spec as .gr2 object files (the following screencapture is from a full assets extraction. Yours might lack some of those subfolders, which is perfectly OK):

There we can find skeletons for all the diverse types of characters in the game (humanoids, big arm-little legs bipeds, cuadrupeds, etc.), mechanical contraptions (doors, elevator platforms, ships' moving parts, etc.), and other types of objects.

Humanoid skeletons follow the game's body type naming conventions:

  • Female Body Type 1: bfanew_skeleton.gr2 (bfa: base female adolescent, athletic…)

  • Female Body Type 2: bfnnew_skeleton.gr2 (bfn: base female normal)

  • Female Body Type 3: bfsnew_skeleton.gr2 (bfs: base female strong, super…)

  • Female Body Type 4: bfbnew_skeleton.gr2 (bfb: base female big)

  • Male Body Type 1: bmanew_skeleton.gr2 (bma: base male adolescent, athletic…)

  • Male Body Type 2: bmnnew_skeleton.gr2 (bmn: base male normal)

  • Male Body Type 3: bmsnew_skeleton.gr2 (bms: base male strong, super…)

  • Male Body Type 4: bmfnew_skeleton.gr2 (bmf: base male fat 😑. Remember: it's bmf vs. bfb)

Creature skeletons demand a bit of extra effort, as creatures of a same type reuse common skeletons and their names are a bit ambiguous ("cat_skeleton.gr2", "bull_skeleton.gr2", etc…).

If we rely on TORCommunity.com's tools (its player Character Designer or its database of NPCs), we won't need to divine the skeletons' name and location paths: those are annotated in a file named "skeleton.json".

DON'T IMPORT THAT FILE INTO BLENDER: that will result in an error message. Open it with a text editor such as Notepad, instead: you'll find inside it the path to the file you need to use, relative to the "resources" subfolder within your Slicers GUI output folder.

We can follow the path, which would be: our SWTOR Slicers app's Output Folder \resources\art\dynamic\spec\bmnnew_skeleton.gr2(yes, SWTOR is a little inconsistent in its use of pathname directory separators, Windows backslashes vs. Unix slashes. Always use or convert to backslashes while in Windows).

Or instead we can do a File Explorer search for bmnnew_skeleton.gr2 and spare us all the drilling through so many subfolders.

WARNING: when dealing with creature-type characters (non-humanoid NPCs), TORC's database produces at times a wrong skeleton name by including the word "new" in the filename. For example, Tuk'ata use dog_skeleton.gr2, but TORC's exported reference says dognew_skeleton.gr2. If you can't find a skeleton file that has the "new" bit in its name, try omitting it.

As SWTOR's rigging skeletons are stored as .gr2 files, we use the .gr2 import option to load it into the Blender project.

The bones will appear as a series of dots (instead of the traditional ball and stick style) in and around the character. Here we see them highlighted by selecting them as we would any other object).

Binding the objects to the skeleton.

Let's suppose we have Lord Scourge, a Body Type 3 NPC, so, the skeleton is "bmsnew_skeleton.gr2".

We have loaded the objects and the skeleton, which shows up as a series of dots around and inside the character's parts. You'll notice that there are bones floating way outside the character or in rather strange places: those are meant as hooks for things like stowed weapons, cinematic cameras, etc. Every bone is named according to the body part it relates to, so, everything is fairly self-explanatory in that regard while posing, as each bone will show its name in the 3D View's top-left corner when selected. We can even have their names previewed floating next to them, although that makes the display feel a little messy.

While we are at it: to make the bones that are hidden inside the body visible anyway, tick the "In Front" checkbox in the Properties Editor's Skeleton tab.

To bind the objects to the skeleton we need to select them all while making sure that the skeleton is the last selected item. That's because many operations in Blender depend on having a selection of items of which one is the "active item", usually the last selected one. To know that it is so, we can check in the Outliner that the skeleton has a more solid yellow text and blue selection colors than the rest.

Tip: in Blender, shift-clicking on an already selected object doesn't immediately deselect it: it turns it into the active object, (requiring a second shift-click to actually deselect it). So, it's easier to just marquee-select all the character's parts including the skeleton (or do a plain Select All) and, if the skeleton didn't end up as the active object, shift-click it to turn it into such.

And now we do the binding itself: press ctrl-p (Parent operation) and select the Armature Deform option (select that option directly, without using any of its sub-options). Alternatively, do the same from the Object > Parent > Armature Deform menu option.

That's it, we are done! We can see in the Outliner that the skeleton is now the "parent" of all the involved objects. We could select the skeleton, switch to Pose Mode and start posing our character away.

Unbinding objects from the skeleton.

And if we want to unbind any item, we just follow Blender's convention of using alt as the opposite of ctrl: select the objects to separate from the skeleton, and alt-p will bring up the Clear Parent operation (alternatively, use the Object > Parent > Clear Parent menu option)

Any time.

The beauty of this method's simplicity is that we aren't forced to have just everything (say, all the armor parts we think we'll ever need for this character) ready for the binding at once: we can always parent more objects later on, or unparent already bound ones, at any moment.

The only requisite to bind an object is to have the skeleton in its neutral position and pose. Luckily, Blender can temporarily set it to neutral at the push of the Properties's Armature tab's Rest Position button: it TEMPORARILY sets the bones' rotations and translations to neutral. To go back to the pose we were working on we simply press the contiguous Pose Position button.

(As it's important that the position of the skeleton as a whole is back to neutral in those circumstances, it's recommended that, when moving our characters around in the scene, we try to displace them by translating its skeleton while in Pose Mode instead of the whole character plus skeleton while in Object Mode (that, or have some easy way to get them back to their original position without it being a bother).

Limitations.

There are a few lackings, although they aren't showstoppers at all:

  • The game's skeletons don't contain the bones needed for physics-driven parts such as capes, flaps, lekku, some bits of hair and the like: those are defined through physics-related files data we haven't covered with our tools yet. That said, it's not that difficult to add our own bones to the game's skeletons to solve those without breaking anything (in the sense of still being able to apply game animations to the results), and they can be transplanted to other characters to save work. We also have a provisional guide on how to apply physics to those objects without the need for bones: Making capes and hair work, manually and through Cloth Simulation.

  • These are forward kinematics ("FK") skeletons. One can use Blender's Auto IK tool to simulate inverse kinematics ("IK") characteristics or modify the skeleton to have proper ones by following any Blender tutorials on the matter. We have a few pre-made IK skeletons here for you to try.

Table of Contents


INTRODUCTION

IMPORTING SWTOR MODELS INTO BLENDER: A BRIEF OVERVIEW.
Check this intro first. Afterwards, you can jump directly to the guides on extracting PCs, NPCs and others.


TOOLS

No need to read this section right now: each extracting/assembling guide explains its required tools anyway.

Applications and Blender Add-on tools:

Online Tools:

Deprecated Tools:

  • EasyMYP (Windows app).
  • Noesis (Windows app).

THE COMPLETE GUIDE TO AUTO-EXTRACTING AND ASSEMBLING PLAYER CHARACTERS AND NPCs:

READ THE BROAD STROKES FIRST: YOU'LL SEE IT'S EASIER THAN YOU THINK!


ASSEMBLING GAME LOCATIONS AUTOMATICALLY:


LOCATING AND ASSEMBLING ASSETS MANUALLY:


OTHER GUIDES (WIP):


MODDING (to do)

Modding isn't working at the moment due to SWTOR's change to a 64bit codebase. It's going to take a while 🙁.


DATAMINING (to do)

  • Overview.
  • Tools.

SWTOR TECHNICAL INFORMATION:


OTHER RESOURCES:

Clone this wiki locally