Sansar skeleton and skinning details

This article provides detailed information on the joints of the standard Sansar skeletons and provides tips on how to best skin the skeletons when creating custom avatars and rigged clothing.

Note that exporting an avatar from Blender requires non-default export settings. See Exporting custom avatars from Blender for full details.

Avatar skeleton files

Here are the skeletons you need in order to create custom avatars:

Note: When exporting custom avatars from Blender, note that the default settings must be changed. See Exporting custom avatars from Blender for exact settings details.

Joint details

Body joints

The core animation joints. All avatar and clothing meshes should be hooked up to these joints in order for them to deform correctly when animating. Depending on the location of the mesh, only a certain subset of joints may be needed. For example, pants should only need to be skinned to all the lower body joints.

Central body joints

  • sansar:pelvis
  • sansar:spine1
  • sansar:spine2
  • sansar:spine3
  • sansar:neck
  • sansar:head
  • sansar:L_clavicle
  • sansar:R_clavicle

 Left arm joints

  • sansar:L_shoulder
  • sansar:L_elbow
  • sansar:L_wrist
  • sansar:L_shoulder_twist1
  • sansar:L_shoulder_twist2
  • sansar:L_wrist_twist1
  • sansar:L_wrist_twist2
  • sansar:L_hinge_end

Right arm joints

  •  sansar:R_shoulder
  • sansar:R_elbow
  • sansar:R_wrist
  • sansar:R_shoulder_twist1
  • sansar:R_shoulder_twist2
  • sansar:R_wrist_twist1
  • sansar:R_wrist_twist2
  • sansar:R_hinge_end

 Left leg joints

  • sansar:L_hip
  • sansar:L_knee
  • sansar:L_ankle
  • sansar:L_ball
  • sansar:L_hip_twist1
  • sansar:L_glute_end
  • sansar:L_kneecap_end

 Right leg joints

  • sansar:R_hip
  • sansar:R_knee
  • sansar:R_ankle
  • sansar:R_ball
  • sansar:R_hip_twist1
  • sansar:R_glute_end
  • sansar:R_kneecap_end

 Left finger joints

  • sansar:L_index_01
  • sansar:L_index_02
  • sansar:L_index_03
  • sansar:L_middle_01
  • sansar:L_middle_02
  • sansar:L_middle_03
  • sansar:L_pinky_01
  • sansar:L_pinky_02
  • sansar:L_pinky_03
  • sansar:L_ring_01
  • sansar:L_ring_02
  • sansar:L_ring_03
  • sansar:L_thumb_01
  • sansar:L_thumb_02
  • sansar:L_thumb_03

Right finger joints

  • sansar:R_index_01
  • sansar:R_index_02
  • sansar:R_index_03
  • sansar:R_middle_01
  • sansar:R_middle_02
  • sansar:R_middle_03
  • sansar:R_pinky_01
  • sansar:R_pinky_02
  • sansar:R_pinky_03
  • sansar:R_ring_01
  • sansar:R_ring_02
  • sansar:R_ring_03
  • sansar:R_thumb_01
  • sansar:R_thumb_02
  • sansar:R_thumb_03

Face joints

Skinning to the face joints is only a requirement if you want to have animated faces. If your avatar has a mask or helmet, all these joints can be ignored and only the "sansar:head" joint needs to be used.

With the limit of only 4 joint influence per vertex, it becomes very complicated to do a smooth skinning spread between all the face joints. It is easiest to only skin to a subset of all the face joints.

For example, if you want a more simplified animated face such as just a flapping mouth and darting eyes, then only the "sansar:L_eye", "sansar:R_eye", and "sansar:jaw" joints need to be used.

Jaw Area Joints

  • sansar:jaw

  • sansar:L_jawline01
  • sansar:L_jawline02
  • sansar:L_masseter01

  • sansar:R_jawline01
  • sansar:R_jawline02
  • sansar:R_masseter01

For a simple flappy jaw look, only the "sansar:jaw" joint working in conjunction with the "sansar:L_mouth_corner" and "sansar:R_mouth_corner" joints listed below are needed.

Chin Area Joints

  • sansar:chin_mid
  • sansar:chin_midbottom
  • sansar:chin_under

  • sansar:L_chin02_under
  • sansar:L_chin_mid1
  • sansar:L_chin_midBottom

  • sansar:R_chin02_under
  • sansar:R_chin_mid1
  • sansar:R_chin_midBottom
Only fine detail meshes need to be skinned to all the chin joints.  For a more simple setup, you can probably get by with just hooking up to the "sansar:chin_mid" joint.

Mouth Area Joints

  • sansar:lip_lower_center
  • sansar:lip_lowerBottom_center
  • sansar:mouth_lower_center
  • sansar:lip_upperTop_center
  • sansar:mouth_upper_center
  • sansar:mouth_upper_mid

  • sansar:L_lip_lower_mid01
  • sansar:L_lip_lower_mid02
  • sansar:L_lip_lowerBottom_mid01
  • sansar:L_lip_lowerBottom_mid02
  • sansar:L_mouth_lower_mid02
  • sansar:L_lip_upper_mid01
  • sansar:L_lip_upper_mid02
  • sansar:L_lip_upperTop_mid01
  • sansar:L_lip_upperTop_mid02
  • sansar:L_mouth_corner
  • sansar:L_mouth_upper_mid01
  • sansar:L_mouth_upper_mid02
  • sansar:L_risorius01

  • sansar:R_lip_lower_mid01
  • sansar:R_lip_lower_mid02
  • sansar:R_lip_lowerBottom_mid01
  • sansar:R_lip_lowerBottom_mid02
  • sansar:R_mouth_lower_mid02
  • sansar:R_lip_upper_mid01
  • sansar:R_lip_upper_mid02
  • sansar:R_lip_upperTop_mid01
  • sansar:R_lip_upperTop_mid02
  • sansar:R_mouth_corner
  • sansar:R_mouth_upper_mid01
  • sansar:R_mouth_upper_mid02
  • sansar:R_risorius01
The mouth area has the most complex setup on the face.  There are fewer ways to only using a few select joints because they all depend on each other to work.  If you want to forego explicit lip animation and keep to a simple flappy jaw setup, then using the "sansar:jaw" joint in conjuction with "sansar:L_mouth_corner" and "sansar:R_mouth_corner" should be enough.

Nose Area Joints

  • sansar:nose_base
  • sansar:nose_bridge
  • sansar:nose_tip

  • sansar:L_nasoLabial_inner
  • sansar:L_nose_nostril
  • sansar:L_nasoLabial01

  • sansar:R_nasoLabial_inner
  • sansar:R_nose_nostril
  • sansar:R_nasoLabial01
All these joints can be skipped if there is no need for small details such as nostril flares.

Left Eye Area Joints

  • sansar:L_eye
  • sansar:L_eyelid01_lower
  • sansar:L_eyelid02_lower
  • sansar:L_eyelid01_upper
  • sansar:L_eyelid02_upper
  • sansar:L_eyelid_corner_inner
  • sansar:L_eyelid_corner_outer
  • sansar:L_eye_lateral
  • sansar:L_eye_lower_mid02
  • sansar:L_eye_lower_mid03
  • sansar:L_eye_upper_mid01
  • sansar:L_eye_upper_mid02
  • sansar:L_eye_upper_mid03

Right Eye Area Joints

  • sansar:R_eye
  • sansar:R_eyelid01_lower
  • sansar:R_eyelid02_lower
  • sansar:R_eyelid01_upper
  • sansar:R_eyelid02_upper
  • sansar:R_eyelid_corner_inner
  • sansar:R_eyelid_corner_outer
  • sansar:R_eye_lateral
  • sansar:R_eye_lower_mid02
  • sansar:R_eye_lower_mid03
  • sansar:R_eye_upper_mid01
  • sansar:R_eye_upper_mid02
  • sansar:R_eye_upper_mid03

If only eyeball rotation is needed, then only skin to the "sansar:L_eye" and "sansar:R_eye" joints.

Forehead Area Joints

  • sansar:forehead_lower
  • sansar:L_forehead_lower1
  • sansar:R_forehead_lower1

Left Eyebrow Area Joints

  • sansar:L_brow_inner
  • sansar:L_brow_mid01
  • sansar:L_brow_mid02

Right Eyebrow Area Joints

  • sansar:R_brow_inner
  • sansar:R_brow_mid01
  • sansar:R_brow_mid02
The forehead and eyebrow joints cover the areas above the eyes.  These joints are used when the character does expressive eyebrow motions.

Left Cheek Area Joints

  • sansar:L_cheek_inner
  • sansar:L_cheek_outer
  • sansar:L_nasoLabial02
  • sansar:L_nasoLabial03
  • sansar:L_risorius02
  • sansar:L_masseter02

Right Cheek Area Joints

  • sansar:R_cheek_inner
  • sansar:R_cheek_outer
  • sansar:R_nasoLabial02
  • sansar:R_nasoLabial03
  • sansar:R_risorius02
  • sansar:R_masseter02
For proper smiling animations, the cheek area joints are needed.  If necessary, you can probably get away with only using the "sansar:L_cheek_inner", "sansar:L_cheek_outer", "sansar:R_cheek_inner", and "sansar:R_cheek_outer" joints.

Ears

  • sansar:L_ear
  • sansar:R_ear

Tongue

  • sansar:tongue01
  • sansar:tongue02
  • sansar:tongue03
There are very few ear animations, so skipping the ear joints isn't a big deal.  The tongue joints are only needed if there is a tongue in the character.

Support joints

These support joints are only used to support the animation of the body and face joints. They do not need to hook up to any meshes since it is their child or related joints that should be getting all the skinning data.

Body Support Joints

  • sansar:L_glute_base
  • sansar:L_kneecap_base
  • sansar:R_glute_base
  • sansar:R_kneecap_base
  • sansar:L_hinge_base
  • sansar:R_hinge_base

Face Support Joints

  • sansar:chin
  • sansar:R_eyelid_lower
  • sansar:R_eyelid_upper
  • sansar:L_eyelid_lower
  • sansar:L_eyelid_upper

Other joints

These joints are for other purposes outside of core animation and shouldn't have any meshes skinned to them.

  • sansar:root
  • sansar:Locomotion_Vector
  • sansar:headEnd

Unused joints

These joints are either unused, reserved for future purposes, or just deprecated. Skinning to these joints serves no purpose.

Finger Tip Joints

  • sansar:L_index_04
  • sansar:L_middle_04
  • sansar:L_pinky_04
  • sansar:L_ring_04
  • sansar:L_thumb_04
  • sansar:R_index_04
  • sansar:R_middle_04
  • sansar:R_pinky_04
  • sansar:R_ring_04
  • sansar:R_thumb_04
The fingertip joints are not being used in any of the animations that currently exist, nor will they be utilized in any future animations.  Their sole purpose is for the possibility of them used as a contact point for inverse kinematics.  Whether or not they will end up being utilized for that purpose, there is no need to skin them to any meshes.

Toe Joints

  • sansar:R_bigToe_01
  • sansar:R_bigToe_02
  • sansar:R_bigToe_03
  • sansar:R_indexToe_01
  • sansar:R_indexToe_02
  • sansar:R_indexToe_03
  • sansar:R_middleToe_01
  • sansar:R_middleToe_02
  • sansar:R_middleToe_03
  • sansar:R_pinkyToe_01
  • sansar:R_pinkyToe_02
  • sansar:R_pinkyToe_03
  • sansar:R_ringToe_01
  • sansar:R_ringToe_02
  • sansar:R_ringToe_03
  • sansar:L_bigToe_01
  • sansar:L_bigToe_02
  • sansar:L_bigToe_03
  • sansar:L_indexToe_01
  • sansar:L_indexToe_02
  • sansar:L_indexToe_03
  • sansar:L_middleToe_01
  • sansar:L_middleToe_02
  • sansar:L_middleToe_03
  • sansar:L_pinkyToe_01
  • sansar:L_pinkyToe_02
  • sansar:L_pinkyToe_03
  • sansar:L_ringToe_01
  • sansar:L_ringToe_02
  • sansar:L_ringToe_03
The toe joints are reserved for the possible use of individually animated toes.  As of now though, they are not being utilized in any of the animations and toe area meshes should be skinned directly on to the "sansar:R_ball' and "sansar:R_ball" joints.

Deprecated Joints

  • sansar:L_breast_base
  • sansar:L_breast_end
  • sansar:L_scapula_01
  • sansar:L_scapula_02
  • sansar:R_breast_base
  • sansar:R_breast_end
  • sansar:R_scapula_01
  • sansar:R_scapula_02
These deprecated joints serve no current or future use.

Skinning details

Skin bind settings

  • 4 Max Influence
  • Single Combined Mesh Only
  • Linear Skinning Method

Skinning examples

 

Auto-twist Arms:

As we can see from the examples, the arm skinning is not just a simple 3 joint chain setup.  There are 4 twist joints along the length of the arm that will help with prevent issues such as candy wrapping around the wrists and shoulders that twist too much.

One thing to keep in mind is that when the skeleton gets imported or referenced into the DCC, the auto-twist joints are not hooked up in a way that will look correct.  But if the skinning on those joints looks similar to the examples, then they will import into the engine and look good during animations.

L_shoulder_twist1.jpgL_wrist.jpgL_shoulder_twist2.jpgL_wrist_twist2.jpgL_wrist_twist1.jpgL_shoulder.jpgL_elbow.jpg

Pelvis/Thigh Area:

What makes the pelvis and thigh area a little more complex is the glute_end bone that helps with maintaining volume as the legs are rotating back and forth.  That particular bone should only cover a small specific area.

Like the arms, the thighs also have an auto-twist that will help maintain a smoother look as the legs are twisting.  Unlike, the arms, the thighs only require 1 twist bone.

Also like the arms, the thigh auto-twist and glute_end is not hooked up during import into the DCC.  So they will not look correct until imported into the engine.

pelvis.jpgL_hip_twist1.jpgL_hip.jpgL_glute_end.jpg

Elbow and Knee:

These support joints are solely for the purpose of helping the knee and elbow maintain better volume as the lower legs and forearms are bending.

These are also not hooked up during import into the DCC and will require import into the engine before results can be seen.

L_kneecap_end.jpgL_hinge_end.jpg

Resources on this page:

Was this article helpful?
3 out of 3 found this helpful
Have more questions? Submit a request

0 Comments

Article is closed for comments.