-
Notifications
You must be signed in to change notification settings - Fork 0
FBX File Doc Skeleton Joints
When importing joints, there are 3 sections of the .fbx file that you need to read in:
1 - The Node Attribute that has a 'skeleton' tag.
NodeAttribute: 962980976, "NodeAttribute::", "LimbNode" {
TypeFlags: "Skeleton"
}
This contains the attributes that let you know that a LimbNode type is of a skeleton property, which defines that info as a joint.
2 - The Limb Node that contains the general joint data.
Model: 706872368, "Model::joint1", "LimbNode" {
Properties70: {
**P: "Lcl Translation", "Lcl Translation", "", "A+",-0.318008065671159,1.13537581290943,-1.84261036468332**
}
}
Before an explanation on this section begins, just need to state that you cannot assume a Limb Node is a joint from the name of the Limb Node having "joint" in it. The joint could be named anything and if it is re-named by the modeller/animator for their own use, your importing will not work.
This contains the information for the general joint data and will be used in mainly getting the joints position in world space.
3 - The Deformer that contains the joint weight data.
Deformer: 487876832, "SubDeformer::", "Cluster" {
Indexes: *4 {
Weights: *4 {
}
This contains the indices in which the joint affects and the weights in which those indices are multiplied by. The weights are matched to the indices by their position in their lists, so the first weight in it's list points to the first vertex index in it's list.
The weights are saved as a double/float and will always be between the values of 0 and 1. The number of weights will always be the same as the number of Indices.