• Editor
  • Experimenting with New Transform Constraint

Related Discussions
...
  • Изменено

Hi @Nate ,
is it possible to share the solution, how it works? I have done an animation for the "minute hand"-bone (10frames) with one tick. Then i created a slider constraint with "second hand"-bone rotation for "minute hand"-bone-animation, limitation 90 to 89. So when the second hand-bone passes through the 12, the "minute hand" ticks one further, but once it hits "3" (on clock, 90° more) it snaps back. Frame-counter of slider constraint jumped back from 900 to 0 in this moment --> It jumps back, when it hits 0° rotation. What steps am i missing?

Do i have to use the 180°-360° rotation split, what Harald has written above to avoid the snap? Or is there another solution with the slider?

Sure, I can post the finished project, but that ruins the fun a little so I'll wait a while. 😬 If I post it, there would be a strong temptation to just look at the solution rather than figure it out. Better not to tempt!

Probably you are running into "world rotation wrapping". World rotation is defined as the direction the bone is pointing in world space, which in the Spine editor is screen space, ie your monitor. There are only 360 degrees in a circle. As a bone rotates, at some point its world rotation has to jump from 359.999 back to 0. That jump can wreak havoc with your slider or transform constraints, since it will cause the target bones to jump.

0 world rotation is pointing right, which would be 03:00 on a clock. That's why you see a jump at 03:00. As as you rotate clockwise past 03:00 you jump from 0 to 359.999 degrees world rotation.

To prevent jumps with your constraints, use local space by checking Local on the left (source bone) side of the transform constraint properties. In local space the local rotation is defined so 0 degrees is pointing in the direction of the parent bone and any other value is how far from 0. In local space you can go > 360 or < -360, around and around, without any jumps back to 0.

It's so common to use local space on the source side, maybe it should be the default. 🤔

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

    Ok, local was already a solution option, but then my constraint couldn't move anymore. I could see i still used the world coordinates instead of local coordinates. So one step further 🙂. Thanks for the hint. So don't share the project. 😃

    • Nate оценил это.

    Nate Nothing seems to be working properly 😄

    I used the motor bone to rotate all the hand and added a tick animation (a slider bound to the motor bone) for the second hand, which ticks but doesn’t move forward. I can’t figure out how you manage the stepped movement of the minute hand.

    For the shadows, I use transform constraints to just move them locally from -20 to 20 on the Y-axis during the 0–180° rotation. But when I duplicate the constraint for the other half, the constraint overrides the previous one.

    Any tips for us? 😄

    Nate
    我是通过滑块跟物理去做的,不知道是否正确,但是阴影我不知道该怎么处理了

      the shadows also can be done with sliders but I really want to see if there is an option with transform constraints

      my shadows work but only half the cycle 😃

        Nate


        另外我觉得滑块约束缺一个跟变换约束一样逻辑的东西
        1.下面主要用来控制它的映射方式,直接通过匹配数值就好了
        2.通过混合数值的大小和正反来控制,映射的比列
        滑块约束也添加一个类似变换约束的匹配数值,和混合来控制比例,会不会方便很多?

        warmanw 哈哈哈期待他们公布答案

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

          So I basically made another tick animation for minute hand now it looks great, still need to solve shadow issue

          • Изменено

          yugutou If you annotate your images only with numbers, then write text for each number, we can translate it more easily. 🙂

          I translated the image text, but I'm still not sure what your suggestion is. Can you explain it more? Do you suggest a slider setting to choose positive or negative? You can uncheck Loop for a slider and it works similar to transform constraint Clamp.

          warmanw the shadows also can be done with sliders but I really want to see if there is an option with transform constraints

          Probably it's possible, but sliders are so easy!

          Here's a little clue from our (Soeren's) solution:

          • yugutou ответили на это сообщение.
          • warmanw оценил это.
            • Изменено

            That's not a clue but solution 😃 I thought we only should use one second hand animation slider

            Doesn't it make sense to allow lower transform constraint to affect if the the higher in the order has being clamped so it doesn't affect. I hope this make sense. Its like i wear shorts which fully covers my hips but it does not cover legs. Currently i dont see legs kinda shorts replace legs

            A slider can stomp (or mix from) values from your animations. If you don't like that, which is common, then you can check Additive on the slider. That makes key values add to whatever the pose is when the constraint is applied, instead of replacing (or mixing from) the current value. Keys are stored relative to the setup pose, so when you key the setup pose, it's actually storing zero. The current value plus zero is of course the current value, so you can have an animation that has no effect in some parts.

            Here's the project with our solution:

            Try your own solution before looking at this project! Don't ruin the fun! 😃

            clock-solution.zip
            109kB
            • warmanw ответили на это сообщение.

              Nate 还是不太明白你的建议是什么

              就是为滑块约束也添加上,类似变换约束的【匹配】按钮,这样就不用手动输入数值了

              变换约束的【混合】,通过0-100、-100-0,或者任意数值,来控制骨骼之间的映射变换比例,和正反变换方向的

              我认为滑块约束的混合或者应该有个类似的功能,用来控制骨骼跟时间轴之间的映射变换比例,和映射方向
              目前滑块约束的混合,是用来控制动画的混合,而不是骨骼跟时间轴映射之间的混合
              不知道这样描述可以吗

              You're right that sliders are similar to transform constraints. Sliders map a bone value to animation frames.

              I didn't quite understand this part:

              The current mix of slider constraints is used to control the mixing of animations, not the mixing between bones and timeline maps

              The slider mix is between the current pose and the pose from the slider's animation. It is only sort of mixing animations. It's better to think of sliders differently from animations. You don't really want to use sliders to mix animations. For that you should use the Preview view (AnimationState at runtime). For example, if your character is holding a burning torch, you wouldn't use a slider. You would play an animation so the torch burning animation is always playing.

              Sliders sort of abuse an animation to allow you to apply a pose. Sliders can sort of "play" and mix animations, but it doesn't have the control you get with AnimationState. Sliders are best for storing poses and rigging that needs poses. There are many uses though, I'm sure you guys will come up with crazy new stuff!

              We could have a match button, though it would only be able to set the bone from minimum value. The only problem is there's not a great place in the UI to locate it. 🤔

              Was there another suggestion you had beside the match button?

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

                Nate 滑块混合是指当前姿势和滑块动画姿势之间的混合

                我也是这样理解的

                Nate 滑块和变换约束很相似

                变换约束的混合,则可以通过调整他数值的大小,来影响两个骨骼之间的运动比例。
                现在的变换约束,就可以随便链接两个属性,然后用新的匹配数值功能,不用在意数值大小即可默认原位(这点很棒!),然后通过混合来改变属性之间的比例,不用被束缚在填数值上
                但是滑块约束则缺少一种,可以直接控制骨骼,对动画帧映射比例以及方向的手段。当然填数值也可以实现这一点,但我觉得能有一个类似于变换约束的【混合】,能直接做到这一点可能会更方便?
                只是个人的一点小建议,不行的话也请不要放心上

                Nate
                比如变换约束这样,用下面的链接确定好映射方式之后,直接匹配一下数值回原位,然后通过上面的混合,即可控制它的映射的比例,跟正反方向,而不用去下面调数值。
                我觉得滑块约束,缺少一个这样直接控制比例跟方向的手段

                I see, thanks for the explanation!

                With a transform constraint you can either set the mix or edit the mapping numbers to control how much affect the transform constraint has. Setting the mix is easier, but it can be convenient to use the mappings because then you can animation 0 to 100% mix to get the effect you want. Otherwise you have to remember to key the mix eg 0 to 53.76%.

                A slider's mix works exactly the same way as the transform constraint, so you can use it to control how much effect you get from the slider. Other ways to change the magnitude of the slider effect is to change the mapping numbers or edit the animation keys or animation duration.

                If we had another setting on the slider for controlling how much of an effect you get, what would it do? That sounds like the same thing mix does. If you have an animation that moves a bone, you can set a mix < 100% to move it less or > 100% to move it more.

                Here's an interesting setup to think about, magnetic IK!

                  Nate ohhhh这个吸附效果是怎么做到的,完全想不出来

                  Nate
                  我好像明白大概的思路了,但是效果跟你的不太一样🤓