[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [21583] branches/blender2.5/blender: 2.5: Armature

Brecht Van Lommel brecht at blender.org
Tue Jul 14 19:59:26 CEST 2009


Revision: 21583
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=21583
Author:   blendix
Date:     2009-07-14 19:59:26 +0200 (Tue, 14 Jul 2009)

Log Message:
-----------
2.5: Armature

* Bone Transform panel now works, using appropriate EditBone or
  PoseChannel properties.
* Bone name and parent are now editable.
* Some other tweaks to the UI layouts for Armature and Bone.
* Notifiers for armature/editbone properties.

Modified Paths:
--------------
    branches/blender2.5/blender/release/ui/buttons_data_armature.py
    branches/blender2.5/blender/release/ui/buttons_data_bone.py
    branches/blender2.5/blender/source/blender/editors/armature/editarmature.c
    branches/blender2.5/blender/source/blender/editors/armature/poseobject.c
    branches/blender2.5/blender/source/blender/editors/include/ED_armature.h
    branches/blender2.5/blender/source/blender/editors/space_buttons/buttons_context.c
    branches/blender2.5/blender/source/blender/editors/space_outliner/outliner.c
    branches/blender2.5/blender/source/blender/editors/space_view3d/view3d_buttons.c
    branches/blender2.5/blender/source/blender/makesrna/intern/rna_armature.c
    branches/blender2.5/blender/source/blender/makesrna/intern/rna_pose.c

Modified: branches/blender2.5/blender/release/ui/buttons_data_armature.py
===================================================================
--- branches/blender2.5/blender/release/ui/buttons_data_armature.py	2009-07-14 17:35:07 UTC (rev 21582)
+++ branches/blender2.5/blender/release/ui/buttons_data_armature.py	2009-07-14 17:59:26 UTC (rev 21583)
@@ -42,11 +42,12 @@
 
 
 		if arm:
-			layout.itemR(arm, "rest_position")
-
 			split = layout.split()
 
-			sub = split.column()
+			col = split.column()
+			col.itemR(arm, "rest_position")
+
+			sub = col.column()
 			sub.itemL(text="Deform:")
 			sub.itemR(arm, "deform_vertexgroups", text="Vertes Groups")
 			sub.itemR(arm, "deform_envelope", text="Envelopes")
@@ -69,17 +70,14 @@
 		layout = self.layout
 		arm = context.armature
 
-		split = layout.split()
+		layout.row().itemR(arm, "drawtype", expand=True)
 
-		sub = split.column()
-		sub.itemR(arm, "drawtype", text="Style")
-		sub.itemR(arm, "delay_deform", text="Delay Refresh")
-
-		sub = split.column()
+		sub = layout.column_flow()
 		sub.itemR(arm, "draw_names", text="Names")
 		sub.itemR(arm, "draw_axes", text="Axes")
 		sub.itemR(arm, "draw_custom_bone_shapes", text="Shapes")
 		sub.itemR(arm, "draw_group_colors", text="Colors")
+		sub.itemR(arm, "delay_deform", text="Delay Refresh")
 
 class DATA_PT_paths(DataButtonsPanel):
 	__idname__ = "DATA_PT_paths"
@@ -93,14 +91,15 @@
 		
 		sub = split.column()
 		sub.itemR(arm, "paths_show_around_current_frame", text="Around Frame")
+		col = sub.column(align=True)
 		if (arm.paths_show_around_current_frame):
-			sub.itemR(arm, "path_before_current", text="Before")
-			sub.itemR(arm, "path_after_current", text="After")
+			col.itemR(arm, "path_before_current", text="Before")
+			col.itemR(arm, "path_after_current", text="After")
 		else:
-			sub.itemR(arm, "path_start_frame", text="Start")
-			sub.itemR(arm, "path_end_frame", text="End")
+			col.itemR(arm, "path_start_frame", text="Start")
+			col.itemR(arm, "path_end_frame", text="End")
 
-		sub.itemR(arm, "path_size", text="Step")	
+		col.itemR(arm, "path_size", text="Step")	
 		sub.itemR(arm, "paths_calculate_head_positions", text="Head")
 		
 		sub = split.column()
@@ -121,13 +120,15 @@
 
 		sub = split.column()
 		sub.itemR(arm, "ghost_type", text="Scope")
+
+		col = sub.column(align=True)
 		if arm.ghost_type == 'RANGE':
-			sub.itemR(arm, "ghost_start_frame", text="Start")
-			sub.itemR(arm, "ghost_end_frame", text="End")
-			sub.itemR(arm, "ghost_size", text="Step")
+			col.itemR(arm, "ghost_start_frame", text="Start")
+			col.itemR(arm, "ghost_end_frame", text="End")
+			col.itemR(arm, "ghost_size", text="Step")
 		elif arm.ghost_type == 'CURRENT_FRAME':
-			sub.itemR(arm, "ghost_step", text="Range")
-			sub.itemR(arm, "ghost_size", text="Step")
+			col.itemR(arm, "ghost_step", text="Range")
+			col.itemR(arm, "ghost_size", text="Step")
 
 		sub = split.column()
 		sub.itemR(arm, "ghost_only_selected", text="Selected Only")

Modified: branches/blender2.5/blender/release/ui/buttons_data_bone.py
===================================================================
--- branches/blender2.5/blender/release/ui/buttons_data_bone.py	2009-07-14 17:35:07 UTC (rev 21582)
+++ branches/blender2.5/blender/release/ui/buttons_data_bone.py	2009-07-14 17:59:26 UTC (rev 21583)
@@ -23,23 +23,52 @@
 		split.itemL(text="", icon="ICON_BONE_DATA")
 		split.itemR(bone, "name", text="")
 
-class BONE_PT_transform_bone(BoneButtonsPanel):
-	__idname__ = "BONE_PT_transform_bone"
+class BONE_PT_transform(BoneButtonsPanel):
+	__idname__ = "BONE_PT_transform"
 	__label__ = "Transform"
 
 	def draw(self, context):
 		layout = self.layout
+		ob = context.object
 		bone = context.bone
+
 		if not bone:
 			bone = context.edit_bone
 
-#Seems to be missing from RNA?
-		row = layout.row()
-		row.column().itemR(bone, "location")
-		row.column().itemR(bone, "rotation")
-		row.column().itemR(bone, "scale")
+			row = layout.row()
+			row.column().itemR(bone, "head")
+			row.column().itemR(bone, "tail")
 
+			col = row.column()
+			sub = col.column(align=True)
+			sub.itemL(text="Roll:")
+			sub.itemR(bone, "roll", text="")
+			sub.itemL()
+			sub.itemR(bone, "locked")
+			sub.itemS()
+		else:
+			pchan = ob.pose.pose_channels[context.bone.name]
 
+			layout.itemR(pchan, "rotation_mode")
+
+			row = layout.row()
+			col = row.column()
+			col.itemR(pchan, "location")
+			col.active = not (bone.parent and bone.connected)
+
+			col = row.column()
+			if pchan.rotation_mode == 'QUATERNION':
+				col.itemR(pchan, "rotation", text="Rotation")
+			else:
+				col.itemR(pchan, "euler_rotation", text="Rotation")
+
+			row.column().itemR(pchan, "scale")
+
+			if pchan.rotation_mode == 'QUATERNION':
+				col = layout.column(align=True)
+				col.itemL(text="Euler:")
+				col.row().itemR(pchan, "euler_rotation", text="")
+
 class BONE_PT_bone(BoneButtonsPanel):
 	__idname__ = "BONE_PT_bone"
 	__label__ = "Bone"
@@ -48,14 +77,21 @@
 	def draw(self, context):
 		layout = self.layout
 		bone = context.bone
+		arm = context.armature
 		if not bone:
 			bone = context.edit_bone
 
 		split = layout.split()
 
 		sub = split.column()
-		sub.itemR(bone, "parent")
-		sub.itemR(bone, "connected")
+		sub.itemL(text="Parent:")
+		if context.bone:
+			sub.itemR(bone, "parent", text="")
+		else:
+			sub.item_pointerR(bone, "parent", arm, "edit_bones", text="")
+		row = sub.row()
+		row.itemR(bone, "connected")
+		row.active = bone.parent != None
 
 		sub.itemL(text="Layers:")
 		sub.template_layers(bone, "layer")
@@ -70,8 +106,6 @@
 		sub.itemR(bone, "draw_wire", text="Wireframe")
 		sub.itemR(bone, "hidden", text="Hide")
 
-
-		
 class BONE_PT_deform(BoneButtonsPanel):
 	__idname__ = "BONE_PT_deform"
 	__label__ = "Deform"
@@ -94,22 +128,30 @@
 			
 		split = layout.split()
 
-		sub = split.column()
-		sub.itemL(text="Envelope:")
+		col = split.column()
+		col.itemL(text="Envelope:")
+		sub = col.column(align=True)
 		sub.itemR(bone, "envelope_distance", text="Distance")
 		sub.itemR(bone, "envelope_weight", text="Weight")
-		sub.itemR(bone, "multiply_vertexgroup_with_envelope", text="Multiply")
-		sub = split.column()
-		
-		sub.itemL(text="Curved Bones:")
+		col.itemR(bone, "multiply_vertexgroup_with_envelope", text="Multiply")
+
+		sub = col.column(align=True)
+		sub.itemL(text="Radius:")
+		sub.itemR(bone, "head_radius", text="Head")
+		sub.itemR(bone, "tail_radius", text="Tail")
+
+		col = split.column()
+		col.itemL(text="Curved Bones:")
+		sub = col.column(align=True)
 		sub.itemR(bone, "bbone_segments", text="Segments")
 		sub.itemR(bone, "bbone_in", text="Ease In")
 		sub.itemR(bone, "bbone_out", text="Ease Out")
 		
-		sub.itemR(bone, "cyclic_offset")
+		col.itemL(text="Offset:")
+		col.itemR(bone, "cyclic_offset")
 
-
 bpy.types.register(BONE_PT_context_bone)
-bpy.types.register(BONE_PT_transform_bone)
+bpy.types.register(BONE_PT_transform)
 bpy.types.register(BONE_PT_bone)
 bpy.types.register(BONE_PT_deform)
+

Modified: branches/blender2.5/blender/source/blender/editors/armature/editarmature.c
===================================================================
--- branches/blender2.5/blender/source/blender/editors/armature/editarmature.c	2009-07-14 17:35:07 UTC (rev 21582)
+++ branches/blender2.5/blender/source/blender/editors/armature/editarmature.c	2009-07-14 17:59:26 UTC (rev 21583)
@@ -5095,9 +5095,9 @@
 /* called by UI for renaming a bone */
 /* warning: make sure the original bone was not renamed yet! */
 /* seems messy, but thats what you get with not using pointers but channel names :) */
-void armature_bone_rename(Object *ob, char *oldnamep, char *newnamep)
+void ED_armature_bone_rename(bArmature *arm, char *oldnamep, char *newnamep)
 {
-	bArmature *arm= ob->data;
+	Object *ob;
 	char newname[MAXBONENAME];
 	char oldname[MAXBONENAME];
 	
@@ -5242,7 +5242,7 @@
 			if (ebone->flag & BONE_SELECTED) {
 				BLI_strncpy(newname, ebone->name, sizeof(newname));
 				bone_flip_name(newname, 1);		// 1 = do strip off number extensions
-				armature_bone_rename(obedit, ebone->name, newname);
+				ED_armature_bone_rename(arm, ebone->name, newname);
 			}
 		}
 	}
@@ -5263,7 +5263,7 @@
 			if (ebone->flag & BONE_SELECTED) {
 				BLI_strncpy(newname, ebone->name, sizeof(newname));
 				bone_autoside_name(newname, 1, axis, ebone->head[axis], ebone->tail[axis]);
-				armature_bone_rename(obedit, ebone->name, newname);
+				ED_armature_bone_rename(arm, ebone->name, newname);
 			}
 		}
 	}

Modified: branches/blender2.5/blender/source/blender/editors/armature/poseobject.c
===================================================================
--- branches/blender2.5/blender/source/blender/editors/armature/poseobject.c	2009-07-14 17:35:07 UTC (rev 21582)
+++ branches/blender2.5/blender/source/blender/editors/armature/poseobject.c	2009-07-14 17:59:26 UTC (rev 21583)
@@ -1346,7 +1346,7 @@
 			if(pchan->bone->flag & (BONE_ACTIVE|BONE_SELECTED)) {
 				BLI_strncpy(newname, pchan->name, sizeof(newname));
 				bone_flip_name(newname, 1);	// 1 = do strip off number extensions
-				armature_bone_rename(ob, pchan->name, newname);
+				ED_armature_bone_rename(arm, pchan->name, newname);
 			}
 		}
 	}
@@ -1375,7 +1375,7 @@
 			if(pchan->bone->flag & (BONE_ACTIVE|BONE_SELECTED)) {
 				BLI_strncpy(newname, pchan->name, sizeof(newname));
 				bone_autoside_name(newname, 1, axis, pchan->bone->head[axis], pchan->bone->tail[axis]);
-				armature_bone_rename(ob, pchan->name, newname);
+				ED_armature_bone_rename(arm, pchan->name, newname);
 			}
 		}
 	}

Modified: branches/blender2.5/blender/source/blender/editors/include/ED_armature.h
===================================================================
--- branches/blender2.5/blender/source/blender/editors/include/ED_armature.h	2009-07-14 17:35:07 UTC (rev 21582)
+++ branches/blender2.5/blender/source/blender/editors/include/ED_armature.h	2009-07-14 17:59:26 UTC (rev 21583)
@@ -116,7 +116,7 @@
 
 void auto_align_armature(struct Scene *scene, struct View3D *v3d, short mode);
 void unique_editbone_name(struct ListBase *ebones, char *name, EditBone *bone); /* if bone is already in list, pass it as param to ignore it */
-void armature_bone_rename(struct Object *ob, char *oldnamep, char *newnamep);
+void ED_armature_bone_rename(struct bArmature *arm, char *oldnamep, char *newnamep);
 
 void undo_push_armature(struct bContext *C, char *name);
 

Modified: branches/blender2.5/blender/source/blender/editors/space_buttons/buttons_context.c

@@ Diff output truncated at 10240 characters. @@




More information about the Bf-blender-cvs mailing list