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:
authorTon Roosendaal <ton@blender.org>2005-11-01 15:44:30 +0300
committerTon Roosendaal <ton@blender.org>2005-11-01 15:44:30 +0300
commit8906e4ec9824cb897df55f12281a3921f8a0f33f (patch)
tree1230f586acfc7ab2a08d1f8caf36541cdf9d1be7 /source/blender/makesdna
parentca85fc5c8a23bde409812fc137887fd1d09ec75f (diff)
Three new features:
1) Stride Bone For walkcycles, you could already set an NLA strip to cycle over a path based on a preset distance value. This cycling happens based on a linear interpolation, with constant speed. Not all cycles have a constant speed however, like hopping or jumping. To ensure a perfect slipping-less foot contact, you now can set a Bone in an Armature to define the stride. This "Stride Bone" then becomes a sort-of ruler, a conveyor belt, on which the character walks. When using the NLA "Use Path" option, it then tries to keep the Stride Bone entirely motionless on the path, by cancelling out its motion (for the entire Armature). This means that the animation keys for a Stride Bone have to be exactly negative of the desired path. Only, at choice, the X,Y or Z Ipo curve is used for this stride. Examples: http://www.blender.org/bf/0001_0040.avi The top armature shows the actual Action, the bottom armature has been parented to a Path, using the Stride Bone feature. http://www.blender.org/bf/0001_0080.avi Here the Stride Bone has a number of children, creating a ruler to be used as reference while animating. Test .blend: http://www.blender.org/bf/motionblender1.blend Notes: - Note that action keys for Bones work local, based on the Bone's orientation as set in EditMode. Therefore, an Y translation always goes in the Bone's direction. - To be able to get a "solvable" stride, the animation curve has to be inverse evaluated, using a Newton Raphson root solver. That means you can only create stride curves that keep moving forward, and cannot return halfway. - Set the Stride Bone in the Editing Buttons, Bone Panel. You can set change the name or set the axis in the NLA Window, Strip Properties Panel. - Files in this commit will move to the blender.org release section. 2) Armature Ghosting In EditButtons, Armature Panel, you can set an armature to draw ghosts. The number value denotes the amount of frames that have to be drawn extra (for the active action!) around the current frame. Ghosts only evaluate its own Pose, executing it's Actions, Constraints and IK. No external dependencies are re-evaluated for it. 3) NLA/Action time control If you click in the NLA window on the action (linked to Object), it makes sure the Timing as drawn in the Action editor is not corrected for NLA. If you also set the Object to "Action", this timing will be executed on the Object as well (not NLA time). (It's a bit confusing... will make a good doc & maybe review UI!)
Diffstat (limited to 'source/blender/makesdna')
-rw-r--r--source/blender/makesdna/DNA_action_types.h5
-rw-r--r--source/blender/makesdna/DNA_armature_types.h2
-rw-r--r--source/blender/makesdna/DNA_nla_types.h8
3 files changed, 10 insertions, 5 deletions
diff --git a/source/blender/makesdna/DNA_action_types.h b/source/blender/makesdna/DNA_action_types.h
index fce02e2e394..2f60045e9ea 100644
--- a/source/blender/makesdna/DNA_action_types.h
+++ b/source/blender/makesdna/DNA_action_types.h
@@ -138,7 +138,8 @@ enum {
POSE_HAS_IK = 0x0100,
POSE_CHAIN = 0x0200,
POSE_DONE = 0x0400,
- POSE_KEY = 0x1000
+ POSE_KEY = 0x1000,
+ POSE_STRIDE = 0x2000
};
/* PoseChannel constflag (constraint detection) */
@@ -147,6 +148,8 @@ enum {
/* only used for drawing Posemode, not stored in channel */
#define PCHAN_HAS_ACTION 4
#define PCHAN_HAS_TARGET 8
+ /* only for drawing Posemode too */
+#define PCHAN_HAS_STRIDE 16
/* PoseChannel->ikflag */
#define BONE_IK_NO_XDOF 1
diff --git a/source/blender/makesdna/DNA_armature_types.h b/source/blender/makesdna/DNA_armature_types.h
index 47ecccc1f1e..b31a803718e 100644
--- a/source/blender/makesdna/DNA_armature_types.h
+++ b/source/blender/makesdna/DNA_armature_types.h
@@ -77,7 +77,7 @@ typedef struct bArmature {
int flag;
int drawtype;
int deformflag;
- int res3;
+ short ghostep, pad;
}bArmature;
/* armature->flag */
diff --git a/source/blender/makesdna/DNA_nla_types.h b/source/blender/makesdna/DNA_nla_types.h
index 4d5483f71d7..bf3d7820dae 100644
--- a/source/blender/makesdna/DNA_nla_types.h
+++ b/source/blender/makesdna/DNA_nla_types.h
@@ -38,9 +38,8 @@ struct Ipo;
typedef struct bActionStrip {
struct bActionStrip *next, *prev;
- short flag;
- short mode;
- int reserved1;
+ short flag, mode;
+ short stride_axis, pad; /* axis 0=x, 1=y, 2=z */
struct Ipo *ipo; /* Blending ipo */
struct bAction *act; /* The action referenced by this strip */
@@ -51,6 +50,8 @@ typedef struct bActionStrip {
float repeat; /* The number of times to repeat the action range */
float blendin, blendout;
+
+ char stridechannel[32]; /* Instead of stridelen, it uses an action channel */
} bActionStrip;
#define ACTSTRIPMODE_BLEND 0
@@ -64,5 +65,6 @@ typedef struct bActionStrip {
#define ACTSTRIP_ACTIVE 0x10
#define ACTSTRIP_LOCK_ACTION 0x20
+
#endif