I am struggling to understand what happens here, it is first time I am using this workflow and even if I know workaround I want to make sure I get it right.
Update Bindings behaviour with Bone Compensation feature
When you apply attachment compensation (the Images
button in the UI) in animate mode, it moves the vertices for the visible attachments using a deform key. It doesn't set deform keys for attachments that aren't visible.
When you set a deform key, the key stores an offset in each bound bone's local coordinates. For every bone, the position where the bone wants the vertex is moved by that much.
When you update bindings, Spine uses the world position of each vertex, converts it into the local coordinates for each bound bone, and stores that for each bone. That is called the "bind pose" and it is the vertex positions where all bound bones agree on -- all the bones want the vertices at the same position. That's why when you change weights, the vertices don't move. If you move one bone, that bone will want the vertices elsewhere, while all the other bones will continue to want the vertex where it was. The weights control the influence of each bone on the vertices, allowing you to have some vertices move more with one bone than with another.
When you update bindings in animate mode with a deform key set, the bindings you store are based on the vertex positions with the deform key's offset added to them. When you delete the deform key, the vertex positions are different, so they jump.
Probably you want to do your work in setup mode. In setup mode there is no deform keys, the vertices are changed and for all attachments, not just the visible ones. It also works on region attachments, which can't work in animate mode.
Ah I get now why I was confused, I was expecting Spine also create deform key for the mesh attachment that belongs to a skin that is not active, I was seeing it just because I combined it in Skins View but it was not active. So compensation mode worked for mesh that was in inactive skin, but it did not create deform key for that mesh. But let me ask why compensation works for inactive skin if it does create deform key?
It's fine to see the jump after I click update. Since updating the pose will still keep the deform key, after deleting the key I see it go exactly where I had it before bind
warmanw why compensation works for inactive skin if it does create deform key?
Compensation in animate mode doesn't affect attachments that aren't visible (hidden or in a skin that is not active). If you have a skin that is pinned (so it's visible) but it's not active, then it looks like compensation is applied, but if you switch to setup more and back (or unpin and pin again), you'll see it was not compensated. We'll fix this.
You probably want to use compensation in setup mode. You may want to copy/paste bone or mesh positions from animate mode to setup mode.