diff options
author | Alexander Gavrilov <angavrilov@gmail.com> | 2018-11-22 13:38:03 +0300 |
---|---|---|
committer | Alexander Gavrilov <angavrilov@gmail.com> | 2018-11-23 23:19:23 +0300 |
commit | 1e820898ff4dfc734710a6640ca7bafc0bfc69db (patch) | |
tree | 8f68fba82219df0295d89581e49e105ff907ba80 /source/blender/makesdna/DNA_action_types.h | |
parent | e49c66efae9d9fb85154ca4b3073ae3733400708 (diff) |
Depsgraph: add a new operation node for computing B-Bone segments.
Computing the shape of a B-Bone is a quite expensive operation, and
there are multiple constraints that can access this information in
a variety of useful ways. This means computing the shape once per
bone and saving it is good for performance.
Since the shape may depend on the position of up to two other bones,
often in a "cyclic" manner, this computation has to be a separate
node with its own dependencies.
Reviewers: sergey
Differential Revision: https://developer.blender.org/D3975
Diffstat (limited to 'source/blender/makesdna/DNA_action_types.h')
-rw-r--r-- | source/blender/makesdna/DNA_action_types.h | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/source/blender/makesdna/DNA_action_types.h b/source/blender/makesdna/DNA_action_types.h index 44c9e52cd8e..4d0f4ef1b0f 100644 --- a/source/blender/makesdna/DNA_action_types.h +++ b/source/blender/makesdna/DNA_action_types.h @@ -199,6 +199,22 @@ typedef struct bPoseChannelDrawData { float bbone_matrix[0][4][4]; } bPoseChannelDrawData; +struct Mat4; +struct DualQuat; + +typedef struct bPoseChannelRuntime { + int bbone_segments; + char pad[4]; + + /* Rest and posed matrices for segments. */ + struct Mat4 *bbone_rest_mats; + struct Mat4 *bbone_pose_mats; + + /* Delta from rest to pose in matrix and DualQuat form. */ + struct Mat4 *bbone_deform_mats; + struct DualQuat *bbone_dual_quats; +} bPoseChannelRuntime; + /* ************************************************ */ /* Poses */ @@ -287,6 +303,9 @@ typedef struct bPoseChannel { /* Points to an original pose channel. */ struct bPoseChannel *orig_pchan; + + /* Runtime data. */ + struct bPoseChannelRuntime runtime; } bPoseChannel; |