Page MenuHome

Several issues with constraints in a negative scaled armature
Closed, ArchivedPublic

Description

System Information
Windows 7 64, GTX 980

Blender Version
Broken: f337fea + da81227 (2.77)

Short description of error
As title says, there are problems with armature constraints if the armature object is scaled negativ on at least one axis.
Some constraints get wrong rotation or scale the bone negativ.

Not sure if this is a known issue. Aligorith has mentioned something about rotation & scale handling in this blog: http://code.blender.org/2015/03/animation-system-roadmap-2015-edition/

After reading about the New Interpolation Method for Constraints in 2.77, I was curious to see if this fixes some issues.
But unfortunately it introduces more problems, so 2.77 was a step back in this case.

Exact steps for others to reproduce the error
To find out whats going wrong with the constraints, I have prepared a file with a problem showcase:

Please note that the armature object is scaled negativ on X.
All constraint checkboxes are disabled. Keep this in mind when testing copy/limit rotations.

This causes two main issues:

  • Some Constraints automatically scale the bone negativ, although nothing should happen.
  • In 2.77, reducing the influence under 100% causes the same effect and in addition heavy rotation errors, for example on "damped track" and "copy rotation" constraints.

Why scaling armatures or its parents negativ?
To have a mirrored setup without taking much changes or breaking links.
For example to use a right hand object as left hand object.

Event Timeline

Karja Krähwald (karja) raised the priority of this task from to 90.
Karja Krähwald (karja) updated the task description. (Show Details)
Karja Krähwald (karja) edited a custom field.
Sergey Sharybin (sergey) changed the task status from Unknown Status to Unknown Status.Feb 25 2016, 10:33 AM
Sergey Sharybin (sergey) claimed this task.

This is just a limitation of conatraint stack, which passes transformation as a 4x4 matrix and when individual transform channels are needed constraint will decomposite the matrix. This decomposition is not mathematically defined for the cases when there's negative scale present: basically you can't distinguish negative scale from 180 rotation, roughly speaking.

There's no simple fix for this issue, any solution would mean re-writing constraints stack from scratch. So thanks for the report, but it's a known limitation.