Armature "Envelope" editing.
For defining the deformation distances of Bones, three values are being used now. The bone tip and root radius define the bone-shape itself and the "dist" defines the soft area around it. A full (user) doc is in CMS here; http://www.blender3d.org/cms/Armature_Envelopes.647.0.html Note: todo still is allowing both Vertex Deform Groups and these Envelopes together (and or per Bone). Also part of this commit is: - New: Hiding bones in EditMode. This is a separate 'hide flag', so you can keep the PoseMode hidden Bones separate from EditMode. (In the future we should do some kind of bone-grouping or so) - While transform(), the hotkeys G,R,S only switch mode when the previous mode was compatible. Caused conflicts with Crease/BoneDist/etc. - Deleting the last VertexGroup now also deletes the entire Mesh 'dvert' data. Sounds logical, but remember that VertexGroups are partial on a Mesh, partial on Object. Weird design decision though... Anyhoo, at this moment the only way to have Bone Envelopes deform, is by deleting all VertexGroups! - In PoseMode, the hotkey ALT+S now does both B-Bone size or Envelope, depending draw type. - In EditMode, Extrude now also works when only Root points were selected. - Weight editing is also symmetrical btw, with the "X-axis Mirror" option set.
This commit is contained in:
@@ -43,7 +43,7 @@ typedef struct EditBone
|
||||
struct EditBone *parent;/* Editbones have a one-way link (i.e. children refer
|
||||
to parents. This is converted to a two-way link for
|
||||
normal bones when leaving editmode. */
|
||||
void *temp; /* Used to store temporary data */
|
||||
void *temp; /* Used to store temporary data */
|
||||
|
||||
char name[32];
|
||||
float roll; /* Roll along axis. We'll ultimately use the axis/angle method
|
||||
@@ -59,17 +59,14 @@ typedef struct EditBone
|
||||
int flag;
|
||||
|
||||
int parNr; /* Used for retrieving values from the menu system */
|
||||
/* Storage for transformation data used by the posing system.
|
||||
Maybe a better solution would be to make bones a blenderObject
|
||||
variant? Or perhaps to use a TOTALLY custom transformation scheme
|
||||
for pose element, rather than trying to use the existing transObject
|
||||
system?
|
||||
*/
|
||||
|
||||
float dist, weight;
|
||||
float xwidth, length, zwidth; /* put them in order! transform uses this as scale */
|
||||
float ease1, ease2;
|
||||
float rad_head, rad_tail;
|
||||
short boneclass, segments;
|
||||
|
||||
|
||||
float oldlength; /* for envelope scaling */
|
||||
|
||||
} EditBone;
|
||||
|
||||
@@ -127,6 +124,10 @@ void armature_bone_rename(struct bArmature *arm, char *oldname, char *newname);
|
||||
void armature_flip_names(void);
|
||||
EditBone *armature_bone_get_mirrored(EditBone *ebo);
|
||||
|
||||
void hide_selected_armature_bones(void);
|
||||
void hide_unselected_armature_bones(void);
|
||||
void show_all_armature_bones(void);
|
||||
|
||||
#define BONESEL_ROOT 0x10000000
|
||||
#define BONESEL_TIP 0x20000000
|
||||
#define BONESEL_BONE 0x40000000
|
||||
|
||||
Reference in New Issue
Block a user