January 10th, 2016
After an extraordinarily long delay, Spine 3.0.00 has been released!
While the changelog has gotten quite long, the magnitude of a few particular changes may not be readily apparent. In fact, even when running the new version you may not notice any big chances right off the bat. So what's the big deal?
In most software, when a parent bone is scaled nonuniformly (a different scale for X and Y), the child bones are scaled in the direction the parent axis is pointing. Since all the child bones rarely point in the same direction as the parent, the child bones become skewed -- the X and Y directions are no longer perpendicular.
Skew can make for powerful effects, but increases the complexity of the math for bones. When initially developing Spine we decided to simplify how scale is applied: scale always uses the bone's local axes so skew can never happen. This allowed us to focus on features that were more important at the time, such as making an app that works, but has a number of drawbacks. It looks like this:
Here Spineboy's back thigh has been scaled on the X axis (the scale tool's red axis) which elongates the thigh, shin, and foot along their local X axes. This is almost never the desired result, so many Spine users disable scale inheritance. Also, this non-skewing scale prevents scaling to -1 to flip a bone and prevents doing squash and stretch on an entire skeleton. These are some pretty big drawbacks!
Spine v3 finally fixes this. Scale is now much more useful and can squash and stretch the skeleton. This goes a long way to helping skeletal animation from feeling rigid or robotic.
With the new scaling, flipping is done by scaling an axis to -1. Spine no longer has a flip timeline. Unfortunately this means any projects using flip timelines will need to be adjusted to use negative scale. Spine will show a warning when the project is opened.
The new scaling also affects IK. It is no longer supported to have other bones between the parent and child IK bones. On the bright side, IK now allows the parent and child bones to be translated and scaled, which can make for some neat effects.
This is a new kind of constraint that allows a bone's world position to be mixed with another bone's world position. This can be used for some tricky rigging problems, such as keeping a bone halfway between two other bones at all times. The transform constraint mix currently isn't keyable, but will be in the future.
Currently only the spine-libgdx runtime supports the new scaling and other features in Spine v3. The other runtimes will be updated soon. Until then, you may want to delay updating your Spine version.
Spine has always used pretty small fonts. On a high DPI screen they became very tiny and made the app hard to work with. Spine v3 now has a slightly larger default font size and configurable font size settings. Currently the largest size is good for up to around 200% DPI.
The new fonts support Unicode, so you are no longer limited to using ASCII. Further, the fonts support typing in Chinese, Japanese, and Korean. This also opens the door for Spine to be localized to those languages in the near future.
Spine Essential users now have access to ghosting!
There are many fixes and minor features in addition to the above. We hate that this large release has taken so long to get out, but it really makes for a big improvement to Spine and we're glad to have gotten it done. We plan to stay on top of new releases like we have in the past, so you can expect more from us soon.
Discuss this post on the Spine forum.