• Editor
  • 4.3.16的变换约束


我想知道到为什么最新版中,要把变换约束的默认数值调成100%,实时上用到100%这种情况是极少数的吧?一般情况都是转面中,绑上变换约束,调整成一个合适的数值
还有变换约束跨属性链接,为什么匹配数值了,还是为改变被约束骨骼的默认位置

    Related Discussions
    ...

    yugutou Hmm, the video you attached seems to show a pretty smooth workflow, so I am not sure exactly what you find problematic.
    Regarding the default value for mix, if there are many other users who prefer the default to be 0, we might consider changing it back. However, in cases like the video you showed us, even if the default were 0, the number of steps required to change each mix to values like 3 or 4 would remain the same.

    When the default mix is set to 0, it can be difficult to tell if the constraints are actually being applied. Setting the default mix to 100 makes it easier to see the effects, and then you can adjust the magnitude of those effects afterwards, which I think is a less confusing workflow.


    还有变换约束跨属性链接,为什么匹配数值了,还是为改变被约束骨骼的默认位置

    I think this is just due to you pressing the Match button, but are you referring to some other behavior?

      Misaki
      就比如这样,被约束骨骼的默认状态会发生变换,别的参数也会改变被约束骨骼的默认状态

        yugutou Ah, this is confusing indeed. However, this is currently under discussion within the Spine team, so we may not be able to provide a specific answer at this time. Thank you very much for your feedback!

        When we start remapping transforms to different kinds of transforms, inevitably things will mismatch at first because we change the translation -> translation (easy to match) to translation->scale or translation-> rotation which do not operate the same way.
        If you want to ensure that a bone has a scale of 1 at the current bone location, you'll need to have your input or output calibrated so that it happens.
        If 365.57 is the position where the bone has to have a scale of 1, you can set this number in the first field, or the second, of the source bone side so that it's an extreme. Matching matches the translation of both bones so it is less useful here and could be removed (it is however very useful for translation->translation of course).
        If you want the bone to scale so it's half the size up to 1.5, and have a range for the parent bone of 100 px, you'll instead write on the left 315.57 and 415.57 and on the right 0.5 and 1.5 as ranges, so that the current position is in the middle and set to 1.
        This is a more advanced constraint, so it's normal that things may require a bit more thinking and be a little less straightforward, but as soon as you get the gist of it it is not that bad!

          Erika 听起来有点复杂,我觉应该出一个使用指南

          It is definitely tricky and we'll provide documentation in time. For now we'll try to help you here!

          When mapping to a different property, think about the input value and the output value. If you want the output value to be the setup pose value, you need to setup your ranges so that happens. Erika explained well but I'll try to simplify.

          You want 365.57 to map to 1. Start with:

          365.57 to ? -> 1 to ?

          Next set the ? values to get the behavior you want.

          That simple mapping puts 365.57 as the minimum value for the input side. Alternatively you could put it as the maximum:

          ? to 365.57 -> ? to 1

          Again set the ? values to get the behavior you want.

          A more complex mapping could be to have a range 100 below and 100 above 365.57:

          265.57 to 465.57 -> ? to ?

          Next we know 365.57 is in the center of the range and we want that to map to 1, so whatever the output range on the right is, 1 needs to be in the center. Say we want 0.5 below and 0.5 above:

          265.57 to 465.57 -> 0.5 to 1.5

          With this mapping 365.57 input gives 1 output, just like the minimum and maximum examples above, but with different ranges. As you can see, there are many possible solutions depending on your needs, which is why Match is unable to do it for you.

          You can do similar to arrange 365.57 and 1 to be at say 30% instead of the center (50%), but it takes a little math. We can help with that if needed.

          I hope that helps!

            Nate 好的,感谢您的答复,期待这个功能更加完善~

            There will always be some complexity when setting the ranges. That's the cost of it being so powerful. If you are mapping properties straight across, like the old transform constraint, and you aren't using "Clamp" then it should still be easy to use.

            It is mostly complete already. We will see about adding some visualizations to the viewport so you can see the ranges, and we will add documentation.

              Nate 果然强大都是有代价的XD

              Nate 我明白了,跨属性链接的时候,不应该用匹配,不然会导致数值对应不上。前面是父级的控制范围,去映射后面子级的活动范围。理清楚了逻辑之后,我明白了,太感谢了!!