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

Brecht Van Lommel brecht at blender.org
Fri Jul 3 17:23:33 CEST 2009


Revision: 21351
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=21351
Author:   blendix
Date:     2009-07-03 17:23:33 +0200 (Fri, 03 Jul 2009)

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

* Lattices: properties editable, editmode operators, menus working
  again. As a bonus you can now edit u/v/w in editmode.
* Shape Keys: some code cleanup, and added more buttons. The
  value/min/max buttons don't work correct yet though.
* Fix issue with uv textures, vertex colors not being visible outside
  editmode, and a few other issue. Mesh.edit_mesh is now NULL when
  not in editmode.

Modified Paths:
--------------
    branches/blender2.5/blender/release/ui/buttons_data_lattice.py
    branches/blender2.5/blender/release/ui/buttons_data_mesh.py
    branches/blender2.5/blender/source/blender/blenkernel/intern/lattice.c
    branches/blender2.5/blender/source/blender/editors/include/ED_screen.h
    branches/blender2.5/blender/source/blender/editors/interface/interface_layout.c
    branches/blender2.5/blender/source/blender/editors/object/editkey.c
    branches/blender2.5/blender/source/blender/editors/object/editlattice.c
    branches/blender2.5/blender/source/blender/editors/object/object_edit.c
    branches/blender2.5/blender/source/blender/editors/object/object_intern.h
    branches/blender2.5/blender/source/blender/editors/object/object_modifier.c
    branches/blender2.5/blender/source/blender/editors/object/object_ops.c
    branches/blender2.5/blender/source/blender/editors/screen/screen_ops.c
    branches/blender2.5/blender/source/blender/editors/space_view3d/space_view3d.c
    branches/blender2.5/blender/source/blender/editors/space_view3d/view3d_header.c
    branches/blender2.5/blender/source/blender/makesrna/intern/rna_key.c
    branches/blender2.5/blender/source/blender/makesrna/intern/rna_lattice.c
    branches/blender2.5/blender/source/blender/makesrna/intern/rna_object.c

Modified: branches/blender2.5/blender/release/ui/buttons_data_lattice.py
===================================================================
--- branches/blender2.5/blender/release/ui/buttons_data_lattice.py	2009-07-03 14:32:27 UTC (rev 21350)
+++ branches/blender2.5/blender/release/ui/buttons_data_lattice.py	2009-07-03 15:23:33 UTC (rev 21351)
@@ -48,7 +48,7 @@
 			row.itemR(lat, "interpolation_type_w", expand=True)
 			
 			row = layout.row()
+			row.itemO("LATTICE_OT_make_regular")
 			row.itemR(lat, "outside")
-			row.itemR(lat, "shape_keys")
 
 bpy.types.register(DATA_PT_lattice)

Modified: branches/blender2.5/blender/release/ui/buttons_data_mesh.py
===================================================================
--- branches/blender2.5/blender/release/ui/buttons_data_mesh.py	2009-07-03 14:32:27 UTC (rev 21350)
+++ branches/blender2.5/blender/release/ui/buttons_data_mesh.py	2009-07-03 15:23:33 UTC (rev 21351)
@@ -131,17 +131,45 @@
 	def draw(self, context):
 		layout = self.layout
 		ob = context.object
+		key = ob.data.shape_keys
+		kb = ob.active_shape_key
 
 		row = layout.row()
+		row.template_list(key, "keys", ob, "active_shape_key_index")
 
-		key = ob.data.shape_keys
+		col = row.column()
 
-		row.template_list(key, "keys", ob, "active_shape_key_index")
+		subcol = col.column(align=True)
+		subcol.itemO("OBJECT_OT_shape_key_add", icon="ICON_ZOOMIN", text="")
+		subcol.itemO("OBJECT_OT_shape_key_remove", icon="ICON_ZOOMOUT", text="")
 
-		col = row.column(align=True)
-		col.itemO("OBJECT_OT_shape_key_add", icon="ICON_ZOOMIN", text="")
-		col.itemO("OBJECT_OT_shape_key_remove", icon="ICON_ZOOMOUT", text="")
+		if kb:
+			col.itemS()
 
+			subcol = col.column(align=True)
+			subcol.itemR(ob, "shape_key_lock", icon="ICON_PINNED", text="")
+			subcol.itemR(kb, "mute", icon="ICON_MUTE_IPO_ON", text="")
+
+			if key.relative:
+				row = layout.row()
+				row.itemR(key, "relative")
+				row.itemL()
+
+				if ob.active_shape_key_index != 0:
+					if not ob.shape_key_lock:
+						row = layout.row(align=True)
+						row.itemR(kb, "value", text="")
+						row.itemR(kb, "slider_min", text="Min")
+						row.itemR(kb, "slider_max", text="Max")
+
+					row = layout.row()
+					row.item_pointerR(kb, "vertex_group", ob, "vertex_groups", text="")
+					row.item_pointerR(kb, "relative_key", key, "keys", text="")
+			else:
+				row = layout.row()
+				row.itemR(key, "relative")
+				row.itemR(key, "slurph")
+
 		if context.edit_object:
 			layout.enabled = False
 

Modified: branches/blender2.5/blender/source/blender/blenkernel/intern/lattice.c
===================================================================
--- branches/blender2.5/blender/source/blender/blenkernel/intern/lattice.c	2009-07-03 14:32:27 UTC (rev 21350)
+++ branches/blender2.5/blender/source/blender/blenkernel/intern/lattice.c	2009-07-03 15:23:33 UTC (rev 21351)
@@ -232,8 +232,8 @@
 	if(lt->def) MEM_freeN(lt->def);
 	if(lt->dvert) free_dverts(lt->dvert, lt->pntsu*lt->pntsv*lt->pntsw);
 	if(lt->editlatt) {
-		if(lt->def) MEM_freeN(lt->def);
-		if(lt->dvert) free_dverts(lt->dvert, lt->pntsu*lt->pntsv*lt->pntsw);
+		if(lt->editlatt->def) MEM_freeN(lt->editlatt->def);
+		if(lt->editlatt->dvert) free_dverts(lt->editlatt->dvert, lt->pntsu*lt->pntsv*lt->pntsw);
 		MEM_freeN(lt->editlatt);
 	}
 }
@@ -817,59 +817,68 @@
 	int u, v, w;
 	float fac1, du=0.0, dv=0.0, dw=0.0;
 
-	bp= lt->def;
+	if(lt->flag & LT_OUTSIDE) {
+		bp= lt->def;
 
-	if(lt->pntsu>1) du= 1.0f/((float)lt->pntsu-1);
-	if(lt->pntsv>1) dv= 1.0f/((float)lt->pntsv-1);
-	if(lt->pntsw>1) dw= 1.0f/((float)lt->pntsw-1);
-		
-	for(w=0; w<lt->pntsw; w++) {
-		
-		for(v=0; v<lt->pntsv; v++) {
-		
-			for(u=0; u<lt->pntsu; u++, bp++) {
-				if(u==0 || v==0 || w==0 || u==lt->pntsu-1 || v==lt->pntsv-1 || w==lt->pntsw-1);
-				else {
-				
-					bp->hide= 1;
-					bp->f1 &= ~SELECT;
+		if(lt->pntsu>1) du= 1.0f/((float)lt->pntsu-1);
+		if(lt->pntsv>1) dv= 1.0f/((float)lt->pntsv-1);
+		if(lt->pntsw>1) dw= 1.0f/((float)lt->pntsw-1);
+			
+		for(w=0; w<lt->pntsw; w++) {
+			
+			for(v=0; v<lt->pntsv; v++) {
+			
+				for(u=0; u<lt->pntsu; u++, bp++) {
+					if(u==0 || v==0 || w==0 || u==lt->pntsu-1 || v==lt->pntsv-1 || w==lt->pntsw-1);
+					else {
 					
-					/* u extrema */
-					bp1= latt_bp(lt, 0, v, w);
-					bp2= latt_bp(lt, lt->pntsu-1, v, w);
-					
-					fac1= du*u;
-					bp->vec[0]= (1.0f-fac1)*bp1->vec[0] + fac1*bp2->vec[0];
-					bp->vec[1]= (1.0f-fac1)*bp1->vec[1] + fac1*bp2->vec[1];
-					bp->vec[2]= (1.0f-fac1)*bp1->vec[2] + fac1*bp2->vec[2];
-					
-					/* v extrema */
-					bp1= latt_bp(lt, u, 0, w);
-					bp2= latt_bp(lt, u, lt->pntsv-1, w);
-					
-					fac1= dv*v;
-					bp->vec[0]+= (1.0f-fac1)*bp1->vec[0] + fac1*bp2->vec[0];
-					bp->vec[1]+= (1.0f-fac1)*bp1->vec[1] + fac1*bp2->vec[1];
-					bp->vec[2]+= (1.0f-fac1)*bp1->vec[2] + fac1*bp2->vec[2];
-					
-					/* w extrema */
-					bp1= latt_bp(lt, u, v, 0);
-					bp2= latt_bp(lt, u, v, lt->pntsw-1);
-					
-					fac1= dw*w;
-					bp->vec[0]+= (1.0f-fac1)*bp1->vec[0] + fac1*bp2->vec[0];
-					bp->vec[1]+= (1.0f-fac1)*bp1->vec[1] + fac1*bp2->vec[1];
-					bp->vec[2]+= (1.0f-fac1)*bp1->vec[2] + fac1*bp2->vec[2];
-					
-					VecMulf(bp->vec, 0.3333333f);
-					
+						bp->hide= 1;
+						bp->f1 &= ~SELECT;
+						
+						/* u extrema */
+						bp1= latt_bp(lt, 0, v, w);
+						bp2= latt_bp(lt, lt->pntsu-1, v, w);
+						
+						fac1= du*u;
+						bp->vec[0]= (1.0f-fac1)*bp1->vec[0] + fac1*bp2->vec[0];
+						bp->vec[1]= (1.0f-fac1)*bp1->vec[1] + fac1*bp2->vec[1];
+						bp->vec[2]= (1.0f-fac1)*bp1->vec[2] + fac1*bp2->vec[2];
+						
+						/* v extrema */
+						bp1= latt_bp(lt, u, 0, w);
+						bp2= latt_bp(lt, u, lt->pntsv-1, w);
+						
+						fac1= dv*v;
+						bp->vec[0]+= (1.0f-fac1)*bp1->vec[0] + fac1*bp2->vec[0];
+						bp->vec[1]+= (1.0f-fac1)*bp1->vec[1] + fac1*bp2->vec[1];
+						bp->vec[2]+= (1.0f-fac1)*bp1->vec[2] + fac1*bp2->vec[2];
+						
+						/* w extrema */
+						bp1= latt_bp(lt, u, v, 0);
+						bp2= latt_bp(lt, u, v, lt->pntsw-1);
+						
+						fac1= dw*w;
+						bp->vec[0]+= (1.0f-fac1)*bp1->vec[0] + fac1*bp2->vec[0];
+						bp->vec[1]+= (1.0f-fac1)*bp1->vec[1] + fac1*bp2->vec[1];
+						bp->vec[2]+= (1.0f-fac1)*bp1->vec[2] + fac1*bp2->vec[2];
+						
+						VecMulf(bp->vec, 0.3333333f);
+						
+					}
 				}
+				
 			}
 			
 		}
-		
 	}
-	
+	else {
+		bp= lt->def;
+
+		for(w=0; w<lt->pntsw; w++)
+			for(v=0; v<lt->pntsv; v++)
+				for(u=0; u<lt->pntsu; u++, bp++)
+					bp->hide= 0;
+	}
 }
 
 float (*lattice_getVertexCos(struct Object *ob, int *numVerts_r))[3]

Modified: branches/blender2.5/blender/source/blender/editors/include/ED_screen.h
===================================================================
--- branches/blender2.5/blender/source/blender/editors/include/ED_screen.h	2009-07-03 14:32:27 UTC (rev 21350)
+++ branches/blender2.5/blender/source/blender/editors/include/ED_screen.h	2009-07-03 15:23:33 UTC (rev 21351)
@@ -127,6 +127,7 @@
 int		ED_operator_editsurf(struct bContext *C);
 int		ED_operator_editsurfcurve(struct bContext *C);
 int		ED_operator_editfont(struct bContext *C);
+int		ED_operator_editlattice(struct bContext *C);
 int		ED_operator_uvedit(struct bContext *C);
 int		ED_operator_uvmap(struct bContext *C);
 int		ED_operator_posemode(struct bContext *C);

Modified: branches/blender2.5/blender/source/blender/editors/interface/interface_layout.c
===================================================================
--- branches/blender2.5/blender/source/blender/editors/interface/interface_layout.c	2009-07-03 14:32:27 UTC (rev 21350)
+++ branches/blender2.5/blender/source/blender/editors/interface/interface_layout.c	2009-07-03 15:23:33 UTC (rev 21351)
@@ -699,7 +699,7 @@
 	subtype= RNA_property_subtype(prop);
 	len= RNA_property_array_length(prop);
 
-	if(type == PROP_STRING && strcmp(name, "") == 0)
+	if(ELEM(type, PROP_STRING, PROP_POINTER) && strcmp(name, "") == 0)
 		name= "non-empty";
 
 	w= ui_text_icon_width(layout, name, icon);

Modified: branches/blender2.5/blender/source/blender/editors/object/editkey.c
===================================================================
--- branches/blender2.5/blender/source/blender/editors/object/editkey.c	2009-07-03 14:32:27 UTC (rev 21350)
+++ branches/blender2.5/blender/source/blender/editors/object/editkey.c	2009-07-03 15:23:33 UTC (rev 21351)
@@ -78,10 +78,6 @@
 
 #include "object_intern.h"
 
-/* XXX */
-static void BIF_undo_push() {}
-/* XXX */
-
 #if 0 // XXX old animation system
 static void default_key_ipo(Scene *scene, Key *key)
 {
@@ -117,7 +113,7 @@
 #endif // XXX old animation system
 	
 
-/* **************************************** */
+/************************* Mesh ************************/
 
 void mesh_to_key(Mesh *me, KeyBlock *kb)
 {
@@ -213,7 +209,7 @@
 	mesh_to_key(me, kb);
 }
 
-/* ******************** */
+/************************* Lattice ************************/
 
 void latt_to_key(Lattice *lt, KeyBlock *kb)
 {
@@ -271,7 +267,7 @@
 	latt_to_key(lt, kb);
 }
 
-/* ******************************** */
+/************************* Curve ************************/
 
 void curve_to_key(Curve *cu, KeyBlock *kb, ListBase *nurb)
 {
@@ -383,7 +379,7 @@
 	if(cu->key==NULL) {
 		cu->key= add_key( (ID *)cu);
 
-		if (rel)
+		if(rel)
 			cu->key->type = KEY_RELATIVE;
 //		else
 //			default_key_ipo(scene, cu->key);	// XXX old animation system
@@ -396,17 +392,34 @@
 	else curve_to_key(cu, kb, &cu->nurb);
 }
 
+/*********************** add shape key ***********************/
 
-/* ******************** */
+void ED_object_shape_key_add(bContext *C, Scene *scene, Object *ob)
+{
+	Key *key;
 
-void delete_key(Scene *scene, Object *ob)
+	if(ob->type==OB_MESH) insert_meshkey(scene, ob->data, 1);
+	else if ELEM(ob->type, OB_CURVE, OB_SURF) insert_curvekey(scene, ob->data, 1);
+	else if(ob->type==OB_LATTICE) insert_lattkey(scene, ob->data, 1);
+
+	key= ob_get_key(ob);
+	ob->shapenr= BLI_countlist(&key->block);
+
+	WM_event_add_notifier(C, NC_OBJECT|ND_DRAW, ob);
+}
+
+/*********************** remove shape key ***********************/
+
+int ED_object_shape_key_remove(bContext *C, Scene *scene, Object *ob)
 {
+	Main *bmain= CTX_data_main(C);
 	KeyBlock *kb, *rkb;
 	Key *key;
 	//IpoCurve *icu;
-	
+
 	key= ob_get_key(ob);
-	if(key==NULL) return;
+	if(key==NULL)
+		return 0;
 	
 	kb= BLI_findlink(&key->block, ob->shapenr-1);
 
@@ -417,15 +430,15 @@
 
 		BLI_remlink(&key->block, kb);
 		key->totkey--;
-		if(key->refkey== kb) key->refkey= key->block.first;
+		if(key->refkey== kb)

@@ Diff output truncated at 10240 characters. @@




More information about the Bf-blender-cvs mailing list