• Bugs
  • Copying Key in Local/Parent/World always returns local

Hi there,

I realized that when I have the axes set to a certain value (local, parent, world), and copy a key, when I paste it, it pastes it as local always.

E.g. a bone x position in world axis is 2000, I copy it, and then I paste it at another time position where the root was moved 200 pixels: then the pasted value is 2200, because it pasted relative to the parent/ locally.
So instead I need to select and copy the 2000 value text directly, and paste it manually, to have the 2000 x value pasted correctly relative to the world axis. So I cannot copy paste both x and y at once on world axis, and it makes it clumsy to have to select the numeric value each time.

My suggestion is that whenever you copy a transform, scale, etc. key, it copies the values according to the currently selected axis, to allow for flexible and fast usage.

  • تم التحرير

Could you tell us what version of Spine you are using? As far as I have tried the example you described, if I copy the bone transform with the World axis selected, I can paste the 2000 value in the another animation. I have prepared a video to clarify what I have tried. If this is not the operation you are describing, I would appreciate further clarification on the procedure.

Hmm, yeah, it's actually really weird, because sometimes it works, sometimes it doesn't.
I thought it was always like that.
I don't even know why, it seems very random.

I actually would have preferred not to show too much of the animation, but I'm not able to recreate it. So here's where it happens, I paste the previous bone transform and it remains on the same place, as if it was locally calculated.
(It's the selected IK leg target bone I'm talking about: when you see the notification "key pasted", nothing happens):

To make it a bit clearer, if I change the second keyframe, and then copy and paste the first key frame on it, it pastes it again as if it was locally saved, even though I'm the entire time on the world axis:

If you compare the two frames at the beginning and end of the recording, the pasted bone is not on the same world position:

It's super weird though, because rarely it actually works (the same keyframe), and most of the times it doesn't, and at other positions of the timeline it works.
And I checked, there's nothing wrong with the IK constraint either.
The IK target bone is the child of the moving hand shaped bone at the tail of the lion.

I cannot tell when it happens, it feels rather buggy 😛


And I forgot to mention I use the latest stable 4.1.17

Thank you for elaborating! Could you please send us that Spine project via email so we can investigate this issue?: contact@esotericsoftware.com
You do not need to send us the images folder, as we only need to confirm the behavior of the bones and keys. We would also appreciate it if you could minimize the project such as removing animations which have no problem.

I think I understand what ManInCool is trying to suggest. I added a simple Spine file to help out. I think the confusion lies in both parent bone and child bone are translating. When you copy the translation key, it is always going to be relative to the parent bone. What ManInCool wants is have both keys on the child bone have the same world coordinates.

Ahhhh, I think I understand the cause of the confusion. My video showed "copying the bone transform", but what ManInCool was trying in the GIFs is "copying the translate key". If you copy the bone transforms, they will be correctly pasted in absolute position according to the World axis, even if the parent bone moves.

@ManInCool Could you please try to press Ctrl+C after selecting the bone name on the Tree view, and paste it to another frame?
Since keys store the difference of the position relative to the position of the bone in the setup pose, it is correct behavior not to move to the absolute position even if the World axis is selected when pasting it.

@SilverStraw I got this idea from the project you attached. Thank you!

Hey,

yes, that's what makes the difference when it works and when it doesn't!
Thank you silverstraw for pointing that out!

Misaki, selecting the bone and then copying and pasting works indeed!

So I suppose as a feature request, I would suggest then as silverstraw has pointed out, that even Transform keys get pasted relative to the axis that has been selected, or that there be at least an option to set it that way. For certain movements that can really speed up the animation process, not having to re-select the bone each time.

And with it, I would find it so useful if you can copy the bone transform after working on the transform values or after scrubbing or setting the time bar on the time line:
e.g. I click on the values, or select the transform tool (transform, rotate, scale, skew), and if I press now ctrl + C the bone transform of the currently selected bone/s at the current position gets copied. Currently nothing happens when you do after clicking on the transform box.
So here after working with or clicking on the transform tool box, I would like to be able to press ctrl + C.

Same after scrubbing or setting the time bar:

Basically so that the "bone transform copy state" remains active all the time until either a key frame is selected, or no bone is selected.
Currently I need to click on the bone every time before copying the bone transform, even if it's already selected.

In any case, I know now how to make it work consistently and how it functions, so thank you very much Misaki for the clarifications and explanations!

Hey ManInCool,

ManInCool wrote

So I suppose as a feature request, I would suggest then as silverstraw has pointed out, that even Transform keys get pasted relative to the axis that has been selected, or that there be at least an option to set it that way.

I'm not sure if thats possible as transforms from parent bones affect their child's bones as explained here: Bones - Spine User Guide: Bone transforms

We will investigate to see what can be done.

In the meantime maybe this can help with your key copy/pasting

If you click once on your Translate numeric display you can just CTRL+C/ CTRL+V desired value

Clicking on the Translate icon will select the Translate tool. This is a known mechanic and we can not change it as it would confuse a lot of users.

My personal favorite and probably the fastest way to copy/paste keys is selecting a key then SHIFT+CTRL+LMB drag will copy your desired key.

Also keep track of not only which bone is selected, but also which key. You can be on e.g. frame 30 but still selected the key on frame 15, you will copy the values from the selected key, not the values that your time marker is.

Hope this helps

Hello Sinisa,

Thank you for the message.

I'm not sure it's clear what I was trying to communicate:

For some clarification:

My feature request was not to stop the automatic relationship between parent and child transformation. But that when copying a keyframe in "World" axis, the displayed world transform values are copied and pasted. Not it's values relative to the parent, as in "Local" axis, they way it currently works.

Also, I was not suggesting to change the functionality of selecting the transform tool when clicking on it.
But:
When clicking and selecting a bone, I can press ctrl+C to copy the bone transform. As soon as I click on the transform tool box, or the timeline (without selecting a key frame, or unselecting the currently selected bone), when I press ctrl+C nothing happens anymore, even though the bone is still selected.
Which requires me to click on it again and again for each copy paste.

@ManInCool Thank you for your clarification! I have shared this issue within the Spine team, and we are in agreement that it would be a good idea to make some improvements, but we are still investigating and considering what is the best solution for this. I'll reply to this thread when there is any progress on this!

It sounds to me like there's a bit of confusion about the Spine features being used, so I hope to add a bit of clarification.
This thread also made me realize some of the concepts here are indeed lacking or not explained explicitly in the user guide, so I've made an internal note to clarify these better. (so thanks for the post!)

One of the first things you should know about the way keys are stored in animations, is that animations are always relative to the setup pose.
This means that if you change the position of a bone in setup, all the animations will reflect this change.
Which means that when a key is stored in an animation for a bone transform, what is stored in the key is the difference in parent axis from a bone transform compared to the setup pose.
This allows a great flexibility in the way these animations are used, for example, you can layer animations on different tracks, or even import animations from one skeleton to another s long as the bones match just to name a couple of them.

When you have the dopesheet or one of the transform tools in focus, you are copying said keys. (you can tell if the dopesheet is in focus when you press a key combination because the selected view has the name underlined.)

When you instead select the bones, and not the keys, and you leave the viewport in focus, you can copy all the transforms for a given bone or bones, even if they don't have any key stored (for example, you can also copy the transforms in setup, and even from one skeleton to another, which is instead disallowed for keys).
Tools - Spine User Guide: Copy/paste

This second mode can copy the local or the world axis transforms, so depending on the axis you select at the moment you paste, the position of the target bone may change to reflect your selected axis.

Again, thanks for raising the issue, and I hope this clarifies things a little!

@Misaki great! Thank you very much!
@Erika thank you for the clarifications. My suggestion was to be able to copy transform values relative to the world axis, even when focused on dopesheet/transform tools/... Certain animations would be faster to create this way.