Blender Git Loki
Revision abcb084 by Sybren A. Stüvel (temp-T82156-parenting-and-constraints) November 2, 2020, 14:50 (GMT) |
Merge remote-tracking branch 'origin/master' into temp-T82156-parenting-and-constraints |
Revision 75d1139 by Sybren A. Stüvel (temp-T82156-parenting-and-constraints) November 2, 2020, 14:20 (GMT) |
Fix T82156: Object with Copy Rotation Constraints translates when being parented Avoid application of constraints when computing the parent-inverse matrix. Constraints are meant to be evaluated last; object transforms are computed this order: 1. `parent->obmat` (the parent object's world matrix) 2. `ob->parentinv` (the object's parent-inverse matrix) 3. Object's loc/rot/scale 4. Object's constraint evaluation When the constraints are used to compute the parent-inverse matrix, their effect is moved from step 4 to step 2 in this list, potentially rotating or scaling the object's local transform. This causes unwanted movement as reported in T82156. This behaviour (erroneously taking the constraints into account) has been in Blender since the first commit, so historically I can only find "Initial revision" as context. |
Revision e5e2a10 by Sybren A. Stüvel (temp-T82156-parenting-and-constraints) November 2, 2020, 14:16 (GMT) |
Cleanup: Document output of `BKE_object_where_is_calc` and friends Add a comment to the declaration of the `BKE_object_where_is_calc...()` functions to explain where the result of the calculation is stored. No functional changes. |
Revision 3e9823a by Sybren A. Stüvel (temp-T82156-parenting-and-constraints) November 2, 2020, 10:16 (GMT) |
Cleanup: Sanitise return value of `ED_object_parent_set()` Return `false` from `ED_object_parent_set()` when parent and child are the same object. This would break the parenting operator, as returning `false` stops its loop over all selected objects. This tight coupling caused T82312. The loop now has its own check for this, so that it properly continues, and the implementation of `ED_object_parent_set()` is decoupled from its surrounding code. No functional changes. |