• Editor
  • 360 rotation cycle not able to use Offset.

Hello! I'm trying to create multiple bones rotating in a perfect 360 degree loop but offset from each other.

Offset needs the first and last keys to be the same, but if I set the first and last keys to 0 degrees, obviously no rotation is happening.
If first frame is 0 degrees and last is 360, this is a perfect loop of a single rotation but I now cannot offset because the first and last frames are different values.
If I do what used to work with 4 keyframes (0, 120, 240, 0) the final section (240-0) now rotates back the opposite direction.

is there a solution for this or do I have to manually set the rotation offset myself with rotation values?
layer 1 (0 to 360)
layer 2 (30 to 390)
layer 3 (60 to 420)
etc.?

Related Discussions
...

To achieve a perfect 360-degree rotation loop with multiple bones offset from each other, you can follow these steps:

  1. Set Up Keyframes for 360-Degree Rotation:

    • Create keyframes at 0°, 120°, 240°, and back to 0° to ensure a smooth 360-degree rotation. This setup avoids the issue of the bone rotating back in the opposite direction.
  2. Offset Each Bone Manually:

    • For each bone, manually adjust the keyframes to create the desired offset. For example:
      • Bone 1: Keyframes at 0°, 120°, 240°, 0°
      • Bone 2: Keyframes at 30°, 150°, 270°, 30°
      • Bone 3: Keyframes at 60°, 180°, 300°, 60°
    • This ensures that each bone starts its rotation at a different point, creating the offset effect.
  3. Use Ghosting for Reference:

    • Utilize the ghosting feature to visualize the positions of the bones at different frames. This can help you align the rotations accurately.
  4. Check for Hidden Keys:

    • Ensure that all keyframes are visible by enabling "Show all skin attachments" or pressing ctrl+H (cmd+H on Mac) to show all bones/slots.

By manually setting the rotation values for each bone, you can achieve the desired offset effect without running into issues with the Offset tool's requirement for the first and last keys to be the same.

For more detailed information, you can refer to the Spine User Guide on Key Offset.

thank you Spinebot but the ...

Create keyframes at 0°, 120°, 240°, and back to 0° to ensure a smooth 360-degree rotation.

...method no longer appears to work!

That is the result of doing the staggered keyframe method, as you can see the last section is rotation BACK to 0, not forward to 360/0.

the 0 120 240 0 method did work with 'World' space selected, but the 'Offset' function still insists my first and last keyframes are different so will not slide the timeline 🙁

  • इस पर Misaki ने जवाब दिया।

    JayW Sorry, it seems that Spinebot has explained the behavior of rotation for older versions (up to 3.8). Starting with 4.0, if you want to offset a 360 degree rotation, you need to set the rotation value back to 0 just after reaching 360 degrees, as shown below:

    In the example animation above, three keys have been added: a key for rotation of 0 degrees at frame 0, a key for rotation of 360 degrees at frame 29.9, and a key for rotation of 0 degrees at frame 30. In this way, by returning the rotation value to 0 in a very short time, it is possible to achieve a very smooth 360-degree rotation:

    To place keys on a fractional frame such as 29.9, either press the Shift key to disable frame snapping, or type the value directly into the Current field in the Dopesheet view and move the Timeline bar:

    • JayW ने इसे लाइक किया।

    Thanks Misaki. I did try this with a single frame difference before but in the preview in the editor the animation flickered wildly between frames (due to higher framerate in the editor). With a subframe it's less noticeable. I still occasionally see a flicker as the rotation goes from 360 to 0 in 0.1 frames but I'm assuming that's only when the framerate of my monitor/spine happens to catch the tiny transition.

    So it still makes the preview look funky but when exporting a movie at a normal frame rate it shouldn't make a practical difference so it's an OK workaround.

    Would be nice to have a checkbox option for forced rotations (eg "1 x clockwise", "2 x counter clockwise") to create perfect cycles without having to add subframe keyframes.

    • इस पर Misaki ने जवाब दिया।

      JayW One thing I forgot to add is that you should set the curve (interpolation) between the keys to be stepped when the rotation is reset from 360 to 0. If it is linear or bezier, there would be an interpolated animation from 360 back to 0, which would cause flickering.

      Would be nice to have a checkbox option for forced rotations (eg "1 x clockwise", "2 x counter clockwise") to create perfect cycles without having to add subframe keyframes.

      Indeed, it would be useful to be able to specify a 360 degree rotation like sequence attachments. I created an issue ticket based on that idea:
      EsotericSoftware/spine-editor811

      • JayW ने इसे लाइक किया।

      Using stepped... of course! I'm dumb 🙂