Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlexander Gavrilov <angavrilov@gmail.com>2021-08-02 19:08:12 +0300
committerAlexander Gavrilov <angavrilov@gmail.com>2021-08-05 21:21:29 +0300
commitcf10eb54cc4bc89e763dc48644c402f7578fa6b2 (patch)
tree1d3773a26ba46ae7f240512fdaab8eee108730e2 /source/blender/makesrna
parentd01781129fab7846a6a03815b0c0b48b2a809c39 (diff)
Action Constraint: add Split Channels Mix choices from Copy Transforms
Practice shows that when combining actions and direct animation it is usually best to combine location, rotation and scale separately, which is implemented by the Split Channels modes recently introduced in D9469 for Copy Transforms. This completes the same set of 6 choices for the Action Constraint. The default for new constraints is changed to the newly added Before Original (Split Channels) mode. The original patch is motivated by Loic Pinsard, who created an addon that does the equivalent of this feature by splitting the action into two, separating location and rotation+scale. Differential Revision: https://developer.blender.org/D7547
Diffstat (limited to 'source/blender/makesrna')
-rw-r--r--source/blender/makesrna/intern/rna_constraint.c48
1 files changed, 35 insertions, 13 deletions
diff --git a/source/blender/makesrna/intern/rna_constraint.c b/source/blender/makesrna/intern/rna_constraint.c
index a0a0a41b58d..e36d052d27c 100644
--- a/source/blender/makesrna/intern/rna_constraint.c
+++ b/source/blender/makesrna/intern/rna_constraint.c
@@ -679,7 +679,7 @@ static void rna_ActionConstraint_mix_mode_set(PointerRNA *ptr, int value)
acon->mix_mode = value;
/* The After mode can be computed in world space for efficiency
- * and backward compatibility, while Before requires Local. */
+ * and backward compatibility, while Before or Split requires Local. */
if (ELEM(value, ACTCON_MIX_AFTER, ACTCON_MIX_AFTER_FULL)) {
con->ownspace = CONSTRAINT_SPACE_WORLD;
}
@@ -1773,25 +1773,47 @@ static void rna_def_constraint_action(BlenderRNA *brna)
};
static const EnumPropertyItem mix_mode_items[] = {
+ {ACTCON_MIX_BEFORE_FULL,
+ "BEFORE_FULL",
+ 0,
+ "Before Original (Full)",
+ "Apply the action channels before the original transformation, as if applied to an "
+ "imaginary parent in Full Inherit Scale mode. Will create shear when combining rotation "
+ "and non-uniform scale"},
{ACTCON_MIX_BEFORE,
"BEFORE",
0,
- "Before Original",
- "Apply the action channels before the original transformation, "
- "as if applied to an imaginary parent with Aligned Inherit Scale"},
- {ACTCON_MIX_AFTER,
- "AFTER",
+ "Before Original (Aligned)",
+ "Apply the action channels before the original transformation, as if applied to an "
+ "imaginary parent in Aligned Inherit Scale mode. This effectively uses Full for location "
+ "and Split Channels for rotation and scale"},
+ {ACTCON_MIX_BEFORE_SPLIT,
+ "BEFORE_SPLIT",
0,
- "After Original",
- "Apply the action channels after the original transformation, "
- "as if applied to an imaginary child with Aligned Inherit Scale"},
+ "Before Original (Split Channels)",
+ "Apply the action channels before the original transformation, handling location, rotation "
+ "and scale separately"},
+ {0, "", 0, NULL, NULL},
{ACTCON_MIX_AFTER_FULL,
"AFTER_FULL",
0,
- "After Original (Full Scale)",
- "Apply the action channels after the original transformation, as if "
- "applied to an imaginary child with Full Inherit Scale. This mode "
- "can create shear and is provided only for backward compatibility"},
+ "After Original (Full)",
+ "Apply the action channels after the original transformation, as if applied to an "
+ "imaginary child in Full Inherit Scale mode. Will create shear when combining rotation "
+ "and non-uniform scale"},
+ {ACTCON_MIX_AFTER,
+ "AFTER",
+ 0,
+ "After Original (Aligned)",
+ "Apply the action channels after the original transformation, as if applied to an "
+ "imaginary child in Aligned Inherit Scale mode. This effectively uses Full for location "
+ "and Split Channels for rotation and scale"},
+ {ACTCON_MIX_AFTER_SPLIT,
+ "AFTER_SPLIT",
+ 0,
+ "After Original (Split Channels)",
+ "Apply the action channels after the original transformation, handling location, rotation "
+ "and scale separately"},
{0, NULL, 0, NULL, NULL},
};