How to calculate bind pose for bones that are not attached to the skin, but which are in a hierarchy where some bones are attached to the skin

Started by
13 comments, last by Buckshag 9 years, 10 months ago
I am also not sure what you really want.
Do you not want to make a standard skinned animation play?
Is there some reason the standard way of doing this won’t work?

Every FbxNode has a translation matrix, both local and world (that includes the bind pose).

Your approach in determining what matrix to use is exactly backwards.
It’s not, “If no cluster influence, then what?”, it’s, “Use the node’s matrix unless influenced by a cluster.”
You don’t need a pose, shape, influence, cluster, or even a skin to determine what matrix to use. These things are add-ons, not foundational/necessary elements.


In any case, getting a local matrix is trivial.
If there is no parent, the world matrix is its local matrix, otherwise the local matrix is the inverse of the parent’s matrix multiplied by the node’s world matrix.
I just hesitate before giving you this answer because you seem really lost and I feel as though I am just helping you further down the spider hole.


L. Spiro

I restore Nintendo 64 video-game OST’s into HD! https://www.youtube.com/channel/UCCtX_wedtZ5BoyQBXEhnVZw/playlists?view=1&sort=lad&flow=grid

Advertisement
Looks like it's needed to attach weapons.
In any case, getting a local matrix is trivial.
If there is no parent, the world matrix is its local matrix, otherwise the local matrix is the inverse of the parent’s matrix multiplied by the node’s world matrix.
I just hesitate before giving you this answer because you seem really lost and I feel as though I am just helping you further down the spider hole.

He cannot extract a bind pose if it isn't there.

But he might think he needs the bind pose transforms for those nodes, while he probably doesn't need them.

Using the node matrix can be incorrect, as it is not the real bind pose, but again it shouldn't matter as for skinning you only need the bind pose matrices of the nodes that are inside a cluster anyway. So we have to find out what he really is trying to do here.

Looks like it's needed to attach weapons.

But joints are part of the scene graph just as meshes and models are.
Attaching something to it is just a matter of making it a child of that object and is an entirely separate issue from extracting skin weights from FBX files.
There is extreme confusion all around. I pray the fire topic-started be clearer.

He cannot extract a bind pose if it isn't there.

He says he can get the bind pose easily in his first post. The problem seems to be about some bones having no clusters (the FBX term for skin weights) attached to them.
My confusion begins here: Why does he think all bones need skin weights? If the bone doesn’t influence any vertices directly, there will be no skin weights. So?

The bone he circled in the image would be examples of joints that are not influencing any vertices.

Then he goes on to ask how to calculate the bind-pose matrices for joints with no skinning weights.
HUH??
The locations of the joints/bones is nothing to do with whether or not they have skinning weights/clusters. They are all nodes, all nodes except root nodes have a parent, and all bones/joints in a skeleton can be put into bind pose simply by traversing the bind-pose hierarchy via only this information. Never does a bind pose relate to skin weights/clusters at all.


So I (and everyone else) am confused on 2 points:
#1: Some bones/joints don’t have clusters. SO?
#2: Why does he think they need clusters to calculate a bind pose??


“Buckshag, what does the C-Meter say about his confused level?”
It’s over 9,000!!!!



L. Spiro

I restore Nintendo 64 video-game OST’s into HD! https://www.youtube.com/channel/UCCtX_wedtZ5BoyQBXEhnVZw/playlists?view=1&sort=lad&flow=grid

He says he can get the bind pose easily in his first post. The problem seems to be about some bones having no clusters (the FBX term for skin weights) attached to them.
My confusion begins here: Why does he think all bones need skin weights? If the bone doesn’t influence any vertices directly, there will be no skin weights. So?

The bone he circled in the image would be examples of joints that are not influencing any vertices.

Then he goes on to ask how to calculate the bind-pose matrices for joints with no skinning weights.
HUH??
The locations of the joints/bones is nothing to do with whether or not they have skinning weights/clusters. They are all nodes, all nodes except root nodes have a parent, and all bones/joints in a skeleton can be put into bind pose simply by traversing the bind-pose hierarchy via only this information. Never does a bind pose relate to skin weights/clusters at all.


So I (and everyone else) am confused on 2 points:
#1: Some bones/joints don’t have clusters. SO?
#2: Why does he think they need clusters to calculate a bind pose??

I think he thinks he needs the bind pose world space matrices for the node without cluster as he wants to store a bind pose in local space.

In order to calculate the local space transform in bind pose he needs to get the bind pose transform of the node with red circle. This is true IF you really would need the local space bind pose for all nodes. But this is not needed for regular animation as you know.

I have the feeling he is trying to reconstruct the full bind pose in world space by doing forward kinematics on those local space transforms.

But instead he should just store the bind pose matrices in world space of all nodes that act as real bone in the skinning info of the mesh. And as for skinning you do not need the bind pose transform of the red circled node it would solve his full problem.

So unless he really needs the correct bind pose he should just do it that way and skip the whole local space bind pose extracting as that info just isn't there, unless an artist adds a bind pose to the FBX.

“Buckshag, what does the C-Meter say about his confused level?”
It’s over 9,000!!!!

Haha :) I think its clear what he wants, he just needs to understand he doesn't need this bind pose transform of the red marked node and that he should just store the bind pose transforms as world space matrix for the other nodes.

This topic is closed to new replies.

Advertisement