Maniphest T47557

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

Assigned To
Sergey Sharybin (sergey)
Authored By
Karja Krähwald (karja)
Feb 25 2016, 3:41 AM
Tags
  • BF Blender
Subscribers
Joshua Leung (aligorith)
Karja Krähwald (karja)
Sergey Sharybin (sergey)

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.

Related Objects

Mentioned In
T101673: Cycles render causes rigged object offset
Mentioned Here
rBf337feaf5a1d: BLender 2.76: We go 'b' series now
rBda81227e54e2: Cycles: Fix wrong sample all direct/indirect settings on sm_50 and higher

Event Timeline

Karja Krähwald (karja) created this task.Feb 25 2016, 3:41 AM
Karja Krähwald (karja) raised the priority of this task from to 90.
Karja Krähwald (karja) updated the task description.
Karja Krähwald (karja) added a project: BF Blender.
Karja Krähwald (karja) edited a custom field.
Karja Krähwald (karja) added a subscriber: Karja Krähwald (karja).
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.
Sergey Sharybin (sergey) added a subscriber: Sergey Sharybin (sergey).

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.

Joshua Leung (aligorith) added a subscriber: Joshua Leung (aligorith).Feb 25 2016, 12:10 PM