Search Unity

  1. Megacity Metro Demo now available. Download now.
    Dismiss Notice
  2. Unity support for visionOS is now available. Learn more in our blog post.
    Dismiss Notice

Segment Scale Compensate not working?

Discussion in 'Animation' started by Jimmy-Ooi, Jul 11, 2017.

  1. Jimmy-Ooi

    Jimmy-Ooi

    Joined:
    May 2, 2017
    Posts:
    2
    I've a stretch and squash rig from maya that depends on segment scale compensation to work. However, after using game exporter to export, it doesn't have the same stretch and squash animation reflected in maya. Its as if the segment scale compensation wasn't turn on.
    I've read that unity 2017.1 does support segment scale compensation for maya now. Is there anything that i'm missing or done wrongly?
     
  2. thomaschollet

    thomaschollet

    Unity Technologies

    Joined:
    Nov 2, 2016
    Posts:
    17
    Scale compensation still have to be turned off if you're animating scale in your scene.
    Before 2017.1, scale compensation always had to be turned off because file scaling and unit settings would always interfere and produce wrong skeleton poses and animations even though the files did not contain any scale animation.
     
  3. theANMATOR2b

    theANMATOR2b

    Joined:
    Jul 12, 2014
    Posts:
    7,790
  4. NoiseFloorDev

    NoiseFloorDev

    Joined:
    May 13, 2017
    Posts:
    104
    I gave it a try too, since I was excited to see the mention of SSC support in 2017.1, but it doesn't work for me either.

    What? Seriously? If you're not animating, it's always been trivial to bake scale down to the model. The entire point of segment scale compensate is for animation!
     
  5. theANMATOR2b

    theANMATOR2b

    Joined:
    Jul 12, 2014
    Posts:
    7,790
    This is a built in solution for Maya that allows a hierarchy not to inherit the bone scale of a parent bone. Generic rig still supports squash and stretch bones - but the rig has to be set up by the rigger/animator. Unity is not responsible for supporting all custom enhancement tools available in only one or another software package.
    To overcome this limitation - use the duel rig set up mentioned in the answers thread.

    A better request is to ask Unity to support solutions that are used by all 3D animation packages - like angle joint deformation which has been built into all major 3D software packages since around 2005. That'd be nice to have - rather than supporting one software packages compensation scaling method.
     
  6. Jimmy-Ooi

    Jimmy-Ooi

    Joined:
    May 2, 2017
    Posts:
    2
    ooo Ok~ Got it. Thanks guys for the answer. :)
     
  7. NoiseFloorDev

    NoiseFloorDev

    Joined:
    May 13, 2017
    Posts:
    104
    Please, settle down. I'm not saying they have to support it or anything else. I'm saying that this isn't support for it, because it doesn't handle the basic purpose of the feature--so they shouldn't be claiming that they support it. It'd be like saying "Unity, now with dual quaternion support! (but only if you don't move the joints)".
     
  8. theANMATOR2b

    theANMATOR2b

    Joined:
    Jul 12, 2014
    Posts:
    7,790
    I've actually performed a similar set up in 3D Max for squash and stretch limbs. It's a bit tedious - because in Max (similar to Maya) there will be two rigs, animate on the first with squash/stretch bones enabled (similar to scale compensate) and then match the scaled bones in the first rig with wire parameters to place the end joints where the squash and stretch bones are animated to.

    To be honest - it is really tedious to set up - but when I was performing the rigging and wire parameters for the second rig - I actually enjoyed it even though it was a lot longer to set up - digging deep into the bone system in Max - which I rarely do because CAT and biped are there sitting ready to be used in 1/8th the set up time.

    Give it a shot in Maya - you might find enjoyment with working on the 'metal' within the bone and rigging system - as I did in Max.
     
  9. alanmthomas

    alanmthomas

    Joined:
    Sep 7, 2015
    Posts:
    197
    I'm not sure if you've managed to work this out yet. Hopefully you have. In the event that anyone else comes across this thread and is looking for a potential solution that can work in the Maya to Unity workflow, this is something that I've come up with that solved a lot of headaches.

    First, you do need to turn off "Segment Scale Compensate"(SSC) for all of your joints. The model that I am working with has stretchy limbs and a stretchy/squashy spine. The legs were a trouble point for me. When the legs stretched, the feet would wind up distorting as well which was not the effect that I was going for and not what would occur prior to deactivating SSC.

    I pulled up the skeleton in Maya, selected the ankle joint (the joint where I wanted the stretch/squash to stop) and then selected "Disconnect Joint" from the skeleton menu. This resulted in a new, independent joint chain for the foot. I then constrained that new chain to the end of the leg chain using point and orient constraints. My existing rig still functions as expected and the foot no longer distorts. This method let me avoid having to write complex expressions attempting to figure out the maths involved in how SSC actually works.

    The same approach worked for the spine. Disconnect the joint along the spine where you would like the stretch/squash deformations to stop and then constrain the new chain in the same method.

    Exporting to Unity at this point gives me exactly the results that I hoped for and avoided having to rebuild the rig, write up expressions to deal with a lack of SSC and keep the animations that I've already worked on.

    I hope this helps anyone that comes across this issue. Lots of info out there about how to quickly disable SSC but not a whole lot on what to do to deal with the results once you do.
     
    Switch2803 and theANMATOR2b like this.