• Editor
  • Constraint additive behavior change, some limitations

New constraint behavior and how they function (correctly and uniformly) on additive use is a nice and welcome change for the most part, but it also carries a small issue where keyable values cannot be set up as negative, this is more salient when it comes to physics, since I am aware reading negative values such as mass would simply break physics for that bone.
Yet at the same time one cannot, for example, have an additive animation that decreases a bone's mass from, say 100 to 50 (or any other physics property except wind and gravity).

This is not something I'm seeking a solution on, I know it can be worked around by using non-additive sliders and such, or handled in many other ways.
I'm more so suggesting if perhaps it doesn't make more sense to have physics behave as it did before, or is it the case that constraint behavior for physics, IKs, transforms, etc are all neatly tied together and having separate behavior for physics constraints would be inefficient, impractical, or maybe a design choice to not confuse the user with inconsistent behavior.
As is, using physics as additive proves rather pointless.

Is it something still up for adjustments or is it an awkward side effect of something more important that we should learn to work around?

Thanks

  • Misaki ответили на это сообщение.
    Related Discussions
    ...

    Paperbot Thank you for your feedback!

    What type of animation or rig are you having trouble with? To help us understand your needs and challenges, please explain the specific cases in which you are experiencing problems with the current behavior.

    • Paperbot ответили на это сообщение.

      Misaki

      I wouldn't say I'm having trouble with a particular rig. I have some proportion control animations that affect the dimensions of certain elements, including physics tweaks. These are used in conjunction with other animations affecting the same bones and thus are meant to be used as additive.
      Upon attempting to correct these, I noticed I couldn't apply them with negative physics, and then promptly realized the bigger issue that negative physics would cause in animate mode, which doesn't display constraints additively.

      The editor not being capable of setting negative physics values, locking them at 0 (or 0.01 for mass) makes it hard to set up an additive animation that decreases physics over setup values.
      Thus, if one wants to have an animation that reduces mass, for example, it cannot be done in a straight forward way.

      The closest solution to this is to "invert" all other keys within the animation (0.5 scale into 1.5 scale or vice versa, e.g.) and use the animation at -100 mix
      This will indeed cause the object's mass to reduce. One can get 0 mass or negative mass this way, causing the object to fly away, which isn't good of course, but signals to me it's just an editor/UI matter.

      The only solution (other than behavior change, which is also problematic) I can think of to key negative physics properties without breaking the animation view on screen is to maybe have a switch for additive mode within animation mode (dopesheet?). This could also help to visualize how constraints are going to apply as additive, since as of now it will apply them over the setup value, not reflecting how it will look when used as additive.

      However I admit it might be unwarranted use of UI space. So, idk. Always up to your discretion. I just wanted to bring a bit of attention to this minor awkwardness brought about by the constraints update.

      • Misaki ответили на это сообщение.

        Paperbot Thanks for the detailed explanation. I think I understand the issues you mentioned.

        Maybe you're trying too hard to solve everything with animations. At runtime, you can change the value of each physics constraints property from the script. It might be easier to change the property value from the script than to add an animation for the value change.

        Also, if you want to do subtraction instead of addition, it would be better to replace the base animation itself. Is there any reason why the animation cannot be replaced in your case? I would like to confirm if there are cases that can only be solved by additive blending.

        • Paperbot ответили на это сообщение.

          Misaki

          I appreciate you trying to help me out, but as I said, this is not a problem without a workaround, it's more so about a blind spot in the editor's ability to offer a straight forward way to do something that, it can very much do but is locked behind a technicality (physics property can be read as negative if the animation's mix is negative, it's the fact the editor has a safety measure to prevent values below 0 from being entered, also for good reason, as mentioned).
          Yes, physics can be manipulated through script, or in Spine by using sliders, or by setting the animation up for a negative mix. It's a matter of straight forward functionality, which I feel is in line with Spine's design as a lean and consistent well put together tool (which is the norm, to your hard work's credit).

          As for specific cases, I'm sure it's on the rare side. I'll try to explain what I'm doing to give you an idea, sorry if it's long, it's a bit of a niche thing:
          I have this monstrous design of a rig. This involves what would amount to a 3D character creator in a hyper-modular 2D format using many layers strategically broken down and stitched together parts connecting at very specific sections, adjustable and modular faces that retain custom shape before expressions, and all you'd expect: multi-part hairstyles, body proportion, multi-purpose meshes to integrate custom images into the rig. Then multi-layered outfits with full compatibility with all these changes, anything from jackets to earrings, hats, armor, dresses, capes, weapons... etc etc, gives you an idea, I don't think you'd want me to keep going as if this was some sort of pitch.

          The animations themselves are also broken down and meant to be recombined. They work by parts, core movement, arm movement, background moods, gesturing, emotes, base stance type, etc, etc
          All of this variability is able to function because animations do not use simple transforms but an abundance of "targets", used by constraints, typically transform and inverse kinematics. These mark safe positions where sections of the arms lock into, for contact, a specific pose (shushing, hands on hips, crossed arms) or not contact but consistent as the body shifts around (handled separately), Everything adapts to everything else, and it's worth the hassle because movement looks very fluid and natural.

          So when I need to change proportion on something, be it an item, a body part, etc, it may or may not need to shift targets around, affect constraints, etc. And in turn, these targets and little modifications may or may not need to be tweaked by other variables and proportion changes. Meaning if I want to make the arms wider, it's not as simple as a scale transform on setup, it changes many things proportional to it, such as moving certain targets to offset poses, giving them more padding (which may also be affected by an outfit active there) In order to make posing/emotes and transitions smoother, avoid clipping as poses change, keeping variable distances stable (when a character is e.g clapping and the shoulders widen) and so on. So the simplest options are animations or sliders, these may or may not involve physics. On top of that, if they need to dynamically change within a specific animation, the prospect of handling by script is made far more inconvenient.

          Now, because all graphics are at their or close to the max size to avoid pixelation/quality variation, and kept un-deformed in setup for potential mesh/rig modification, it means most of these modifications involve shrinking a group of bones instead of growing them (and moving tweaking relevant targets or applicable extra modifications), meaning physics (if relevant) needs to typically reduce in value.

          It would simply be convenient if I could drop the physics key in here animation as well (as I had been doing before the changes), or you know, I can have a separate setting handled by script, tracking states and recalculating mixed stuff, or on a separate animation, or the same animation with a non-additive slider, there are many options.
          Personally, I do not mind it in the slightest, it is a minor inconvenience and I'm no stranger to workarounds.
          But the fact of the matter is that Spine can actually handle it, it can execute negative physics, it's just not able to set up a negative physics value on animations through the editor. I would consider this a minor design flaw.

          Sorry for the long explanation, but as I said, I'm handling very specific challenges so I cannot give you a simpler example.

          7 дней спустя

          Sorry I haven't responded yet, I've been out. I'll respond as soon as I get free!